ぬるーむ

Unity初心者が誰もが知っているゲームの模倣をしています。個人的な備忘録ですが、入門書を読み終えたばかりの初心者の方は「こんなへなちょこでもいいのか!」「俺の方がうまく作れる」と作成意欲がわいたりするかもしれません。

Unityによるパックマンの作り方 ~ゴーストの移動~


スポンサードリンク

概要

ゴーストが移動できる座標(Waypoint)のリスト(Waypoints)とWaypointに向かって移動させるMoverクラスが必要になります。MoverクラスでWaypointへの移動を繰り返すことでゴーストを移動させます。

Waypointsの設定・取得

ゴーストの状態によりWaypointsの取得の仕方が異なります。

待機・準備・巡回状態でのWaypoints

ゴーストの状態が待機・準備・巡回の場合、あらかじめWaypointsを設定しておきます。1匹のゴーストが複数のWaypointsを保持する必要があるので、ScriptableObjectを使って各状態のWaypointsを保持するGhostWaypointsDataを作成します。これらをMazeオブジェクトにセットします。ついでにスタート位置もここで設定します。

f:id:Nullsuke:20210505155201p:plain
アカベイのGhostWaypointsData

各ゴーストのGhostWaypointsDataをMazeオブジェクトにセットします。

f:id:Nullsuke:20210505161652p:plain
各ゴーストのGhostWaypointsData

死亡状態でのWaypoints

今回使用した迷路はゴーストの巣の入り口正面のWaypointが整数にならず、追跡状態のようにAIで目的地まで移動させることができません。よって、あらかじめNestWaypointsを設定して、Mazeオブジェクトにセットしておきます。迷路の形にこだわらければ、巣の位置を調整してWaypointが整数になるようにしてもよいと思います。

f:id:Nullsuke:20210508230819p:plain
NestWaypoints

追跡・恐慌・帰還状態でのWaypoints

追跡・恐慌・帰還状態ではAI(といってもかなりしょぼい)によって経路を決定します。ゴーストのAIについては 下記を参考にしてください。

nullsuke.com

Moverの作成

WaypointへVector2.MoveTowardsとrigid2D.MovePositionを使い移動させるクラスです。