アフターユニ ~海外大卒生のブログ~

Flutter, Dart, GameMakerStudio2, 英語に関する情報を気ままに発信してます。

プログラミング言語なしでゲームを作る(Part5): GameMaker Studio2 の Drop and Drag 機能

f:id:yoru8888:20200616060644p:plain

こんにちは、Yoruです。

 今回はプレイヤーを左右に移動させるプログラムを作ります。

 

前回の記事を読んでない方はこちら 

yoru8888.hatenablog.com

 

GameMaker Studio2をまだ良く知らない方はこちら

yoru8888.hatenablog.com

 

プレイヤーを左右に動かす

youtu.bef:id:yoru8888:20200618143856p:plain

① oBat上で Add Event > Key Down > Left 選択しイベントを作ります。

Key Down:ボタンを押している間イベントが発生します。今回の場合、左矢印ボタンを押している間。

② 検索ボックスで movement と入力し、Jump to Point をドラッグ。

③ x = -7(x軸上で左に移動させる), Relative にチェック

④ 同様に右方向(Right) のイベントを作ります。

x = 7, Relative にチェック

 

他に変数を使ったやり方があります。変数を使った方が後で変更したいときに便利なのでこっちの方法をこのゲームでは使用します。

youtu.be

f:id:yoru8888:20200618143915p:plain

① oBat > Add Event > Create を選択しイベントを作ります。

② 検索ボックスで Assign Varibale を検索し、ドラッグ。

③ Name = spd(変数の名前をつける), Value = 7

④ Jump to Point の Left, Right の 7 を spd に代える

 

youtu.be

 Run すると横の壁をスレ抜けるので「if文」で調整します。if文を使って条件を指定し、条件を満たす場合のみプログラムが実行されるようにします。

今回の場合、オブジェクトが壁に到達したら、それ以上進めない条件をつけます。

 

youtu.be

f:id:yoru8888:20200624094726p:plain
まずは左にすり抜けない条件を設定。

① oBat > Key Down > Left > if Variable を検索し、ドラッグ。

 

f:id:yoru8888:20200619090800j:plain

object の左端が(Variable)、壁(Value)より、右側(is)である場合のみ実行する条件を作ります。

※ Variable =  x - sprite_xoffset 

Value = 0 (roomのx軸の左端は 0)

is = Greater(より大きい)

 

※ oBrickのx軸の原点が中心にあるので Variable に x だけ入力すると、オブジェクトが半分すり抜けてしまうので、sprite_xoffset(オブジェクトの原点から端の距離)を使って調整します。

 

右にも同じ条件をつけます。

oBat > Key Down > RIght > if Variable

Variable = x + sprite_xoffset

Value = room_width

is = Less  

 

youtu.be

これでプレイヤー(oBat)が左右の壁をすり抜けずに移動できるようになりました。

 

次の記事でボールがスタート時ランダムに発射されるイベントを作ります 

yoru8888.hatenablog.com