0
侵入者が消えるので、私のコードの弾丸が侵略者を射撃しているようです。しかし、タンクから弾丸が出て侵略者に当たることはありません。私は弾丸がどこに行ったかわからない。C#XNAスペースインベーダー。タンクの弾丸が表示されない
弾丸のための初期化コード:
recBullet = new Rectangle();
isRight = true;
isShotFired = false;
isBulletOut = false;
isBulletAlive = true;
アップデートコード:
KeyboardState keys = Keyboard.GetState();
if ((keys.IsKeyDown(Keys.Space) == true || oldState.IsKeyUp(Keys.Space) == false))
{
recBullet.X = recTank.X + recTank.Width/2;
recBullet.Y = screenHeight;
isShotFired = true;
isBulletAlive = true;
}if (isShotFired)
{
recBullet.Y -= 10;
}
if (recBullet.Y <= 0)
{
isShotFired = false;
}
for (int x = 0; x < numberOfXInvaders; x++)
{
for (int y = 0; y < numberofYInvaders; y++)
{
if (isBulletAlive)
{
if (recBullet.Intersects(recInvader[x, y]))
{
if (!isInvaderDead[x, y])
{
isInvaderDead[x, y] = true;
isBulletAlive = false;
}
}
}
}
}
oldState = keys;
ドローコード:
if (isBulletAlive)
{
spriteBatch.Draw(texBullet, recBullet, Color.Green);
}
私はこれを取得することができます任意の助けに感謝!ありがとう。
はあなたのtextBulletのためのあなたの資産を正しくロードされていることを確認した場合。また、spriteBatch.Drawを呼び出すメソッドを表示できますか? (オーバーライド描画から呼び出さない場合) –
描画されている可能性もありますが、背景(その他のもの)は箇条書きの上に表示され、UI上で気付かない可能性があります。 –
もう一つの可能性は、弾丸が動きすぎて見ることができないことです。 'recBullet.Y - = 10;'ステートメントでより低い値を試すことができます。更新コードが毎回呼び出されると、vsyncをオンにして600px /秒で移動します。オフの場合はずっと速くなります。 – Tone