物理エンジンと当たり判定を使いこなそう(その3)

前回の!続き!
ラストさ!


今回はオブジェクトの当たり判定について説明していく。当たり判定を使いこなせばゲームとしてのクオリティがぐぐーんとアップするぞ。
当たり判定が使えると
何ができるっすか?
例えば
・アイテムの取得
・敵への攻撃
・罠にぶつかったときに爆発
なんかも作れるようになる
はやくやるっす!!


当たり判定の解説をするために簡単なゲームのステージを作ってみた。部屋の中に浮かぶコインをプレイヤーが回収するというシンプルなゲーム。
少し動かしてみるとこうなるよ
プレイヤーにはRigidbodyを追加して落下するように。コインはピタリと止まっていると寂しいので回転させてみた。一応回転のスクリプトも貼っておくよ。
これで下準備は完了!
早速プレイヤーを操作可能にしよう
今回はスペースキーを押すと右上にジャンプするという単純なプログラムにした。このスクリプトを書いてプレイヤーにアタッチすれば操作可能になる。
ぴょんぴょん跳ねて楽しいっす!
ひと手間加えると
もっと楽しくできるのさ


ボールがぴょんぴょんと跳ねて楽しくなったが、まだ音やエフェクトなどの演出がなくて少し寂しい。というわけで床や壁に当たったときの演出を派手にしてみよう。 まずはボールが壁に当たったときの効果音を探そう。タナトモはよく「効果音ラボ」さんを利用している。 好きな効果音を見つけたらダウンロードしてUnityに入れておこう。
いっぱいあって迷うっす~
あとで変更もできるから
一旦適当でも大丈夫だよ


効果音を見つけたら次はビカビカするエフェクトを探そう。アセットストアで検索するとたくさんエフェクトが出てくるぞ。今回タナトモはCartoon FX Freeというアセットを使用させてもらった。
これらの素材のインポートが完了したら、先程書いたスクリプトに手を加えていく。
スクリプトどーん!


スクリプトの解説は後回しにするとして、もう少しだけ進めてしまおう。今回は効果音を鳴らすので、プレイヤーに「AudioSource」コンポーネントを追加する。
次に、先程追記したプレイヤー操作用のスクリプトに効果音とエフェクトの素材を設定する。

ここまでできたらバッチリ
プレイして変化を確かめよう
おお~!
一気にゲームっぽくなったっす!
楽しいでしょ~


ひとしきり遊んだところで、先程書いてもらったスクリプトの解説をしようと思う。


今回重要なのがこのOnCollisionEnterという関数。この名前で関数を作ると、他のオブジェクトと衝突したときに自動で呼び出される関数になる。そして()の中身のcollisionには衝突した相手の情報が入っている。このOnCollisionEnter関数の中に衝突時の処理を書くことで様々な機能を作ることができる。
さっきから気になってたんすけど
このプレイヤー、コインに弾かれてないっすか?
ばれたか...


たにっこさんの言う通り、確かにコインに弾かれているように見える。ちゃんとコインを取得できるように少し手を加えていこう。 コインのコライダーのisTriggerにチェックを入れる。これをすることによってコインをすり抜けるようになる。
この状態でプレイしてみるとコインをすり抜けるだけで何も反応してくれない事がわかると思う。isTriggerにチェックを入れた場合、OnCollisionEnterは反応しなくなるのだ。
isTriggerにした場合はOnTriggerEnterという関数をつける必要がある
スクリプトを載せるよよよよ


ここまで出来たら早速プレイしてみよう。
コインに弾かれないっす!


今追記したOnTriggerEnterに関しても基本的な動作はOnCollisionEnterと同じだ。当たり判定を取りたいオブジェクトがisTriggerなのかを注意して使い分けていく必要があるぞ。

当たり判定さえ取れれば
ゲームっぽくなっていくよ
敵に当たったらダメージ受けるとかも作れそうっす!