强制玩家在一定时间之前进入GetKeyUp

时间:2019-03-05 16:54:38

标签: c# unity3d

所以我正在研究这个2D运行器,并且正在使用transform.position函数,但是我注意到这使Unity中的重力无法工作。我仍然希望它能正常工作,所以我已经设置了这个人造重力(请参见脚本),但是如果按住W键,该人可以永远飞行。我只希望这个人能够在空中停留一秒钟。我该怎么做?

if(Input.GetKeyDown(KeyCode.W) && transform.position.y < 0.1)
{
    target_position = new Vector2(transform.position.x, transform.position.y + jump_force);
}

//gravity
if (Input.GetKeyUp(KeyCode.W))
{
    target_position = new Vector2(transform.position.x, transform.position.y - jump_force);
}

2 个答案:

答案 0 :(得分:0)

所以我知道了。

 if(Input.GetKeyDown(KeyCode.W) && transform.position.x > max_left && transform.position.x < max_right && transform.position.y < 0.1)
    {
        target_position = new Vector2(transform.position.x, transform.position.y + jump_force);
        Invoke("normal_position", jump_timer);

    }

}

public void normal_position()
{
    target_position = new Vector2(transform.position.x, 0);
}

跳跃计时器是判断您要花费多长时间直到物体返回地面。

答案 1 :(得分:-1)

您实际上并没有实现任何引力,因为您正在等待KeyUp事件。不要等做吧。

if (Input.GetKeyDown(KeyCode.W))
{
    // Do your movement stuff
}

// Just implement gravity here
transform.position = transform.position - Vector3.Down;