0
göstermiyor Kodlarımdaki mermiler, işgalciler ortadan kaybolduğundan, işgalcilerde ateş ediyor gibi görünüyor. Ancak tanktan çıkan ve işgalcilere isabet eden mermi yoktur. Merminin nereye gittiğini bilmiyorum. Merminin içinC# XNA Uzay İstilacıları. Tank mermi
başlatma Kodu:
recBullet = new Rectangle();
isRight = true;
isShotFired = false;
isBulletOut = false;
isBulletAlive = true;
Güncelleme Kod:
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;
Çizim Kodu: Ben bunun için her türlü yardıma takdir
if (isBulletAlive)
{
spriteBatch.Draw(texBullet, recBullet, Color.Green);
}
! Teşekkürler.
1 doğru bir şekilde textBullet Öğenizi yüklü emin olun tekrar adım adım 2 ve 3 başarısız olursa. Ayrıca spriteBatch.Draw'ı çağırdığınız yöntemi de gösterebilir misiniz? (eğer geçersiz kılmak için onu çağırmıyorsanız) –
Ayrıca çizilme olasılığı vardır, ancak arka plan (diğer şeyler) mermilerinizin üstünde yer alır, böylece UI'de fark edemezsiniz. –
Başka bir olasılık, mermilerin görülmesi için çok hızlı hareket etmeleridir. RecBullet.Y - = 10; 'ifadenizde daha düşük değerleri deneyebilirsiniz. Güncelleme kodunuz her güncellemede çağrılırsa, vsync açıkken saniyede 600 piksel/sa hızında veya kapalıysa çok daha hızlı hareket ederlerdi. – Tone