【Unity 2D】衝突判定について

  • |
【Unity 2D】衝突判定について
   

第8回目は、「衝突判定」です。
アクションゲームなどでは必ずと言ってもいいほど利用をします。今回はこの「衝突判定」についてブログに書いていきたいと思います。

前回:【Unity NGUI】フェードインとフェードアウトの実装 | albatrus.com

準備

Unityないで「衝突判定」を実装する場合、オブジェクトに以下のコンポーネントが必要となります。
  • Collider
  • RigitBody
2014-9-3-fdsada


[Collider]にはいくつか種類があるのですが、何かしら必ず必要となります。
今回は2Dなので、[Collider]も2Dのモノを利用しています。

衝突判定を実装する

ここからはスクリプトの記述となります。
Unityでは「衝突判定」を感知する便利なメソッドが複数あります。
この中から、ゲームの内容に合ったものを利用して下さい。

Triggerを利用する

[Collider]には[is Trigger]という項目があります。
これがTrue(選択)されている場合に、「衝突判定」を調べることができるのが「OnTriggerEnter2D」です。


ある場面では「衝突判定」をしたくない場合があると思います。
この時に[is Trigger]を調整しましょう。

Colliderについて

衝突判定を調べるために必要なのが、[Collider]です。
[Collider]とは、どこで衝突判定を認識するかの有効範囲のことです。
Unityには複数の[Collider]が用意されています。

BoxCollider2D

四角形のColliderです。
2014-9-3-box


有効範囲は[Shift]を押しながら移動させることで変更することが可能です。
2014-9-4-fdsa


CircleCollider2D

円のColliderです。
20140904-dadsada


PolygonCollider2D

[PolygonCollider2D]は自由に有効範囲を設定できます。
これも[Shift]を使うと「頂点の作成」「頂点の移動」ができるので、好きな範囲を作成しましょう。
201409040fdsasa

OnCollisionEnter2D

先ほどの「OnTriggerEnter2D」同様に、衝突判定を調べる際に「OnCollisionEnter2D」というメソッドがあります。


しかし、これが思うように機能してくれません。

OnCollisionEnter2Dが働かない

衝突判定のテストでは以下の様に実験を行っていました。
2014-9-3-fdsas


コードはこのような感じです。

オブジェクトの移動手段は色いろあるのですが、どれを試しても「OnCollisionEnter2D」が動いてくれません。
2つのオブジェクトには[BoxCollider2D]と[RigidBody2D]を追加しています。

OnCollisionEnter2Dが働らく場合

OnCollisionEnter2D」が働く場合があります。
2014-9-4-fdsasa


スクリプトを使わずに、重力を利用した落下には反応しました。
恐らく、スクリプトでの移動に対しては「OnCollisionEnter2D」は利用できないのかなと思っています。
もし、何か良い解決策があれば教えて欲しいです。

Related Posts Plugin for WordPress, Blogger...