【发布时间】:2013-08-19 21:42:15
【问题描述】:
我需要找到一种方法来制作一艘 3D 船,让它看起来在水中漂浮。目前,我正在使用平底船,并使其沿地形滑行,就在水面之下。这给人一种浮力的错觉,但并不是我真正想要的。
船移动使用
this.transform.Translate(Vector3.left * Time.smoothDeltaTime * ((speed) + 1));
船转弯使用
this.transform.Rotate(Vector3.forward*Time.smoothDeltaTime*(int)(30*horizontal));
船有一个刚体,它使用重力,不插值,并具有连续动态碰撞检测。它还使用凸形 Mesh Collider,具有平滑球体碰撞。
The Water 有一个 Box Collider 用作触发器。
现在我需要一种以编程方式使船看起来漂浮在水中的方法。 就是这个意思
- 撞到东西时会摇晃
- 不触“河”底
- 修正了它的旋转以在河流上保持平坦(在撞到岛屿或其他障碍物后不会保持弯曲)
我想这样做是为了给我的船底设置正确的形状,这样它就可以更逼真地与水下障碍物发生碰撞。
【问题讨论】:
-
首先,如果你想让船在物理上正确移动,你不能也不应该通过
transform.Translate移动它,因为这会导致具有刚性物体并对物理有反应的物体出现问题(读:不设置为运动学)。原因:当您在另一个运动对象内部移动一个对象时,您会收到强烈的反应,因为两个物理对象在彼此内部并且物理必须将它们推开。它们彼此夹得越远,反推反应就越强 -
我在统一论坛上看到一个页面提到了几个船浮力脚本,比如高级并且至少一个是免费的。使船摇摆,类似于船。