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

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

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

f:id:yoru8888:20200616060644p:plain

こんにちは、Yoruです。

今回はついにボールを反射させるイベントを作ります!

 

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

yoru8888.hatenablog.com

 

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

yoru8888.hatenablog.com

 

オブジェクトを反射させる

youtu.be

f:id:yoru8888:20200622112611p:plain

① oBall > Add Event > Collision > oBrick を選択。

② function Call を検索し、ドラッグ。

function Call: 好きなGMS の関数を呼べます。今回はブロック(oBrick)に当たったもの全てを跳ね返す move_bounce_all を使用します。

function = move_bounce_all, Argument = true

 

youtu.be

これでボールがブロックに当たると反射するようになりました。

 

次にプレイヤー(oBat)と反射できるようにします。ボールがプレイヤーに当たった時、両オブジェクトの原点を一直線に結んだ方角に戻っていくようにします。

youtu.be

f:id:yoru8888:20200622140246p:plain

① oBat > Add Event > Collision > oBat を選択。

② Set Point Direction を検索し、ドラッグ。

Set Point Direction: オブジェクトの方向を定めたポイントに向ける。

今回の場合、ボールの方向をプレイヤーに向けます。

x = other.x (oBat.xでも良い), y = other.y

 ③Set Direction Variable を検索し、ドラッグ。

Direction = 180, Relative にチェック

これで②で設定した角度を180度反転させ、ボールが逆方向に進んでいきます。 

 

次に room の上左右にボールが反射するようにします。

youtu.be

f:id:yoru8888:20200622145208p:plain

f:id:yoru8888:20200624111124j:plain

① oBall > Add Event > Other > Intersect Boundary を選択。 

 

まずは左の壁に反射させます。

② If Variable を検索し、ドラッグ。

Variable = bbox_left, is = less, Value = 0 

③ Set Speed を検索し、ドラッグ。

Type = Horizontal, Speed = - hspeed(水平方向のスピードを反転させる)

 

④ 右の壁でも同様に設定する。

If Variable: Variable = bbox_left, is = Greater, Value = room_width

Set Speed: Type = Horizontal, Speed = - hspeed 

 

⑤ 上の壁でも同様に設定をする。

If Variable: Variable = bbox_top, is = less, Value = 0

Set Speed: Type = Vertical, Speed = - vspeed(垂直方向のスピードを反転させる)

 

youtu.be

これでブロック、プレイヤー、上左右の壁にボールが反射するようになりました。

次の記事で、プレイヤーのライフポイントや得点などの文字をゲーム上に表示するイベントを作っていきます。

yoru8888.hatenablog.com