2016-04-11 18 views
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.

+0

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) –

+0

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. –

+0

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

cevap

1

aşağıdaki adımları yapın:

  1. İlk çek senin mermi görüntü tüm görüntülerin üzerine çizmek düzgün
  2. deneyin belirmesini. Draw yönteminizin son bölümüne koyun.
  3. Eğer hala orada değilse, tüm spriteBatch.Draw öğelerinizi yorumlamaya çalışın ve merminizin çekilişini bırakın. Eğer varsa, çiziminizdeki mantığınızı kontrol etmeyi deneyin. Bazı görüntüler çakışıyor olabilir.