所以我正在研究这个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);
}
答案 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;