今回作成するもの
矢印キー (上下左右) を入力することで、キャラクターが上下左右に移動します。左右の移動時には、スプライト画像の左右反転も行っています。
OnKeyPress_Move
Extension を作成
以下のように OnKeyPress_Move
の Behavior を追加します。doStepPreEvents を追加します。
パラメータの追加
Speed
はいつもどおりの動く速度です。それ以外は以下に説明します。
vx |
現在の X 軸方向の入力値です。Speed の値が方向によって正負で入力されます。 |
vy |
現在の Y 軸方向の入力値です。Speed の値が方向によって正負で入力されます。 |
IsFacingLeft |
現在左を向いているかのフラグです。スプライトの反転のために利用します。 |
【GDevelop 基礎 04】 一定間隔で反転する - Make Everything Games では flipFlag
をスプライトの反転のために用意していましたが、それと同じと考えてください。
doStepPreEvents の実装
コメントも入れていますがステップごとに説明します。
毎フレームの値の初期化
ここでは vx
, vy
の値を初期化しています。これらの値は最後の「スプライトの移動」で利用される値になりますが、キー入力イベントでその値が変化します。
ただ、毎フレーム 0
にしないと、一度「右」を押されると、ずっと右に進み続けてしまうのでこのようにしています。もちろん、キーのリリース(キーを離す)イベントで 0
に戻す方法も考えられます。
キー入力イベント
上下左右のキー入力に応じて vx
, vy
それに加えて、左右では IsFacingLeft
の値も変更しています。
注意点があるとすると、vy
は Y 方向ですが、GDevelop は Y は下方向が正方向になるため、 Up
(上) を押された時に -Speed
を入れています。
IsFacingLeft
に関しては、左右の方向に対応しているので特に違和感は無いと思います。また、この値は毎フレーム初期化する必要がありません。一度左を押したら、次に右を押すまでは左を向いていて欲しいからです。
スプライト画像の反転
ここに関しては 【GDevelop 基礎 04】 一定間隔で反転する - Make Everything Games で説明したので特に解説は不要かと思いますが、Flip horizontally
でスプライトの反転をしています。初期値が「右」を向いているので、 IsFacingLeft
が true
の時に反転させて「左」にします。
スプライトの移動
ここは 【GDevelop 基礎 04】 一定間隔で反転する - Make Everything Games の Appendix で触れた Add to force (angle)
と同じ種類の Add to force
を利用しています。
Add to force (angle)
は角度に対しての force でしたが、こちらは単純に X, Y に対して速度を指定できます。
スプライトの Behavior に設定する
パラメータには vx
, vy
, IsFacingLeft
もありましたが、Editor で表示するようにしなかったので調整できる値は Speed
のみになっています。
動作確認
冒頭に貼った画像のように上下左右に移動できます。斜めにも移動することができます。