Unity3D :与"Translate"对象的冲突问题



我不知道为什么,但是当我用平移连续移动我的球体时,当球体和墙壁之间有接触时,球体会一点点进入墙壁内部。

我附上了一个小视频,和我的FSM和我的球体的检查员。

非常感谢你的帮助……

问候,安东尼

my FSM:https://www.dropbox.com/s/nvohgkdvq5rd9pd/capture%20d%e2%80%99%c3%a9cran%202014 - 06 - 12% - 20% - c3%a0%2012.51.04.png

检查器:https://www.dropbox.com/s/1ec3numdfx33lbp/Capture%20d%E2%80%99%C3%A9cran%202014-06-12%20%C3%A0%2012.52.15.png

视频:https://www.dropbox.com/s/kq4nfu3t6j2mprz/tile%20collision.mp4

因为你的球体是一个刚体,不是运动的,你不应该直接平移它。相反,你可以通过使用Rigidbody.AddForce添加力来移动它。

为了清楚起见,运动刚体是一种不受物理本身影响的刚体,但可以在没有相反力的情况下移动其他刚体。在这种情况下,使用它没有任何意义,因为你希望球体与物体碰撞,并受到重力的影响。

直接转换物体位置的问题在于,它不会使用物理引擎在物理上移动物体。然后,物理引擎必须将物体推出与之相交的盒子。然后在下一帧中,你将球体移回盒子中,循环继续。

使用内置物理引擎向球体添加力的另一个好处是,您可以免费获得实际生活中的运动。你不需要做任何额外的工作。

最新更新