0

クラス用に XNA で初めてのゲームを作成しています。モンスターを自動で左右に動かそうとしています。今のところモンスターは全部で4体。私はそれらを画面内で左に動かしてから右に動かそうとしています。

            //Monster movements
        for (int i = 0; i < numOfMonster; i++)
        {

            if (destinationMonster[i].X >= screenWidth - 60)
            {
                while(destinationMonster[i].X != -10)
                    moveLeft = true;
            }
            else
            {
                moveRight = true;
            }

            if (moveLeft)
            {
                int temp = destinationMonster[i].X;
                temp = destinationMonster[i].X - monsterSpeed;

                //This prevents the object passing the screen boundary
                if (!(temp < -10))
                {
                    destinationMonster[i].X = temp;
                }

                moveLeft = false;
            }

            if (moveRight)
            {
                int temp = destinationMonster[i].X;
                temp = destinationMonster[i].X + monsterSpeed;

                //This prevents the object passing the screen boundary
                if (!(temp > screenWidth - 50))
                {
                    destinationMonster[i].X = temp;
                }
                moveRight = false;
            }
        }
4

1 に答える 1

0

最初の問題はwhileステートメントです。X 値を変更していないため、一度入力すると終了しません。私だったらbool、それぞれのモンスターに対応する配列変数を用意します。また、条件を変更して、モンスターが両端の範囲に到達したら、ブール値の変更をトリガーします。このようなもの。

if (destinationMonster[i].X >= screenWidth - 60)
{
    moveRight[i] = false ;
}
else if (destinationMonster[i].X <= -10)
{
    moveRight[i] = true ;
}
于 2012-09-22T02:55:54.047 に答える