この記事のポイント
他の車の走らせ方と、衝突したときの動作のつくり方を説明します。
はじめに 他の車も走らせてみよう
前回までの記事では、車が前に向かって走っているように見せる方法を説明しました。
今回の記事では、他の車も道路を走らせて、前の車をよけてゴールに向かうようにしてよりレースゲームとしての面白さを追加していきます。また、他の車に接触してしまうとクラッシュしたようなエフェクトも追加して、より臨場感を味わえるようにしたいと思います。
実際の道路では前の車を抜き去るような危険な運転はしないようにしましょう。安全運転第一です。
前回の記事
前回の記事では、車が前に向かって走るように見せる方法を説明しました。
スクラッチをゼロから始めたい人は以下の記事を読んでみてください!簡単にスクラッチの第一歩を踏み出せます。
完成作品
完成作品はこのようになります。いつもの通りに緑色の旗で実行してください。
前に自分より遅い車が表れるので、上手く右に左に避けていってください。避けきれずに他の車に衝突すると衝突エフェクトが表れます。
完成プログラムはこのようになります。新しい車のスプライト追加と、自分の操作する車に当たり判定を追加しています。
新しい車のプログラムは以下のとおりです。左車線用と中央車線用と右車線用をそれぞれ作ります。
追加した当たり判定のプログラム
仕様(作るもの)を考える
今回の作るものを考えていきます。
- 3車線に他の車を走らせる。
- 他の車の出現の頻度は、ランダムにする。
- 他の車の速度は、自分の車の速度より遅くする。
- 他の車と衝突すると、自分の車がクラッシュした画像になる。
事前準備
他の車のスプライトを用意する 画像の色合いを変える
色んな車種を増やしたいですが、画像を一から作るのはなかなか大変です。ここでは、今使っている車の画像の色合いだけを変えて他の車を作っていきます。
画像の色合いを変えるのに便利なウェブサイトは、「Web色変換」さんのサイトになります。
ウェブに画像をアップロードして「色相」「彩度」「輝度」をいじるだけで、色違いの車を作ることができます。
中央車線用、右車線用、左車線用の3つに対して色違いを作ります。スプライトの名前はそれぞれ「car_left_1」「car_stand_1」「car_right_1」としておきます。※スプライトの名前は好きにつけて問題ありません。
プログラミング
では準備も整ったのでプログラミングを始めましょう。
他の車を自分の車よりゆっくり動かす方法
他の車を自分の車よりゆっくり動いているように見せる方法を考えます。白線が道路を流れる速さが自分の車の速さであることは前回説明しました。
ということは、白線より他の車をゆっくりした速度で動かせば、自分の車よりゆっくり走っているように見えます。
左車線用
まず、左車線の車の動きをプログラミングしてみます。
左車線用の色違いの車のスプライトをアップロードします。
プログラムは左側白線をベースに値を少しいじるだけでOKです。また、変数は左車線車様に新しく作ってください。細かい値の調整は以下のプログラムを参考にしてください。ポイントとしては、白線より速度を落とすために大きさ、x、yの変数の変化を小さくすることです。
実際はプログラムを組んで動かしてみてということを繰り返して値を調整していきます。
これで一旦動作を確認してみます。左車線に他の車が出現するようになりましたね。
中央車線、右側車線にも車を走らせる。
同じ要領で中央車線、右側車線にも車を走らせるようにプログラムをします。ポイントは、変化量を左側車線に合わせることです。
中央車線用のプログラムはこちらです。
右側車線用のプログラムはこちらです。
これで一旦動かしてみましょう。すべての車線に車が表れて、走っているように見えると思います。
3車線同時に車が表れるし、車同士が衝突してしまっているしでまだまだ課題ありですね・・・。
車の出現頻度をランダムにする=乱数を使う
今のままだと、3車線同時に車が表れるため左右どちらに避けても車が衝突してしまいます。
実際の道路だったらちゃんとブレーキを踏みましょうね。
このままではレースゲームとしては面白くありません。
車が発生する頻度をランダムにして、いつ車が発生するかわからなくなるようにしてみましょう。車が発生する頻度を決めているのは、プログラムの中のクローンを作る前の時間を待つブロックです。
この待つ秒数をランダムな値になるように変更します。プログラムとしては以下のように変更します。
これを左側車線用車、中央車線用車、右側車線用車のすべてで変更します。
これで一旦動きを見てみましょう。車が発生するタイミングがバラバラになって、自分の車を左右に動かせば他の車を避けることができるようになりました。
車との衝突=「もし他のスプライトに触れたら」を使う
最後に自分の車が他の車に衝突したときに衝突したことがわかるエフェクト(効果)を表示させるようにしたいと思います。これは次のような動きプログラムで組めばよさそうです。
- 他の車(他のスプライト)に触れたら、
- 自分の車のスプライトをクラッシュした絵のスプライトに一定時間だけ変えて、
- 一定時間たったらスプライトを元に戻す。
では、実際に先ほど考えた動きをプログラミングしてみます。自分が操作する車のプログラムに以下のプログラムを追加します。
ポイントは以下の点です。
- 「もし」ブロックに調べるカテゴリーの「〇に触れた」ブロックを使用する。
- 左車線、中央車線、右車線で「もし」ブロックをわける。
この「もし」ブロックと、その条件に「〇にふれた」を使うことは、スクラッチでゲームプログラミングをする場合によく使用します!ぜひマスターしましょう。
さあこれで動きをチェックしてみましょう。他の車に衝突すると、自分の車にクラッシュのエフェクトが表れるようになっているのがわかると思います。
安全運転第一でお願いします!
さいごに
今回は、他の車を走らせてさらに衝突したときの動作を追加しました。よりレースゲームらしくなってきて、これでも十分楽しめるようになりました。
次回
次回はガソリンの残量を表示させて、ガソリンが切れたらゲームオーバーとなるようにしてみます。ぜひ挑戦してください!
コメント