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

① oBall > Add Event > Collision > oBrick を選択。
② function Call を検索し、ドラッグ。
function Call: 好きなGMS の関数を呼べます。今回はブロック(oBrick)に当たったもの全てを跳ね返す move_bounce_all を使用します。
function = move_bounce_all, Argument = true
これでボールがブロックに当たると反射するようになりました。
次にプレイヤー(oBat)と反射できるようにします。ボールがプレイヤーに当たった時、両オブジェクトの原点を一直線に結んだ方角に戻っていくようにします。

① 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 の上左右にボールが反射するようにします。


まずは左の壁に反射させます。
② 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(垂直方向のスピードを反転させる)
これでブロック、プレイヤー、上左右の壁にボールが反射するようになりました。
コメント