概要
Scratchでアクションゲームなどを作る場合に障害物などを配置し、キャラクターが障害物にぶつかると動けなくするようにしたい場合があると思います。
例えばこのような動きです。
今回は障害物に衝突するコードの例について紹介していきます。
まずは上下左右に移動するコードを作る
最初にカーソルキーの上下左右を押してスプライトを動かすコードを作っていきます。
これは簡単でプログラムをスタートさせている間ずっと次のように設定しておきます。
- 右向き矢印キーが押されたとき、x座標を10ずつ変える
- 左向き矢印キーが押されたとき、x座標を-10ずつ変える
- 上向き矢印キーが押されたとき、y座標を10ずつ変える
- 下向き矢印キーが押されたとき、y座標を10ずつ変える
これで上下左右にカーソルキーでキャラクターが移動できるようになりました。
障害物を配置する
次に障害物を配置していきます。今回はシンプルに「描く」の機能を使い、四角形を作成しました。
四角の大きさは好きなように設定すれば良いですが、キャラクターとの大きさのバランスが悪くならないように、四角形のサイズに合わせてキャラクターの大きさも適宜調整するのが良いと思います。
衝突の機能を作る
これで自由に動かせるキャラクターと障害物は用意できましたが、このままだとキャラクターが障害物の上をすり抜けるような形になり、衝突が発生しません。
そこで、右向き矢印キーが押された後の座標移動の後に次のようなコードを追加します。
- もし紫色(障害物の色)に触れたらx座標を-10ずつ変える
こうしてやることで、右矢印キーをおして障害物の色に触った瞬間にx座標の右への移動分と同じ量のマイナスの移動量が発生するため、それ以上動けなくなります。
これと同じ方式で左向き、上向き、下向きに対しても同じような逆方向の移動を設定してやることで最終的に以下のコードになります。
このコードで動かした例が冒頭のアニメーションの挙動になります。
まとめ
- 障害物の色との接触があった場合に移動方向と逆方向の移動量が発生するようにすることで衝突の挙動をつくることができます。
その他のScratch小技は以下で紹介しています!
コメント