Page 1 of 1
Scene Event works only once
Posted: Fri Sep 17, 2021 5:15 pm
by DryreL
Hello,
I was trying to change the animation while character in conversation.
(Idle -> Talk)
My character has two state, idle (base layer) and talk (overlap layer). New State is empty state. I set a transition
"New State -> Talk" to "Talk" trigger.
- image_2021-09-18_000440.png (22.48 KiB) Viewed 3790 times
Then, I added "SetTrigger" event to dialogue's
Scene Event. This first dialogue runs the command, that's ok.
- image_2021-09-18_000838.png (20.17 KiB) Viewed 3790 times
But in the next dialogue state, I want to
Character A return
Idle animation while
Character B is starting to
Talk animation.
- image_2021-09-18_001054.png (18.43 KiB) Viewed 3790 times
I added
Scene Event again, but it doesn't work in the game. Is it one time-only event?
If it is,
how should I change the animations while they are in conversation?
Thanks in advance!
Re: Scene Event works only once
Posted: Fri Sep 17, 2021 9:22 pm
by Tony Li
Hi,
Scene events execute every time the node is used in a conversation, not just once.
However, for animator control, I recommend using the AnimatorTrigger() sequencer command instead of scene events. If you're using triggers, you'll also want to use another trigger to return to Idle. Resetting the Talk trigger won't return the animator to Idle. Example Sequence field value:
Code: Select all
AnimatorTrigger(Talk);
required AnimatorTrigger(Idle)@Message(Typed)
The first line in the Sequence sets the Talk trigger on the speaker.
The second line waits until the typewriter effect has finished. Then it sets a trigger named Idle.
Re: Scene Event works only once
Posted: Sun Sep 19, 2021 9:39 am
by DryreL
Hi, thanks your the help. I added your code to Sequencer and deleted scene events but there's a little problem.
Sequencer does not work as intended. Character A plays talk animation in the beginning and never stops even the conversation order goes to Characer B.
Re: Scene Event works only once
Posted: Sun Sep 19, 2021 9:48 am
by Tony Li
Are there any errors or warnings in the Console window?
In my previous reply, notice the second line in the Sequence. It's an example of how to change the speaker's animator back to the "Idle" animation. Your actual command may be different, depending on how you've set up your animator controller.
Re: Scene Event works only once
Posted: Sun Sep 19, 2021 11:48 am
by Tony Li
Another note:
If you're not using the typewriter effect, you can modify the sequence. Example:
Code: Select all
AnimatorTrigger(Idle, listener);
AnimatorTrigger(Talk, speaker);
{{default}}
I included the {{default}} keyword to tell the sequence to include the Dialogue Manager's Default Sequence.
Re: Scene Event works only once
Posted: Sun Sep 19, 2021 12:04 pm
by DryreL
Hi,
There was an error "Animator not found" at start, then I drag character game objects to Dialogue System Trigger's
Conversation Actor and
Conversant, the error has gone. There is no error right now.
Here's the animator setup:
- image_2021-09-19_185854.png (12.32 KiB) Viewed 3765 times
Trigger names are
same as in your code.
I tested triggers manually while game is running on editor, they works fine.
I don't understand why triggers don't work on conversation.
Re: Scene Event works only once
Posted: Sun Sep 19, 2021 12:19 pm
by DryreL
Tony Li wrote: ↑Sun Sep 19, 2021 11:48 am
Another note:
If you're not using the typewriter effect, you can modify the sequence. Example:
Code: Select all
AnimatorTrigger(Idle, listener);
AnimatorTrigger(Talk, speaker);
{{default}}
I included the {{default}} keyword to tell the sequence to include the Dialogue Manager's Default Sequence.
I'm using typewriter effect but I give it a try.
I pasted same code to
Character A.
And this code to
Character B:
Code: Select all
AnimatorTrigger(Talk, listener);
AnimatorTrigger(Idle, speaker);
{{default}}
Simply changed the places of Talk and Idle.
Result:
Character A is playing Talk animation (never stops), Character B does nothing
Re: Scene Event works only once
Posted: Sun Sep 19, 2021 1:40 pm
by Tony Li
The speaker should always talk. The listener should always stop talking. Use this in all sequences:
Code: Select all
AnimatorTrigger(Idle, listener);
AnimatorTrigger(Talk, speaker);
(One way to use it in all sequences is to add it to the Dialogue Manager's Default Sequence, and leave the nodes' Sequence fields blank.)
The speaker is the dialogue entry node's Actor, which is not necessarily the conversation's Actor. The conversation's Actor stays the same throughout the conversation, but the dialogue entry node's Actor may change with each node.
Also, please see:
Character GameObject Assignments.
Re: Scene Event works only once
Posted: Fri Oct 01, 2021 6:26 am
by DryreL
Hi, I solved the problem, thank you!