06/09/11 20:17
GN
Premesso che è il mio primo gioco con DirectX, ho questo problema: sto sviluppando un gioco 3D in cui il giocatore guida un carro armato e deve eliminare altri carri armati presenti nella scena; per ora riesco a muovere il veicolo del giocatore ma non a sparare contro i nemici usando la funzione IntersectsMesh.
Il codice che uso per calcolare se colpisco il nemico è questo, tenendo presente che ho un oggetto "Giocatore" e una List di oggetti "Nemici"; entrambi rappresentano strutture "oggX", mesh ricavate da un file .x (visto che è poco codice posto anche la struttura):
Struttura oggX:
Codice per calcolare l'avvenuto sparo andato a segno (modificato dopo la risposta di Totem) :
Ricordo inoltre che AngoloGiocatore è l'angolo del giocatore a partire dall'asse Z.
Se mi metto in un punto e comincio a girare su me stesso elimino qualche nemico, ma l'angolo da cui sparo è completamente sbagliato.
Sapreste aiutarmi? Grazie mille in anticipo.
EDIT: ho postato il progetto così potete vedere il sorgente completo.
EDIT 2: visto che non serve più rimuovo l'allegato per liberare spazio nel database.
Il codice che uso per calcolare se colpisco il nemico è questo, tenendo presente che ho un oggetto "Giocatore" e una List di oggetti "Nemici"; entrambi rappresentano strutture "oggX", mesh ricavate da un file .x (visto che è poco codice posto anche la struttura):
Struttura oggX:
Public Structure oggX Public pos As Vector3 Public rot As Vector3 Public mesh As Mesh Public numX As Integer Public tex() As Texture Public mat() As Material End Structure
Codice per calcolare l'avvenuto sparo andato a segno (modificato dopo la risposta di Totem) :
Dim PuntoInizio As Vector3 = Giocatore.pos Dim Direzione As New Vector3(Math.Cos(a), 0, Math.Sin(a)) If t.Item(Key.Space) = True Then For i As Integer = 0 To Nemici.Count() - 1 If Nemici.Item(i).mesh.Intersect(PuntoInizio, Direzione) = True Then Nemici.RemoveAt(i) Exit For End If Next End If
Ricordo inoltre che AngoloGiocatore è l'angolo del giocatore a partire dall'asse Z.
Se mi metto in un punto e comincio a girare su me stesso elimino qualche nemico, ma l'angolo da cui sparo è completamente sbagliato.
Sapreste aiutarmi? Grazie mille in anticipo.
EDIT: ho postato il progetto così potete vedere il sorgente completo.
EDIT 2: visto che non serve più rimuovo l'allegato per liberare spazio nel database.
Ultima modifica effettuata da GN 18/10/11 20:03
aaa