如何保持gameObject向前移动,但是当触发向后移动时,则返回向前移动

时间:2015-12-15 02:40:16

标签: c# unity3d 2d

我是Unity的新手,如果这个问题很基础,请提前抱歉,但我尝试通过网上查找类似问题并获得答案。我有一个具有向前移动的游戏对象,当变量设置为 true 我希望该游戏对象向后移动X个单位,但是当设置为 false 时我希望gameObject返回到之前的运动。我编码的内容使得gameObject向前移动,但是当由变量触发时它不会向后移动。你能告诉我我做错了什么吗?

public MonsterTarget monTarget;
public BandageTarget banTarget;

public Transform target;
public float speed;
public float backSpeed;

public bool back;


// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
    back = monTarget.targetMove;

    if (target.position.x > -11)
    {
        target.Translate(speed, 0, 0);

        if (back == true)
        {
            Debug.Log("MOVE BACK");
            target.Translate(backSpeed, 0, 0);
        }
        monTarget.targetMove = false;
    }

}

1 个答案:

答案 0 :(得分:0)

我在C#中知道bool的默认值为false,你是否在if ( back == true )语句的某处开始设置为true?

此外,target.Translate( speed, 0, 0 );正在运行时Target.Translate ( backspeed, 0 , 0 );正在运行,可能会相互抵消。确保您的变量已分配,并可能尝试此操作。

if ( back == true) {
    target.Translate( backspeed , 0 , 0 );
} else {
    target.Translate( speed, 0 , 0 )
}