はじめに
GameMakerStudio2のチュートリアルはかなり充実していると思う。
公式動画などを見れば当たり前のような事かもしれませんが、一応書き記したいと思います。
個人的な思考も入っておりますので間違いや勘違いがることはご了承ください。
GMLでの環境となります。
上下左右の移動
動かしたいオブジェクトを作成しCreateイベントを作成します。
spd = 1;
moveX = 0;
moveY = 0;
次にStepイベントを作成します。
// キーボード入力
var _right = keyboard_check(vk_right);
var _left = keyboard_check(vk_left);
var _up = keyboard_check(vk_up);
var _down = keyboard_check(vk_down);
// 移動方向
var _inputX = _right - _left;
var _inputY = _down - _up;
// 移動値
moveX = _inputX * spd;
moveY = _inputY * spd;
// 当たり判定
// 移動
x += moveX;
y += moveY;
コメントに記載していますが、実際は当たり判定を行ってから座標の移動を行う必要があります。
今回は割愛。
解説
Createイベントはオブジェクトが生成されたタイミングで動作します。
Createで定義した変数spd
がプレイヤーの移動速度となり、早くしたい場合は数値を上げましょう。
Stepイベントはオブジェクトがフレームごとに呼び出される処理です。
オプション側でフレーム数を設定でき、基本的には1秒=60フレームで動作する設定かと思います。
フレームごとにkeyboard_check
でのキーボードの入力値を各変数_right
などに代入しています。
keyboard_checkは入力があれば1 なければ0 が返ります。
この値を利用して移動上下左右の方向を取得します。
var _inputX = _right - _left;
上記の計算を見てみましょう。
キーボードの右が押された場合 _inputX = 1 - 0;
となります。つまり1
ですね。
逆に左が押された場合 _inputX = 0 - 1;
となります。つまり-1
ですね。
GameMaker Studio2は**左上に起点(0, 0)**がありますので右に移動する場合は加算、左の場合は減算する必要があります。
この算出した数値をオブジェクトの移動速度と掛けてX方向へ移動するように代入しています。
// 移動速度
moveX = _inputX * spd;
moveY = _inputY * spd;
// 当たり判定
// 移動
x += moveX;
y += moveY;
上下も同じ仕組みで動いております。
以上、本当に簡単にですが、オブジェクトのキーボード移動についてでした。