
GN (Member)
Guru
    
Messaggi: 772
Iscritto: 30/04/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 |
Dim MinNemico As Vector3 Dim MaxNemico As Vector3 Me.BoundingBox(Nemici(i), MinNemico, MaxNemico) Dim Colpito As Boolean = False Dim rect As New RectangleF(MinNemico.X, MinNemico.Z, MaxNemico.X - MinNemico.X, MaxNemico.Z - MinNemico.Z) For pti As Integer = 0 To 100 Dim pt As New PointF(Giocatore.pos.X + Math.Sin(a) * pti, Giocatore.pos.Z + Math.Cos(a) * pti) If rect.Contains(pt) Then Colpito = True End If Next If Colpito = True Then Nemici.RemoveAt(i) 'eseguo un suono, controllo se il livello è finito, ecc. End If
|
|