【问题标题】:How to keep gameObject moving forward, but when triggered move backwards, then return to forward movement如何保持游戏对象向前移动,但触发后向后移动,然后返回向前移动
【发布时间】:2015-12-15 02:40:15
【问题描述】:

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

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;
    }

}

【问题讨论】:

    标签: c# unity3d 2d


    【解决方案1】:

    我知道在 C# 中 bool 的默认值为 false,您是否将其设置为 true 以便 if ( back == 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 )
    }
    

    【讨论】:

    • 你可以省略 '== true' 因为 back 本身就是一个布尔值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多