もくじ
https://tera1707.com/entry/2022/02/06/144447
やりたいこと
モノ同士が衝突したときに、片方をカキーンと跳ね返したい。
やりかた
RigidBodyのAddForce()
メソッドを使って、当たってきたモノに力を加えて跳ね返す。
https://docs.unity3d.com/ja/2020.3/ScriptReference/Rigidbody.AddForce.html
今回は、2つの物体が衝突したときに、衝突相手に対して、力を加えてみる。
「Is Trigger」をONにして、衝突を検知できるようにしたうえで、OnTriggerEnter()
の中で、
- 相手のRigidBodyを取得
- 力を加えたい方向を決める
- RigidBodyの
AddForce()
に、方向と大きさを渡して力を加える
ということをする。
using UnityEngine; public class AtattaHantei : MonoBehaviour { private void OnTriggerEnter(Collider other) { // ぶつかってきた相手のRigidBodyを取得 var r = other.gameObject.GetComponent<Rigidbody>(); // 真上方向 var direction = new Vector3(0, 1, 0); // 真上に、相手の質量の1000倍の力を加える r.AddForce(direction * r.mass * 1000); } }