布尔变量使重置保持统一

时间:2019-01-15 20:14:29

标签: c# unity3d

简而言之,每次绕着我的更新循环,变量“ direction”就从true开始,直到我将其更改为false。但是没有什么可以将其更改为true。

在代码下面,您可以看到我的Debug.Logs来检查它的值,当带有登录名的if语句为true时,第一个日志始终输出true,第二个日志输出false。我不确定为什么在循环之间将其设置为true。我是不是很蠢,或者我做事有问题吗?

有关更多信息,该变量控制着我的游戏对象行进的水平方向。为true时,对象将沿x轴正向移动,否则为false。

private bool direction = true;
public int minX;
public int maxX;

public int changeScene;

// Use this for initialization
void Awake() {
    instance = this;
}

void Start () {
    reference = gameObject;
    StartCoroutine (WaitThenDestroy ());
}

// Update is called once per frame
void Update () {
    this.transform.Translate (new Vector3 (0, speed * movement.gameSpeed, 0));
    moveHorizontal();
}

private void moveHorizontal() {
    if (direction = true) {
        this.transform.Translate (new Vector3 (speed * movement.gameSpeed, 0, 0));
    } else {
        this.transform.Translate (new Vector3 (-speed * movement.gameSpeed, 0, 0));
    }

    // Change horizontal direction
    Vector3 p = this.transform.position;
    Debug.Log (p.x);
    if (p.x > maxX) {
        direction = true;
        Debug.Log ("WHOOP");
    } else if (p.x < minX) {
        Debug.Log (direction);
        direction = false;
        Debug.Log (direction);
    }
}

1 个答案:

答案 0 :(得分:3)

您正在if语句中分配值:

if (direction = true)

应该(已编辑以应用评论者的建议。最佳做法是在没有==运算符的情况下检查布尔值)

if (direction)