Unityでゲームを作っていて衝突した時の力ってどうやって取得するんだろうと思って調べてみた。
衝突した時の力が取得できれば、ある一定以上の衝突が起きた場合にのみイベントを起こすことができるようになる。
この動画のように卵が箱から落ちると割れるようにしてみた。
実はこれ、コリジョンが2回発生している。
初回は箱の上に置く時、つまりゲーム開始時だ。
ゲーム開始時には箱の上で割れていない。衝撃が弱いからである。
その後に箱の上から落ちると割れる。
private void OnCollisionEnter(Collision collision) { float collisionForce = collision.impulse.magnitude / Time.fixedDeltaTime; if(collisionForce > 200.0f) { Die(); } }
コードはこんな感じ。
衝突力を取得して閾値以上かどうかで処理を分けた。
参考:https://www.malgol.com/how-to-get-the-impact-force-of-a-collision-in-unity/