2011/03/11

シューティングゲームの策敵とか

シューティングゲームで索敵する処理って、いろいろあるんでしょうね。。
理系でない私としては、そういう処理をサクサク書ける人たひがうらやましい限りです。(笑

手始めに、どこにでもありそうなシューティングを作って遊んでるんですが、
敵に自分を攻撃させる時ってどうやるのが一般的なのか、ちょっと悩み中です。

今のところ作ってみたのはPhysics.Raycastを使う方法です。
たとえば、ある範囲を1度づつずらしながらRaycastして、Colliderにヒットしたら
その方向に攻撃するといった具合です。

ただ、その方法だと、画面上に沢山敵がいる時に、処理が重くなってしまうのかも。。
とか心配になってきてます。ドキュメントだったか、Unityのフォーラムだったか忘れましたが
Raycast()を頻繁に使っても、それほどコストは高くないといった内容の文章もあったように思いますが、処理速度以外にも問題が。

特に角度をずらしながら扇形に索敵すると、敵からの距離が離れるにしたがって
Rayの密度が粗くなってしまうので、なかなか自機(Playerの機体)を発見してもらえないことがあります。

ということで、以下のように処理を変更する予定です。

(1) 敵は常に自機(Playerの機体)の場所を知っている。
(2) 敵は自機(Playerの機体)との距離と、方角をもとに攻撃対象にするかどうかを判定。
(3) 攻撃対象として認識したら、自機(Playerの機体)の位置にRaycast()。衝突判定結果が自機(Playerの機体)だったら、その方向を向いて攻撃。



といった感じで。
(3) を行うことで、敵と自分の間に障害物があったら攻撃しない賢い敵になるかな。。と
妄想中。

なかなか進まないですが、あれこれ考えている間が楽しいもんです。(笑

0 件のコメント:

コメントを投稿