Sequence (Dynamic)
If TriggerEnter: Save object as variable, then use variable in children.
If CanSeeTarget: Seek Target.
There is a character that wonders around collecting objects. When it touches one of the objects, the TriggerEnter path executes and works properly. In the normal case. Occasionally, when two objects that are being collected are right next to each other, I think the following race conditions happens.
TriggerEnter called for first object. Object variable is updates to use later (I am using dynamic variables here).
Before the child of TriggerEnter is called, the second collision happens, and TriggerEnter is called again. It updates the object variable to the new one that was just collided with. And now the original object is not processed anymore.
If I remove the TriggerEnter part of the tree, and just do it manually in code:
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag(LevelManager.Instance.CollectibleTag))
{
Collect(other.gameObject);
}
}
Everything works as required, since there is no intermediate variable to get overwritten.
I’d like to handle this inside the BehaviorTree. I suppose I can create my own Action that both catches the Trigger and executes the Trigger code all at once. But I am wondering if I am simply using this wrong and there is a way to do this with the built in methods.
Although I am not able to reproduce this yet, I can confirm that this can be possible since Unity trigger calls are made on a separate thread than normal Update (through which graphs are updated normally). Can you please confirm that in Unitys Script Execution Order editor, the script named “ParadoxNotion.Services.MonoManager” is at a positive time (anything after “Default Time”) ?
I may need to reimplement how trigger/collision/etc conditions work. Thank you for pointing this out!
Hello again,
Yes, that is correct. I will need to dig into this a bit more and see if there is any potential solution for that. It’s tricky since trigger/collisions events happen totally async than the graph update, but hopefully there is a solution 🙂
Thank you.
Join us on Discord: https://discord.gg/97q2Rjh
Author
Posts
Viewing 4 posts - 1 through 4 (of 4 total)
You must be logged in to reply to this topic.
Login
Register
By registering on this website you agree to our Privacy Policy.