LoginSignup
2
0

More than 5 years have passed since last update.

Unity5.5 衝突判定メモ

Last updated at Posted at 2017-04-05

衝突判定メモ

Rigidbody2D,BoxCollider2Dの衝突判定に関して少し動作検証してみた。
当たり前の動作かもしれないけど、再確認。

・オブジェクト
プレイヤー、敵、地面、ゴール地点(旗)
すべてにRigidbody2D,BoxCollider2Dを付ける。

・スクリプト
適当に書いてプレイヤーが動くようにする。

挙動①

敵のBoxCollider2DのIsTriggerにチェックを入れると物理挙動は無視される。

・想定挙動
プレイヤーと敵の衝突時OnTriggerEnter2Dが呼ばれる。
敵は地面を無視して落下する。

・実際の挙動
プレイヤーと敵の衝突時OnTriggerEnter2Dが呼ばれる。
敵は地面を無視して落下した。

・分かったこと
IsTriggerにチェックを入れると物理挙動は無視されて、OnTriggerEnter2Dが呼ばれる。
Rigidbody2Dをゴール地点(旗)に付けている場合、落下して困るのでBodyTypeをKinematicにする。
それなら地面、ゴール地点(旗)はRigidbody2D要らないと思った。

挙動②

敵のBoxCollider2D IsTriggerにチェックなし、物理挙動が有効になる。

・想定挙動
プレイヤーと敵の衝突時OnCollisionEnter2Dが呼ばれる
敵は地面で止まり落下しない。

・実際の挙動
プレイヤーと敵の衝突時OnCollisionEnter2Dが呼ばれる。
敵は地面で止まり落下しなかった。

・分かったこと
Is Triggerにチェックない場合、OnCollisionEnter2Dが呼ばれるのでこっちで衝突判定をする。
敵とか物理挙動させたい場合は、BoxCollider2DでIsTriggerにチェックをいれちゃダメ(落下するから)、あとBodyTypeをKinematicにすると動かなくなるからダメ。

まとめ

・敵など物理挙動をさせたいオブジェクト
OnCollisionEnter2Dで衝突判定を行う。

項目 設定値
BoxCollider2D IsTriggerはチェックなし
Rigidbody2D BodyTypeはDynamic

・ゴール地点(旗)など物理挙動不要なオブジェクト
OnTriggerEnter2Dで衝突判定を行う。
物理挙動はいらないのでRigidbody2Dは無くてOKだと思う。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0