0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【GameMakerStudio2】基本的なキーボードによるオブジェクトの移動

Posted at

はじめに

GameMakerStudio2のチュートリアルはかなり充実していると思う。
公式動画などを見れば当たり前のような事かもしれませんが、一応書き記したいと思います。
個人的な思考も入っておりますので間違いや勘違いがることはご了承ください。

GMLでの環境となります。

上下左右の移動

動かしたいオブジェクトを作成しCreateイベントを作成します。

Create
spd = 1;

moveX = 0;
moveY = 0;

次にStepイベントを作成します。

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;

上下も同じ仕組みで動いております。

以上、本当に簡単にですが、オブジェクトのキーボード移動についてでした。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?