In che modo viene generalmente gestito il rilevamento e il movimento delle collisioni in un FPS, in particolare gestendo lievi variazioni dell'altezza del suolo come le scale (sia in pendenza che in discesa)?
In che modo viene generalmente gestito il rilevamento e il movimento delle collisioni in un FPS, in particolare gestendo lievi variazioni dell'altezza del suolo come le scale (sia in pendenza che in discesa)?
Risposte:
Entità tipicamente rappresentate da una capsula (cilindro con sfere alle estremità) contro la geometria del mondo (o una rete di collisione semplificata) per la collisione con il mondo.
Le scale di solito sono o non si scontrano con una rampa invisibile, o al di sotto di una certa altezza di solito si ottiene un sollevamento come effetto collaterale della risoluzione delle collisioni. (otterrai la compenetrazione con il movimento come parte della dimensione del gradino e la risoluzione lo esporrà verso l'alto come il piano più vicino)
Penso che sia così che funziona Unreal 3, ma potrei sbagliarmi. Ricordo di aver visto una gerarchia di limiti in Source, ma non ricordo se fosse solo per il combattimento. a prescindere, le capsule sono semplici e veloci
In Unity 3D, il modo più semplice è avere il controller in prima persona. Di solito il personaggio deve saltare se l'altezza del gradino è superiore all'offset del gradino. Ma un altro modo per farlo è aggiungere un collettore di scatole e ruotarlo in modo che il personaggio possa sfogliare facilmente le scale, come se fosse una rampa.
La risposta di Brady è buona, ma se vuoi un modo bizzarro per farlo, puoi semplicemente lanciare un raggio sulla geometria di collisione del terreno, capire quale triangolo colpisce e quindi utilizzare una media ponderata dell'altezza dei vertici del triangolo per capire l'altezza del terreno.