スプライトの衝突判定
やること
この教材 では、Jasmine Tea のプログラムでスプライト同士が衝突したかどうかを判定する方法を学びます。
ステップ1
エディターに以下のプログラムを入力してみましょう。
show 0,(100,120)
show 1,(180,120)
direction 0,3
speed 0,5
distance 0,100
move 0
do
if crash(0,1) then
print "衝突しました!"
stay 0
exit do
end if
loop
print "プログラム終了"
ステップ2
エディターの右下にある「▶実行」ボタンを押すと、入力したプログラムが実行されます。実行した後は、画面の右上にある「ドキュメント」タブを押して、ここに戻ってきてください。
では、「▶実行」ボタンを押してください。
ステップ3
実行画面に以下のように表示されたら成功です。
スプライト0がスプライト1に向かって動き、衝突すると「衝突しました!」と表示されます。その後、プログラムが終了します。
ステップ4
実行したプログラムを解説します。
使っている命令の簡単な紹介
-
show
はスプライトを画面に表示する命令です。 -
direction
はスプライトの動く方向を設定する命令です。 -
speed
はスプライトの速さを設定する命令です。 -
distance
はスプライトが動く距離を設定する命令です。 -
move
は指定したスプライトを動かす命令です。 -
crash
は2つのスプライトが衝突しているかを判定する命令です。 -
stay
はスプライトの動きを止める命令です。 -
exit do
はdo-loop
のループを終了する命令です。
プログラムで行われていること
-
show 0,(100,120)
とshow 1,(180,120)
でスプライト0と1を表示します。 -
direction 0,3
でスプライト0の動く方向を右(3)に設定します。 -
speed 0,5
でスプライト0の速さを5に設定します。 -
distance 0,100
でスプライト0の移動距離を100に設定します。 -
move 0
でスプライト0を動かします。 -
do-loop
の中で、crash(0,1)
を使いスプライト0と1が衝突しているか判定します。 - 衝突した場合、メッセージを表示してスプライトを止め、ループを終了します。
- 衝突判定が終了すると「プログラム終了」と表示されます。
学ぶべきこと
- スプライト同士の衝突を判定する方法。
- 衝突時の処理をプログラムに組み込む方法。
- ループを使った継続的な判定の方法。
チャレンジ
- スプライトの初期位置を変更して、異なる条件で衝突させてみましょう。
-
speed
やdistance
の値を変更して、衝突のタイミングを調整してみましょう。 - 新しいスプライトを追加して、複数のスプライトが衝突する場合の動きを試してみましょう。