2012-01-23 14 views
5

Ho una vasta gamma di voxel, a la Minecraft. Il giocatore/i nemici sono in questa griglia. Non ho idea di come fare questo tipo di rilevamento delle collisioni. Nota, questo NON è un oggetto mobile dinamico rispetto a un oggetto mobile dinamico, questo è oggetto mobile rispetto a terra/parete/soffitto fissi.Rilevatore/risposta di collisione voxel

Non ho alcun problema con il rilevamento, è la risposta che non so come fare.

Quello con cui devo lavorare: posizione del giocatore, velocità e boundingbox e una serie di voxel 1x1x1 che circondano il lettore.

+1

si potrebbe avere un po 'più di fortuna chiedendo su http: //gamedev.stackexchange. it/ – Holger

+0

Mi è stato permesso di copypaste questo in una nuova domanda? – khyperia

+0

@khyperia: l'ho segnalato per essere migrato da un mod. –

risposta

6
  • calcolare il prodotto scalare di la velocità del giocatore e il unitsurface normal del voxel collisione (rivolta verso l'esterno).
  • Scala (moltiplica) la superficie dell'unità normale con questo valore.
  • Sottrarre il risultato dalla velocità del giocatore.

Questo vi darà la "slitta contro il muro" l'effetto che la maggior parte dei giochi impiegano (senza alcun trigonometria problematica)

+0

Che dire dire in quale direzione deve andare il giocatore, quale piano di superficie è il giocatore che si interseca? La parte superiore, parte, cosa? – khyperia

+0

Se hai problemi a determinarlo, ti consiglio di postare una nuova domanda. Alcuni potrebbero essere in grado di pubblicare una risposta migliore di quanto potrei. –

+2

Solo un'aggiunta, se hai anche un moltiplicatore diverso, in cima al prodotto punto, per materiale nel voxel, quindi stai modellando l'attrito e puoi avere blocchi più sdrucciolevoli o più ruvidi. –