Sto lavorando a un gioco basato su tessere 3D e sto utilizzando il rilevamento delle collisioni AABB. Per ogni cubo che il giocatore si sta intersecando, trovo l'asse lungo il quale il giocatore sta intersecando il cubo, e spingo il giocatore fuori dal cubo lungo quell'asse.Sliding AABB scorrevole - rimanere bloccato sui bordi
A seconda dell'ordine in cui i cubi sono registrati, ciò può causare problemi durante lo scorrimento lungo il bordo di più cubi. Ho creato un diagramma che dovrebbe spiegare il problema:
- Freccia # 1 è il tentativo di movimento del giocatore. Le altre frecce sono la risposta di collisione.
- Nel diagramma di sinistra, la collisione viene prima verificata rispetto al cubo destro, facendo in modo che il giocatore venga spinto a sinistra, e quindi verso l'alto. (errato)
- Nel diagramma di destra, la collisione viene prima verificata contro il cubo di sinistra, facendo in modo che il giocatore venga spinto verso l'alto, a quel punto il giocatore non interseca più l'altro cubo. (buona)
Tutte le idee su ciò che il modo più efficace per risolvere questo potrebbe essere? O qualche modo migliore per gestire la risposta alla collisione?
Grazie.
controllare Forse tutte le collisioni e prendere nota del tempo (o la distanza) della collisione. Applicare solo la collisione che si verifica al più presto. Opzionalmente, continua il processo per il resto del time-step. –
Quindi, se ho ordinato tutti i cubi che il giocatore stava intersecando per distanza dal giocatore, e quindi considerato uno alla volta, potrebbe funzionare. Sto pensando che sarebbe meglio evitare di dover ordinare le cose ogni fotogramma, ma non sono sicuro che sarebbe molto importante dal momento che il giocatore potrebbe essere in collisione solo con un massimo di? 7? blocchi alla volta. Pensi che ci sia qualcosa di cui preoccuparsi? – Jeff