Unityで主人公が敵から隠れた時は追いかけないようにする

記事内に広告が含まれています。

Unityで敵キャラクターが持っている検知エリアに主人公キャラが入った時に、敵キャラが主人公キャラを追いかけるようにしていた場合、間に障害物があっても主人公は見つかって追いかけられていました。

そこで検知エリア内に主人公が入った場合でも間に障害物があった場合は追いかけないようにします。

↑のように一旦敵に追いかけられた場合は敵が攻撃するか、主人公が検知エリア外に出ない限りはずっと追いかけられます。

追いかけられていない状態の時に壁に隠れた状態で敵の検知エリアに入っても追いかけられないようになっています。

ではスクリプトを作っていきましょう。

スポンサーリンク

主人公を検知するスクリプトSearchCharacterの修正

敵の主人公を追いかけさせるスクリプトSearchCharacterを修正します。

主人公を追いかける機能に関しては

Unityで主人公キャラが近づいてきたら追いかける敵キャラを作る
Unityで主人公キャラクターが敵キャラクターに近づいたら敵が主人公に近づいてくるようにしたいと思います。

を参照してください。

検知エリア(コライダの範囲内)に入ったコライダが主人公のものであった場合は、SearchCharacter(transform.position)にVector3.upを足した位置から接触したコライダのゲームオブジェクトの位置(主人公の位置)までレイを飛ばし、インスペクタで設定した障害物のレイヤーに接触していなければキャラクターを追いかけさせます。

それ以外、つまり主人公が検知エリアに入っていて、間に障害物がなければ敵キャラに追いかける動作をさせます。

一度追いかける状態になった場合はOnTriggerExit、つまり検知エリアから出ないor攻撃動作をしない限りはずっと追いかけます。

これで障害物があった時は主人公キャラを追いかけないようになりました。

サーチ1

上のように検知エリアに主人公キャラがいても追いかける動作はしないようになりました。

と言ってもこれだけじゃ本当に追いかけていないのかどうかわかりませんね・・・・(^。^)

敵キャラクターの視界に入った時だけ追いかけさせるようにすればよりリアルになりますね。

Unityで敵が主人公を検知する範囲を視覚内に限定する
Unityで敵が主人公を検知する時にコライダ内に入った時でかつ視覚内に入った時だけ主人公を発見したことにする機能を作成していきます。
タイトルとURLをコピーしました