そのため、学校向けの XNA ゲームを開発する必要があり、スペース インベーダーは素晴らしいものだと思いました。しかし今、私は問題で立ち往生しています。私はList
別のクラスの「エイリアン」でいっぱいです。そして、毎秒20ピクセル右に移動し、画面の右側に触れたときに下降させたい(問題ではない)。しかし、壁に触れるとすぐに反対方向(左)に移動したい. ここに問題があります。壁に触れるとすぐに、20 ピクセル移動して方向を変え、20 ピクセル戻って再び方向を変えます。これが繰り返され続けます。では、問題はどこにあるのでしょうか。エイリアンの 1 人が画面に触れたかどうかを事前に確認する必要があると思いますが、それを達成する方法がわかりません。非常にイライラするので、あなたの 1 人が私を助けてくれると思いました!
更新方法を含めました
if (xPos % step == 0)
{
if (!isDescending)
{
for (int k = 0; k < sprites.Count; k++)
{
Sprite sprite = sprites[k];
if (touchedRight) sprite.position.X += step;
else sprite.position.X -= step;
}
for (int k = 0; k < sprites.Count; k++)
{
Sprite sprite = sprites[k];
bool hitLeft = sprite.position.X == 0;
bool hitRight = sprite.rect.Right == screenWidth;
if ((hitLeft) || (hitRight))
{
touchedRight = !touchedRight;
isDescending = true;
}
}
}
else
{
isDescending = false;
for (int k = 0; k < sprites.Count; k++)
{
sprites[k].position.Y += sprites[k].rect.Height;
}
}
}
// CheckCollision(alienBounds, k-1);
// sprite.rect = new Rectangle((int)sprite.position.X, (int)sprite.position.Y, 20, 20);
// alienBounds = sprite.rect;
xPos += 1;