目前我正在制作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));
答案 0 :(得分:0)
你的方向向量是什么,它是否正常化?由于非标准化向量的乘法可能相当危险。你有更多的剧本要展示吗?
编辑:您应该始终在FixedUpdate
循环(link)中执行物理操作。
答案 1 :(得分:0)
好的,我可以解决这个问题。我的问题是我只做过一次AddForce。 AddForce代码仅在一个帧中执行。我添加了一个时间,我倒计时来定义短跑运动的时间长度!
答案 2 :(得分:0)
问题可能是您使用的力很大,今天我在搞弄一些物理学,并意识到甚至100 几乎的力看起来都是瞬间。尝试减小力数,看看是否有帮助。我刚刚测试了一个较小的数字,但这是行不通的。