继续沿与上次输入相同的方向移动

时间:2016-08-25 14:54:03

标签: c# unity3d

我正在开发我的宇宙飞船游戏。我已经做了很多事情,但现在我遇到了一个问题。游戏控制由sidekiq -C path/to/sidekiq.yml -d (-e environment)制作。

我现在要做的是,一旦我拿下W键的较小部分,让玩家继续向同一方向移动或从其他键移动。我希望玩家继续朝着与上次输入相同的方向移动,如果玩家想要改变方向,他需要点击另一个按钮,然后它将开始向另一个方向移动。我自己尝试了但是我没有成功。

classify

1 个答案:

答案 0 :(得分:0)

发生了这种情况,因为Input.GetAxis("Horizontal")Input.GetAxis("Vertical")在未按下按键时值为0。

FixedUpdate()中的代码更改为:

void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal");
    float moveVertical = 0f;

    if (Input.GetAxisRaw("Vertical") != 0f) 
    {
        moveVertical = Input.GetAxisRaw("Vertical");

        rb.velocity = transform.forward * moveVertical * speed;
    }

    transform.Rotate(0.0f, moveHorizontal * RotSpeed * Time.deltaTime, 0.0f);
    rb.position = new Vector3(Mathf.Clamp(rb.position.x, boundary.xMin, boundary.xMax), 0.0f, Mathf.Clamp(rb.position.z, boundary.zMin, boundary.zMax));
    rb.AddForce(transform.forward * Force);
}

我使用GetAxisRaw因为它在按下时给出的值为-1或1,在没有时为0。