如何在unity2d上编写适当的跳转脚本?刚体.addforce不起作用

时间:2018-09-14 13:36:20

标签: c# unity3d

好的,所以我正在创建一个简单的平台游戏,并且我在努力使玩家游戏对象跳跃。 问题是,当我按空格键时,我的游戏对象只是向上移动然后向下移动,而根本看起来并不像是跳跃。据我所知,它应该模拟一个脉冲,我应该能够看到物体向上移动,但是我不知道。

void Update () 
{
    if (Input.GetKeyDown(KeyCode.UpArrow))
    {
        rigidbody2d.AddForce(Vector2.up * 50f, ForceMode2D.Impulse);
    }

}

此外,我尝试从一些教程中复制代码,这些代码虽然效果很好,但对我来说却行不通。

2 个答案:

答案 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