Все работает отлично, но я не могу найти способ реализовать столкновение.Java OpenGL 3D Collision
Однако, я уже создал систему столкновений с ограничивающей коробкой, мне также нужна идеальная система столкновений (столкновение на вершине).
Вот моя попытка при столкновении с использованием хитбокса сеткой Контуров реальной сетки:
String[] faceName = entity.getHitboxFaces(); //Gets all the faces from the mesh******
Vector3f[] verts = entity.getHitboxVertices(); //Gets all the vertices******
//Compiles each cube into a list******
for (int i = 0; i < faceName.length;) {
List <Vector3f> tmpVerts = new ArrayList <Vector3f>();
for (int z = 0; z < 6; z++) {
String[] currentFace = faceName[i].split(",");
tmpVerts.add(verts[Integer.parseInt(currentFace[0]) - 1]);
tmpVerts.add(verts[Integer.parseInt(currentFace[1]) - 1]);
tmpVerts.add(verts[Integer.parseInt(currentFace[2]) - 1]);
tmpVerts.add(verts[Integer.parseInt(currentFace[3]) - 1]);
i++;
}
xmin = 0;
ymin = 0;
zmin = 0;
xmax = 0;
ymax = 0;
zmax = 0;
//Gets the bounding boxes of each cube******
for (Vector3f v: tmpVerts) {
if (v.x < xmin) {
xmin = v.x;
}
if (v.y < ymin) {
ymin = v.y;
}
if (v.z < zmin) {
zmin = v.z;
}
if (v.x > xmax) {
xmax = v.x;
}
if (v.y > ymax) {
ymax = v.y;
}
if (v.z > zmax) {
zmax = v.z;
}
}
//Scales it to the objects scale******
xmin *= scale;
ymin *= scale;
zmin *= scale;
xmax *= scale;
ymax *= scale;
zmax *= scale;
//Checks if the point is in the cube******
if (px >= xmin + (entity.getPosition().x) && px <= xmax + (entity.getPosition().x) && py >= ymin + (entity.getPosition().y) && py <= ymax + (entity.getPosition().y) && pz >= zmin + (entity.getPosition().z) && pz <= zmax + (entity.getPosition().z)) {
hit = true;
}
}
Я предпочел бы не иметь систему Hitbox так, если есть другой (рабочий) способ, скажи, пожалуйста, ,
Пример моей проблемы.