From a92b0eb1b6b6e7c5d9b27bd7ab6787033f0687e0 Mon Sep 17 00:00:00 2001 From: RandomityGuy <31925790+RandomityGuy@users.noreply.github.com> Date: Sat, 2 Nov 2024 14:20:49 +0530 Subject: [PATCH] make trigger collision detection more accurate --- src/Marble.hx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/Marble.hx b/src/Marble.hx index d8d47791..6eed8ab5 100644 --- a/src/Marble.hx +++ b/src/Marble.hx @@ -1933,6 +1933,14 @@ class Marble extends GameObject { var maxP = new Vector(Math.max(start.x, end.x) + expansion, Math.max(start.y, end.y) + expansion, Math.max(start.z, end.z) + expansion); var box = Bounds.fromPoints(minP.toPoint(), maxP.toPoint()); + var marbleAABB = new Bounds(); + marbleAABB.xMin = end.x - this._radius; + marbleAABB.xMax = end.x + this._radius; + marbleAABB.yMin = end.y - this._radius; + marbleAABB.yMax = end.y + this._radius; + marbleAABB.zMin = end.z - this._radius; + marbleAABB.zMax = end.z + this._radius; + // var marbleHitbox = new Bounds(); // marbleHitbox.addSpherePos(0, 0, 0, marble._radius); // marbleHitbox.transform(startQuat.toMatrix()); @@ -1962,7 +1970,7 @@ class Marble extends GameObject { var trigger:Trigger = cast contact.go; var triggeraabb = trigger.collider.boundingBox; - if (triggeraabb.collide(box)) { + if (triggeraabb.collide(marbleAABB)) { trigger.onMarbleInside(cast this, timeState); if (!this.shapeOrTriggerInside.contains(contact.go)) { this.shapeOrTriggerInside.push(contact.go);