ぬるーむ

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

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


スポンサードリンク

ゴーストオブジェクトの作成

16px × 16pxの画像を用意し、Pixels Per Unitを8にします。画像からSpriteを作成し、Rigidbody2D、BoxCollider2Dをアタッチします。適当にColliderの大きさを設定します。

f:id:Nullsuke:20210504105158p:plain
Sprite画像

f:id:Nullsuke:20210515003559p:plain
ゴーストオブジェクト

状態の管理

ゴーストは最初、巣に待機しており(アカベイは除く)、一定時間経過すると特定のエリアを巡回するようになります。一定時間巡回するとパックマンを追跡するようになります。一定時間追跡するとまた特定のエリアを巡回するようになります。パックマンがパワーエサを食べると恐慌状態になり、このときパックマンに食べられると、死亡状態となります。死亡状態では一旦巣に戻り、巣に入ると待機状態になります。

f:id:Nullsuke:20210509143653p:plain
ゴーストの状態遷移

これら状態遷移と行動を実装します。今回はStateパターンを使いますが、if文やSwitch文の方が簡単かもしれません。

状態クラスについては下記を参照してください。

nullsuke.com

Stateパターンについては下記のサイトを参照してください。

qiita.com

抽象クラスAGhostの作成

状態クラスを使って移動や処理する抽象クラスです。ワープの為のインターフェイスIWarpableとパックマンに食べられる為のインターフェイスIEatableを継承します。

各ゴーストのクラスを作成

AGhostを継承して各ゴーストのクラスを作成します。各ゴーストのAIついては下記を参照してください。

アカベイ

ピンキー

アオスケ

グズタ

完成

ゴーストオブジェクトにゴーストクラス、ゴーストAI、Mover、Animatorをアタッチし、待機時間などパラメータを設定します。

f:id:Nullsuke:20210512221645p:plainf:id:Nullsuke:20210512221829p:plain
アカベイ、ピンキー

f:id:Nullsuke:20210512222002p:plainf:id:Nullsuke:20210512222004p:plain
アオスケ、グズタ

迷路上にゴーストをセットすれば完成です。

f:id:Nullsuke:20210515224840g:plain
ゴーストの完成