如何使用AddForce在Unity 4.3 2D中平滑移动?

时间:2014-03-16 16:31:15

标签: unity3d 2d game-engine game-physics

目前我正在制作2D平台,工作进展顺利。但是有一个问题我无法摆脱。

玩家可以使用短划线,这样可以使玩家在他正在寻找的方向上快速移动。我的问题是,玩家游戏对象即时出现在目标位置......就像传送一样。

我使用AddForce函数移动游戏对象。在使用AddForce进行跳跃时,它的效果非常好,我可以顺利跳跃运动。

短划线和跳跃之间唯一不同的是,在跳跃时,我将力施加到y轴,然后施加到虚线到x轴。改变力量不会影响距离的移动。

有没有人知道我做错了什么?

// Dash
rigidbody2D.AddForce (new Vector2((dashSpeed * direction), 0));
// Jump
rigidbody2D.AddForce (new Vector2(0, jumpForce));

最佳, Verdemis:)

编辑:我目前无法访问我的项目,但我会尽力向您展示我的工作。

注意:dashSpeed是一个浮点值,目前类似于3500 和方向包含1或-1,具体取决于玩家的方向。 Dash代码是Update方法的一部分。

// Dash
if(Input.GetKeyDown(dashKey))
rigidbody2D.AddForce (new Vector2((dashSpeed * direction), 0));

3 个答案:

答案 0 :(得分:0)

你的方向向量是什么,它是否正常化?由于非标准化向量的乘法可能相当危险。你有更多的剧本要展示吗?

编辑:您应该始终在FixedUpdate循环(link)中执行物理操作。

答案 1 :(得分:0)

好的,我可以解决这个问题。我的问题是我只做过一次AddForce。 AddForce代码仅在一个帧中执行。我添加了一个时间,我倒计时来定义短跑运动的时间长度!

答案 2 :(得分:0)

问题可能是您使用的力很大,今天我在搞弄一些物理学,并意识到甚至100 几乎的力看起来都是瞬间。尝试减小力数,看看是否有帮助。我刚刚测试了一个较小的数字,但这是行不通的。