Unity3D:与“翻译”对象发生碰撞问题

时间:2014-06-12 11:02:50

标签: unity3d collision-detection fsm

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

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

非常感谢你的帮助......

此致

安东尼

我的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

1 个答案:

答案 0 :(得分:5)

由于你的球体是一个刚体并且不是运动学的,你不应该直接翻译它。相反,您可以使用Rigidbody.AddForce添加力来移动它。

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

直接转换对象位置的问题在于它不使用物理引擎物理移动对象。然后,物理引擎必须将对象从与其交叉的框中推出。然后在下一帧中将球体移回框中,循环继续。

使用内置物理引擎为球体添加力量的另一个好处是,您可以免费获得基本上真实的运动。你不需要做任何额外的工作。