Unity C#bool不断变为现实

时间:2013-12-30 17:17:41

标签: c# unity3d

对于发生的事情非常困惑。我将发布代码,但只是我的游戏的简短描述是太空入侵者混音。我有一个当前在X轴上移动的CPU,当它到达-900f时停止,然后在Z轴上向下移动。现在我试图停止向下移动Z轴(完成),然后沿着相反的X方向移动先前进入(在每次更新时X轴移动7f之前,我希望它每次移动-7f从那时起更新)。我的问题是,现在当它到达指定的Z轴停止时,然后在X轴上移动,它开始移动,但随后在X轴上继续回到-900。在我下面的代码中,你会看到我有程序告诉transform.position.x等于-900f,但是,我把它放在一个if循环中,只有bool值为true才运行该代码,我设置为false在我希望程序忽略显示x位置到-900f的代码之后。

public class InvaderController : MonoBehaviour {

public float resistance;
public int resistcount;
public int numhits;
public float newX; //set to public so I can see it change in Unity, will go private
float newZ;
public float invaderSpeed; //this is set to 7 in Unity
public GameObject Invader;
Quaternion rotation;
public GameObject explosion;
int expcount;
bool firstxoff = false;
bool test = true;
public GameObject explosion2;



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

void Awake() {
    firstxoff = true;
}

// Update is called once per frame
void Update () {

    if (firstxoff == true)
    {
        firstmove ();
    }

}



void firstmove()
{
    Vector3 newPos = transform.position;
    newPos.x -= invaderSpeed;
    //newX = newPos.x;
    transform.position = newPos;
    if (newPos.x < -900f) 
    {
        Vector3 newPosZ = transform.position;
        newPosZ.z -= invaderSpeed;
        float x = -900f;
        newX = x;
        newPosZ.x = newX;
        transform.position = newPosZ;

    }
    moveX1 ();
}

void moveX1()
{
    Vector3 newPos = transform.position;
    if (newPos.z < 500f)
    {
        Vector3 newPosX = transform.position;
        newX = newX + invaderSpeed;
        float z = 500f;
        newZ = z;
        newPosX.z = newZ;
        newPosX.x = newX;
        transform.position = newPosX;

        if (newX  > 800f)
        {
        firstxoff = false;
        }
    }
}

void FixedUpdate() //need to figure out how to run update first, then this.
{
    //firstxoff = false;
}

1 个答案:

答案 0 :(得分:1)

第一次z小于500,你的x会增加7,对吗?

newX = newX + invaderSpeed;

所以你从-900到-893。 -893不大于800,因此firstxoff不设置为false。然后再次调用firstmove方法。

newPos.x -= invaderSpeed;

X现在是-893减去7,即-900。这个循环将永远重复。 Z将始终为500,x将始终为-900。

希望您能找到解决方案。如果没有,请告诉我。