Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET][Direct3D9]Algoritmo per sparo
Forum - C# / VB.NET - [VB.NET][Direct3D9]Algoritmo per sparo

Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Segnala al moderatore
Postato alle 22:07
Giovedì, 13/10/2011
Allora continuo a rompervi le scatole con il mio gioco in VB.NET con DirectX (questo dovrebbe essere l'ultimo post al riguardo perchè lo ho quasi finito); stavolta il problema è questo: visto che non sono riuscito a gestire gli spari con IntersectsMesh, sto cercando di risolvere il problema postato qui http://www.pierotofy.it/pages/extras/forum/16/1030938-%5Bv ... tramite le BoundingBox.
Ho scritto questo codice, ma non funziona (a volte i nemici non vengono eliminati, mentre altre volte spariscono tutti); premetto che:
1)la variabile "a" è l'angolo del giocatore;
2)la struttura "oggX" è nel topic che ho linkato;
3)la funzione BoundingBox calcola la BoundingBox di una mesh restituendo un angolo in alto a sinistra e uno in basso a destra (non sto a riportarla perchè sono sicuro che funzioni, visto che le collisioni vengono gestite correttamente tramite lo stesso metodo)
4)il tutto si trova all'interno di un for che ha come indice "i" e gestisce ogni nemico presente nella scena.
Ecco il codice:
Codice sorgente - presumibilmente VB.NET

  1. Dim MinNemico As Vector3
  2.                     Dim MaxNemico As Vector3
  3.                     Me.BoundingBox(Nemici(i), MinNemico, MaxNemico)
  4.                     Dim Colpito As Boolean = False
  5.                     Dim rect As New RectangleF(MinNemico.X, MinNemico.Z, MaxNemico.X - MinNemico.X, MaxNemico.Z - MinNemico.Z)
  6.                     For pti As Integer = 0 To 100
  7.                         Dim pt As New PointF(Giocatore.pos.X + Math.Sin(a) * pti, Giocatore.pos.Z + Math.Cos(a) * pti)
  8.                         If rect.Contains(pt) Then
  9.                             Colpito = True
  10.                         End If
  11.                     Next
  12.                     If Colpito = True Then
  13.                         Nemici.RemoveAt(i)
  14.                         'eseguo un suono, controllo se il livello è finito, ecc.
  15.                     End If


PM