モノに力を加える

もくじ
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);
    }
}