unity3d 碰撞检测

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d 碰撞检测相关的知识,希望对你有一定的参考价值。

碰撞检测函数 OnTriggerStay2D() ,可以只接受指定盒子的碰撞讯息吗?
eg,接受polygonCollider2d 盒子的讯息不接受 boxCollider2d盒子的讯息?

你写的是 触发检测,不是碰撞检测。关于你的这个问题,你可以判断一下这个触发的对象本身所带的碰撞器类型。

 void OnTriggerStay2D(Collider2D other)  
        if (other.GetComponent<BoxCollider2D>()) return;
        if (other.GetComponent<PolygonCollider2D>())
        
            //执行内容
        
    

或者你对于带有boxCollider2d的不想被触发的物体使用一个tag标记一下或放到一个碰撞层中,然后检测这个物体的tag是否是带有boxCollider2d的tag,然后return;或者直接忽略触发器所在的碰撞层和不想被触发的碰撞层就可以了。

追问

是这样的,谢谢了,我已经在stackoverflow上找到答案了,Well collider2d detects all types of 2d colliders. It doesn't matter if it's polygon or just a box. As the documentation suggestions it doesn't need to be public or private. It only takes a collider2d as it's argument however. 这是原话。

参考技术A 咋了

以上是关于unity3d 碰撞检测的主要内容,如果未能解决你的问题,请参考以下文章

Unity3d刚体Rigidbody与碰撞检测Collider

Unity3d碰撞检测中碰撞器与触发器的区别

unity3d 怎么检测碰撞?比如主角碰撞到物体之后销毁被撞到的物体

Unity3D利用物体碰撞检测键盘输入处理完成平衡球游戏

Unity3D教程:简单的碰撞检测

Unity3D中的射线与碰撞检测代码