kuront’s blog

主にUnityでのゲーム制作やってます。

【Unity】RPG制作 その16-ステージ制作 プレイヤーの移動

 前回はステージマップの見た目を作っていきました。今回はマップ上のプレイヤーの移動を実装していきます。
プレイヤーを移動させるためのボタンを以下のように配置します。

f:id:kuront:20211005052136p:plain

 次にダンジョンの処理を制御するスクリプト、DangionControllerを作成し、DangionMapSystemに貼り付けます。DangionController.csは以下のように記述します。

 


クリックで展開

 PlayerMoveDown,PlayerMoveUp,PlayerMoveLeft,PlayerMoveRightを先程作ったプレイヤー移動ボタン4方向にそれぞれ割り当てます。あとはプレイヤー画像をplayerSpriteに割り当てればとりあえず移動できるようになります。
(DangionMap.csも少し手を加えたので一応コードを載せておきます。)

 


クリックで展開

実行すると以下のようになります。

youtu.be

 現状部屋の形状や範囲外でも関係なく動けてしまう状態です。現在の部屋から移動方向への移動が可能かどうかを判定する関数を作成します。最初にダンジョンの部屋数を定義しておきます

 


クリックで展開

移動の可不可を判定する関数を以下のように定義します。

 


クリックで展開

この関数は移動前と移動後のプレイヤーの座標を使って、それぞれの部屋の形状を取得し、取得した部屋の形状が移動前から移動方向を通行できるか、移動後の部屋に移動方向から通行できるかをそれぞれ判定し、両方trueの場合にtrueを返すようになっています。ダンジョンの範囲外かどうかも判定しています。通行可能かどうかの判定方法はイカの画像のとおりです。

f:id:kuront:20211005090139p:plain

この処理を画像ごとに一つ一つ条件式にしていきます。あとはプレイヤーの移動の時にこの関数が返すbool値で実際に移動するかどうかを決めます。

 


クリックで展開

これで実行すると以下のようになります。

youtu.be

 これで部屋の形状に応じてプレイヤーの移動を制限することができました。次回は探索中のイベントを制作していきたいと思います。