[Unity] isKinematic有効時のOnTriggerEnter/OnTriggerExitの挙動がおかしい。重力を止めるならuseGravityを使うべし

Unity

重力を止めてオブジェクトを静止させるのにisKinematicを使っていたのですが、OnTriggerEnterとOnTriggerExitの挙動がおかしくなることに気づきました。isKinematicの代わりにuseGravityの有効/無効を切り替えることで正しい動作になりました。

Rigidbody rb;
void Start()
{
        rb = this.transform.GetComponent<Rigidbody>();
}
void Update()
{
    //rb.isKinematic = true; //OnTriggerEnterとOnTriggerExitの挙動がおかしくなる
    rb.velocity = Vector3.zero; //速度を止める
    rb.useGravity = false; //重力を止める
}

動いているオブジェクトの重力を止めただけでは動き続けるので、速度も0にしています。

Unity初心者のメモ書きなので参考程度にしてください。

広告