01_Unity3d

Unity3d中 OnTriggerEnter(Collider

2018-06-03  本文已影响245人  道阻且长_行则将至

测试OnTriggerEnter和OnCollisionEnter的区别

测试:如果两个物体A,B

两者都有碰撞体collider(Box Collider,Sphere Collider,Capsule Collider等)

结论:

OnTriggerEnter和OnCollisionEnter的选择。

如果想实现两个刚体物理的实际碰撞效果时候用OnCollisionEnter,Unity引擎会自动处理刚体碰撞的效果。

如果想在两个物体碰撞后自己处理碰撞事件用OnTriggerEnter。

一些技巧

知识扩展。

上面的内容中有的实验是A,B有一个有刚体,有的实验是A,B都有刚体,那么为什么不干脆把两个物体都加刚体就没这么多麻烦了?
其实是这样的,真实游戏里面,有太多的物体,而这些物体如果都有刚体那么对系统的开销是很大的,如果可以减少一半的开销是很不错的选择。
比如地面就可以不设置刚体,因为地面是永远不动的,把人物设置刚体就可以实现真实的物理碰撞效果了。

using UnityEngine;
using System.Collections;

public class t2 : MonoBehaviour
{
    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }

    void OnTriggerEnter(Collider other)
    {
        print(" aaa   " + other.gameObject.name   + "       " + gameObject.name);
    }

    void OnTriggerExit(Collider other)
    {
        print(" bbb   " + other.gameObject.name + "       " + gameObject.name);
    }

    void OnCollisionEnter(Collision other)
    {
        print(" cccc   " + other.gameObject.name + "       " + gameObject.name);
    }

    void OnCollisionExit(Collision other)
    {
        print(" ddd   " + other.gameObject.name + "       " + gameObject.name);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读