【Godot】使い方(9)プレイヤーの移動③

Godot ゲーム制作

 この章では、前章までに作成した設定を利用して、キャラクターを動かせるようにしていきます。いよいよコーディングに入っていきます。


プレイヤー移動のコード内容

 まずは以下の内容を入力します。方向キー(ここではWASDキー)を押した時に、プレイヤーを押した方向に移動させます。コーディングの基本は使い方(7)プレイヤーの移動①に少し記述しているので参考にしてください。



func _process(delta):の下に入力していきます。

  • var velocity = Vector2.ZERO
    入力方向を一時保管する変数を、二次元座標(ベクトル)として初期化。
  • Input.is_action_pressed
    キー入力を判断。カッコ内のmove_rightなどは前章で作成したキー入力の名前と同じものを使用。
  • velocity.x、velocity.y
    移動方向を登録。下と右はプラス1で、上と左をマイナス1で。
  • if velocity.length() > 0:
    キャラクターが移動したかどうかを判断。velocityのxとyでベクトル計算した長さ(length)が0より大きいと移動しているとなる。
  • velocity.normalized() * speed
    velocityのベクトルを1にして(正規化という)、速度speed(参照:使い方(7))をかけることで、移動速度を取得。
  • position += velocity * delta
    そのノードが示すキャラクター(今回の場合プレイヤーキャラ)の位置を算出。positionはGodotエンジンの組み込みプロパティ。宣言なく使用できるキャラクターの現在の座標を示すベクトル。deltaは前回の描画から今回の描画が開始されるまでに経過した時間。速度と時間をかける事で、移動後の場所が算出される。
  • position.clamp(Vector2.ZERO, screen_size):
    そのノードが示すキャラクターが画面外に出ないように制限する。括弧内のカンマの左が最小値(画面の原点)、右が画面サイズになる。positonが画面サイズを超えた位置になると、ここで強制的に画面からはみ出ないようにpositionの値が書き直される。
    (参考)ひとくちメモ:position.clamp(Vector2.ZERO, screen_size)


作成したシーンの実行

 ここまで入力したら、一度実行して動作を確認してみます。実行はツール右上に配置されている、以下の画像の左から5番目(赤い枠)にあります。このボタンはゲーム全体ではなく、作業中のシーン(今回の場合playerシーン)のみを実行します。動作確認など部分的に確認するときに便利です。ちなみにゲーム全体を実行する場合は、一番左のボタン(再生ボタン)を押すとできます。


 実行したら、設定した方向キー(wasd)を押してみてください。キャラクターが指定した方向に移動し、画面の端でそれ以上行かなくなると思います。