Help with Collision Detection
I have been trying to implement AABB collision detection from https://www.youtube.com/watch?v=viOmxZDan-Y
I have two boxes i am trying to detect collision for, but right now it's printing "Collision detected" all the time.
// -----AABB-----
//@input float width
//@input float height
//@input float breadth
//@input Component.ScriptComponent detect
script.api.minX = 0;
script.api.minY = 0;
script.api.minZ = 0;
script.api.maxX = 0;
script.api.maxY = 0;
script.api.maxZ = 0;
function Register() {
if(script.detect.api) {
script.detect.api.AddAABB(script);
}
}
script.api.MinMaxCalculations = function() {
var position = script.getSceneObject().getTransform().getWorldPosition();
var halfW = script.width / 2.0;
var halfH = script.height / 2.0;
var halfB = script.breadth / 2.0;
script.api.minX = position.x = halfW;
script.api.minY = position.Y = halfH;
script.api.minZ = position.Z = halfB;
script.api.maxX = position.x = halfW;
script.api.maxY = position.Y = halfH;
script.api.maxZ = position.Z = halfB;
}
Register();
And the detection script:
// -----Detection-----
var colliders = [];
script.api.AddAABB = function (aabb) {
colliders.push(aabb);
}
function intersect(a, b) {
return (a.api.minX <= b.api.maxX && a.api.maxX >= b.api.minX) &&
(a.api.minY <= b.api.maxY && a.api.maxY >= b.api.minY) &&
(a.api.minZ <= b.api.maxZ && a.api.maxZ >= b.api.minZ);
}
function CheckCollisions(){
for (x = 0; x < colliders.length; x++) {
colliders[x].api.MinMaxCalculations();
}
for (x = 0; x < colliders.length; x++) {
for (y = x+1; y < colliders.length; y++) {
var colX = colliders[x];
var colY = colliders[y];
if (intersect(colX, colY)) {
print("Collision!");
}
}
}
}
var event = script.createEvent("UpdateEvent");
event.bind(CheckCollisions);