Unity3d 如何防止嘲笑者穿墙?
我有一艘船,它是一个Unity3d 如何防止嘲笑者穿墙?,unity3d,unity3d-5,Unity3d,Unity3d 5,我有一艘船,它是一个刚体。船上有一个meshclider。此碰撞器设置为凸面 我得到了一个编程创建的网格。该网格上有一个MeshCollider。此碰撞器未设置为凸面 大多数情况下,这是可行的。我不会从地板上摔下来。大约40%的时间我可以开车穿过墙壁 为了解决这个问题,我为每个墙段添加了一个子GameObject标记为static。这个GameObject上有一个BoxCollider。我将对撞机的尺寸调整为比墙的截面大0.1。这意味着碰撞器重叠,并且不应该有间隙 正如你在下图中所看到的,我有时
刚体
。船上有一个meshclider
。此碰撞器设置为凸面
我得到了一个编程创建的网格。该网格上有一个MeshCollider
。此碰撞器未设置为凸面
大多数情况下,这是可行的。我不会从地板上摔下来。大约40%的时间我可以开车穿过墙壁
为了解决这个问题,我为每个墙段添加了一个子GameObject
标记为static。这个GameObject
上有一个BoxCollider
。我将对撞机的尺寸调整为比墙的截面大0.1。这意味着碰撞器重叠,并且不应该有间隙
正如你在下图中所看到的,我有时仍然能够开车穿过墙壁
我该怎么做才能不让车穿过墙
我试过:
- 将
刚体
也添加到地面,标记为运动学。为此,我将meshcliller
一起移除,并使用了allBoxCollider
s。我必须使用所有的BoxCollider,因为你可以有一个凸刚体。这并没有解决问题
- 我从播放器中移除了
MeshCollider
,并使用了一个BoxCollider
。此时,场景中不再有任何MeshCollider
s。这并没有解决问题
- 两个
刚体
都设置为连续碰撞检测
我开始怀疑UNity3d物理系统是否有效://太多的事情可能是问题,请逐个尝试,看看哪一个适合你
如果要将网格碰撞器用于凸面,则必须将刚体附加到它。将刚体附加到两个对象上
由于使用代码生成墙,请确保指定网格碰撞器的墙具有255,凸面将失败
由于它有时工作,但有时失败,因此将墙壁和船舶的刚体碰撞检测更改为连续动态
使用复合碰撞器。移除船上的网格碰撞器,并在船周围使用多个长方体碰撞器,以获得所需的感觉
调整固定和允许的最大时间步长。我将“固定时间戳”设置为0.0005
你如何移动这艘船?你是直接移动船的位置,还是使用像AddForce这样的刚体方法?顺便说一句,别担心,Unity的3D物理引擎“Nvidia PhysX”实际上非常健壮。不幸的是,由于用户错误,有很多地方可能会出错(这在我们所有人身上都会发生)。@AquaGeneral-我正在使用刚体.MovePosition
和刚体.MoveRotation
来进行船的移动。