- Home /
Check for Collision
I am writing a custom Character Controller and I want to move my controller with a function like this:
function Move(dirGet:Vector3) {
dist = 0;direction = dirGet;
while(dist < direction.magnitude &! collision){
transform.position += (direction.normalized * step);
dist += step;
}
while(collision){
transform.position -= (direction.normalized * step);
} }
the problem is that collision is set in OnTriggerEnter and OnTriggerExit. So is there a way to check for Collision in the two while loops?
no, I want the loop to loop until the collision is exited. The problem is that it doesn't see the change of collision via the OnTriggerExit function, it just loops infinitely (at least as far as I think) and crashes unity
Answer by Dan the Man · Jun 06, 2011 at 06:11 PM
try adding this block of code:
var collision = false;
function OnTriggerEnter() { collision = true; }
function OnTriggerExit() { collision = false; }
Thats exactly what I did, unfortunately it seems the program doesn't call the OnTriggerExit function while in the loop or it doesn't register the change in collision... As i said, the program just crashes.
Well, I am trying to build a charcter controller which can be used on players, enemies and other NPCs all the same. At the same time, I want to avoid the Physics script for most colliders. The only collider that sends collision messages upon colliding with another one of its own kind is the Rigidbody collider, which is affected by physics. Triggers aren't, and both Rigidbody collider triggers as $$anonymous$$inematic Rigidbody Collider Triggers do send Trigger $$anonymous$$essages upon Colliding with others of the same kind. Triggers don't send collision messages upon collision with another one of their kind.
I'm not sure whether you understand what I want to say, but as far as I can see Triggers are the only way for me at the moment. I'm relatively new to Unity though, so if you know another way, I'd be glad to hear it.