2014-10-09 48 views
-1

有一个问题与更先进的物理我很确定这个问题只是与这一行代码,因为Y值。所以当我试图在下降时移动我的角色时,他通常会左右移动,但是他的下降会变慢。重力问题使用Farseer物理

body.LinearVelocity = new Vector2(1,0) 

有没有办法只改变这个x的值?或者有什么办法可以防止滑动,并且限制applyforce()或applylinearimpulse()的速度?

回答

1

通过将线速度设置为1,0,可以使角色的水平速度为1,垂直速度为0.因此,您可以有效地防止坠落。

下面的代码会做你期望的,因为它保留了垂直速度。

body.LinearVelocity = new Vector2(1, body.LinearVelocity.y);

在某些(大多数)情况下,最好的力或冲动适用于使用本body.Apply...字符适用于单个帧力和先知会自动计算正确的速度。请注意,每帧增加相同的力量或冲动会使移动速度加快。

+0

它不会停止在y轴上的移动。我知道,我应该猜想,对于物理学家来说,te开发者不这么认为。感谢您的帮助 – KGSB 2014-10-09 23:31:13

+0

它停止了迄今为止计算的运动。但是,最后一步是施加重力。所以这就是为什么它减慢,而不是完全停止:)。 – 2014-10-10 09:45:52