- Home /
Is OnTriggerEnter always fired when an object is already inside?
Hi all,
I'm working on some "upgraded" triggers that behave more like areas. If an object enters the area, it gets a reference for the area script because it's altering it's behaviour this way. It can also register itself for the area's event handlers so it will receive events from the current area it's located in. If the object exits the area, these bonds are intentionally broken so the area no longer has effects on the object. As you can see it's important to handle enters and exits correctly here.
Currently I use OnTriggerEnter()
(on the area itself) to catch objects that need to be registered with the area. If something enters from outside, it's obviously working, but I had my doubts about objects that are already inside the tigger's bounds when the game starts, or the objects I instantiate during gameplay inside the areas.
Yet this seems to work just fine. At least with these scenarios:
The object is already placed inside the trigger in the Editor.
The object is instantiated inside the trigger during runtime.
I'm doing some force application to these objects in FixedUpdate()
by default (they have Use Gravity turned off), so I figured this may happen because I apply force to them right from the beginning, so maybe OnTriggerEnter
is fired because I tempered with their rigidbodies. So I disabled the FixedUpdate()
on them to see, and it still works as previously. Now I don't have anything that should disturb the objects to cause an OnTriggerEnter
.
The point of my question is: Is this something that's supposed to happen, and do you know about any scenario which should not fire an OnTriggerEnter()
, but I'd have to use OnTriggerStay()
to notice an object inside an area? Of course that would make the code more hacky since I'd have to check if I already registered an object. I hope I formulated my question clearly :)
I'm using on trigger enter so I see everything that's inside and it works perfectly even if I just activate the collider on trigger it starts working so I think in anyway anything will come inside will become on trigger enter
you could do some workarounds with:
public bool istantiated = false;
// here you need to call other script to find if it's istantiated
if (! other.script.istantiated){
// run code inside you need
}
when you do istantiate the object
simply access it and give it the bool true
Your answer
Follow this Question
Related Questions
I have a few questions 0 Answers
OnTriggerEnter, Stay 1 Answer
Activate trigger if items colected 1 Answer
On Trigger Enter, Collide with object, specific collision 1 Answer