Unity - GetMouseButtonDown时沿x轴改变方向

时间:2016-04-14 10:56:12

标签: c#

我制作了一种壁垒式游戏,当点击鼠标按钮时,我需要我的角色更换墙壁。我使用重力工作,但它产生了不良影响。因此我现在正在使用transform.position,但现在该字符仅移动一瞬间(我假设transform.position仅在实际点击鼠标按钮时激活)。

如何在鼠标点击上改变方向,而不是仅仅移动一下? 我需要某种while循环,或者我在哪里?

我的课程:

//Variables used by the Player
public int flyingSpeed;
bool rightWall = true;
bool inAir = false;

// Use this for initialization
void Start () {
}

// Update is called once per frame
void Update () {
//Constantly moves the Players position along the Y-axis
    if (inAir == false) {
        if (Input.GetMouseButtonDown (0) && rightWall == true) {
            transform.position += Vector3.left * flyingSpeed * Time.deltaTime;
            rightWall = false;
            inAir = true;
        } else if (Input.GetMouseButtonDown (0) && rightWall == false) {
            transform.position += Vector3.right * flyingSpeed * Time.deltaTime;
            rightWall = true;
            inAir = true;
        }
    }
}

void OnCollisionEnter2D(Collision2D coll) {
    inAir = false;
}

1 个答案:

答案 0 :(得分:0)

Input.GetMouseButtonDown方法仅在单击按钮的第一帧上返回true,因此您的移动操作仅执行一次,这不足以切换墙。

要在墙之间切换,您可以执行以下操作之一:

  1. 通过设置transform.position
  2. ,在点击鼠标时立即移动播放器
  3. 制作一个功能,检查播放器是在右侧还是左侧(让我们的呼叫为WallCheck)。然后在每次单击鼠标时更改rightWall值。然后将其添加到Update方法

    if (WallCheck() != rightWall) transform.position += rightWall ? Vector3.left : Vector3.right * flyingSpeed * Time.deltaTime;