Ho integrato con successo la libreria Bullet Physics nel mio sistema di entità / componente. Le entità possono scontrarsi. Ora devo consentire loro di scontrarsi con il terreno, che è finito e simile a un cubo (pensa a InfiniMiner o al suo clone Minecraft ). Ho iniziato a utilizzare la libreria Bullet Physics solo ieri, quindi forse mi manca qualcosa di ovvio.
Finora ho esteso la RigidBody
classe per sovrascrivere la checkCollisionWith(CollisionObject co)
funzione. Al momento è solo un semplice controllo dell'origine, non usando l'altra forma. Lo farò più avanti. Per ora sembra così:
@Override
public boolean checkCollideWith(CollisionObject co) {
Transform t = new Transform();
co.getWorldTransform(t);
if(COLONY.SolidAtPoint(t.origin.x, t.origin.y,t.origin.z)){
return true;
}
return false;
}
Funziona alla grande, per quanto riguarda il rilevamento di collisioni. Tuttavia, questo non gestisce la risposta alla collisione. Sembra che la risposta di collisione predefinita sia spostare gli oggetti in collisione al di fuori delle forme altrui, possibilmente i loro AABB.
Al momento la forma del terreno è solo una scatola delle dimensioni del mondo. Ciò significa che le entità che si scontrano con il terreno sparano semplicemente all'esterno di quella casella di dimensioni mondiali. Quindi è chiaro che o ho bisogno di modificare la risposta alla collisione o ho bisogno di creare una forma che si adatta direttamente alla forma del terreno. Quindi quale opzione è la migliore e come posso implementarla? Forse c'è un'opzione a cui non sto pensando?
Va notato che il terreno è dinamico e frequentemente modificato dal giocatore.