He integrado con éxito la biblioteca Bullet Physics en mi sistema de entidad / componente. Las entidades pueden chocar entre sí. Ahora necesito permitirles colisionar con el terreno, que es finito y en forma de cubo (piense en InfiniMiner o en el clon Minecraft ). Apenas comencé a usar la biblioteca Bullet Physics ayer, así que quizás me estoy perdiendo algo obvio.
Hasta ahora he extendido la RigidBody
clase para anular la checkCollisionWith(CollisionObject co)
función. Por el momento, es solo una simple verificación del origen, sin usar la otra forma. Voy a repetir eso más tarde. Por ahora se ve así:
@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;
}
Esto funciona muy bien, en cuanto a detectar cuándo ocurren las colisiones. Sin embargo, esto no maneja la respuesta de colisión. Parece que la respuesta de colisión predeterminada es mover los objetos en colisión fuera de las otras formas, posiblemente sus AABB.
Por el momento, la forma del terreno es solo una caja del tamaño del mundo. Esto significa que las entidades que colisionan con el terreno simplemente se disparan fuera de esa caja de tamaño mundial. Entonces, está claro que necesito modificar la respuesta de colisión o necesito crear una forma que se adapte directamente a la forma del terreno. Entonces, ¿qué opción es mejor y cómo hago para implementarla? ¿Quizás hay una opción en la que no estoy pensando?
Cabe señalar que el terreno es dinámico y frecuentemente modificado por el jugador.