Fix separating axes for 3D cylinder-face collisions
When checking for lateral surfaces of a cylinder against the points on a face, the axis projection does not remove the cylinder position. This results in the axis pointing to the wrong direction and reports collisions when there shouldn't be.
This commit is contained in:
parent
7c6e85de0d
commit
3f69af9e64
|
@ -1962,7 +1962,7 @@ static void _collision_cylinder_face(const GodotShape3D *p_a, const Transform3D
|
|||
|
||||
// Points of B, cylinder lateral surface.
|
||||
for (int i = 0; i < 3; i++) {
|
||||
const Vector3 &point = vertex[i];
|
||||
const Vector3 point = vertex[i] - p_transform_a.origin;
|
||||
Vector3 axis = Plane(cyl_axis).project(point).normalized();
|
||||
if (axis.dot(normal) < 0.0) {
|
||||
axis *= -1.0;
|
||||
|
|
Loading…
Reference in New Issue