好的,所以我正在创建一个简单的平台游戏,并且我在努力使玩家游戏对象跳跃。 问题是,当我按空格键时,我的游戏对象只是向上移动然后向下移动,而根本看起来并不像是跳跃。据我所知,它应该模拟一个脉冲,我应该能够看到物体向上移动,但是我不知道。
void Update ()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
rigidbody2d.AddForce(Vector2.up * 50f, ForceMode2D.Impulse);
}
}
此外,我尝试从一些教程中复制代码,这些代码虽然效果很好,但对我来说却行不通。
答案 0 :(得分:0)
正如@bolkay所说,您可以更改刚体的速度,但是,如果遇到此问题,您应该遵循unity的建议,而不是直接修改它,并且当您掌握更多技能时就可以开始操纵速度。速度文档: https://docs.unity3d.com/ScriptReference/Rigidbody-velocity.html
说,以速度跳跃:
rb.velocity=rb.velocity+transform.up*jumpPower; //easier to predict
rb.velocity= transform.velocity*transform.up*jumpPower
rb.velocity= new vector2(rigidbody2d.velocity.x,jumpPower);//erases your rb's previous y velocity
我认为您正在应用的问题很有效(代码似乎还可以)尝试声明一个float并在运行时使用其值。还要在检查器中检查您的rb的属性。
答案 1 :(得分:0)
您可以尝试使用此解决方案:
rigidbody2d.AddForce(Vector2.up * 50f, ForceMode2D.Force);
我将ForceMode2D.Impulse
更改为ForceMode2D.Force
,也许可以用。我也遇到了这个问题-飞起来,不能放下XD