Integrei com sucesso a biblioteca Bullet Physics no meu sistema de entidade / componente. As entidades podem colidir umas com as outras. Agora eu preciso permitir que eles colidam com o terreno, que é finito e parecido com um cubo (pense no InfiniMiner ou no clone Minecraft ). Eu só comecei a usar a biblioteca Bullet Physics ontem, então talvez esteja perdendo algo óbvio.
Até agora, estendi a RigidBody
classe para substituir a checkCollisionWith(CollisionObject co)
função. No momento, é apenas uma simples verificação da origem, sem usar a outra forma. Vou repetir isso mais tarde. Por enquanto, fica assim:
@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;
}
Isso funciona muito bem, tanto quanto detecta quando ocorrem colisões. No entanto, isso não lida com a resposta de colisão. Parece que a resposta de colisão padrão é mover os objetos em colisão para fora das formas uns dos outros, possivelmente seus AABBs.
No momento, a forma do terreno é apenas uma caixa do tamanho do mundo. Isso significa que as entidades que colidem com o terreno simplesmente disparam para fora dessa caixa de tamanho mundial. Portanto, fica claro que eu preciso modificar a resposta à colisão ou criar uma forma que se adapte diretamente à forma do terreno. Então, qual é a melhor opção e como implementá-la? Talvez haja uma opção em que não estou pensando?
Note-se que o terreno é dinâmico e frequentemente modificado pelo jogador.