Unity3D中实现物体内部的碰撞检测

    在Unity3D中,我们有时候需要在一个物体内部做碰撞检测,但是我们会发现当把另外一个gameObject放入到该物体的内部(此时,已经拥有碰撞检测条件),当运行游戏时,该gameObject会移出该物体的内部。这不是我们想要的结果,我们需要让它在该物体内部自由移动,当它碰到该物体时,会阻止它出去。
    自己尝试过通过脚本来改变该物体的三角面片和其法线的方向,但是依然会有穿透的现象(当然有可能是笔者的水平不高,没有写对,有通过该方法实现的高手们请告诉一下笔者)。

    解决办法: 

    将该物体在3Dmax中反转法线,具体操作,选择该物体,点击右侧面板的“修改”,打开该属性的下方有“修改器列表”,点击“编辑法线”,鼠标选择好“编辑法线”,再打开“修改器列表”,会发现里面有个“法线”选项,点击打开,选择下方的“反转法线”,然后将该模型导出,在导入到Unity3D中。

    在导入到Unity3D以后,我还遇到一些问题,再次跟大家分享一下,首先,必须将导入物体的碰撞器选择为“Mesh Collider“,将内部的gameObject加上刚体和碰撞器,此时才能实现内部的碰撞检测。如果还是有穿透现象,可以查看一下是不是你的gameObject的scale太小,而物体的scale太大,导致检测不到碰撞。


猜你喜欢

转载自blog.csdn.net/tie_de_de/article/details/80379742