Page 1 of 1

Move a portrait

Posted: Mon Nov 01, 2021 4:10 pm
by Wiik
Hi,
I have a classic visual novel dialogue and i'd like the characters portrait to leave the scene (from the right or the left).
What would be the easiest way to achieve that ?

I've tried to add a new animation with a trigger "GoLeft" to the animator Canvas Group Animator Controller which is on a Subtitle Panel. In the Sequence of my Dialogue Entry i typed this : "AnimatorTrigger(GoLeft,Speaker)". Unity told me this error : "no animator found on Speaker".

Thanks

Re: Move a portrait

Posted: Mon Nov 01, 2021 7:15 pm
by Tony Li
Hi,

The error is because AnimatorTrigger() is trying to control an Animator on the speaker GameObject, not the character portrait. If you don't specify a GameObject, it will use the speaker GameObject.

Here are three different suggestions: (You can take your pick of which one fits your project best.)

1. If you use animated portraits, add a exit left and/or exit right animations to your character's portrait animator controller. Use the AnimatorPlay() sequencer command to play the animations.

2. Or set up a subtitle panel for each character. Configure the Open and Close animations to move the character onto the screen and off it, respectively.

3. Or don't use dialogue UI portraits at all. Instead, make the characters' images their own GameObjects separate from the dialogue UI. Then you can do whatever you want with them.

Re: Move a portrait

Posted: Tue Nov 02, 2021 6:13 am
by Wiik
Thanks Tony,
i went with option 2 for now. It works better when the correct GameObject is specified indeed :lol:

Now my character leaves the scene but then comes back briefly before the dialogue closes.
I think it may be because of the default behavior that make the animation 'Hide' plays, but 'Hide' only changes the alpha of the canvas (so why does my character comes back into the scene before hiding?).

Also how can i make so the player have to press the continue button between 2 sentences of the same dialogue entry ?
I've tried to make a child node with the same actor, but then the portrait goes in Unfocus state before coming back in Focus.

Re: Move a portrait

Posted: Tue Nov 02, 2021 8:53 am
by Tony Li
Hi,
Wiik wrote: Tue Nov 02, 2021 6:13 amNow my character leaves the scene but then comes back briefly before the dialogue closes.
I think it may be because of the default behavior that make the animation 'Hide' plays, but 'Hide' only changes the alpha of the canvas (so why does my character comes back into the scene before hiding?).
You can change the Hide animation to keep the portrait off the screen.
Wiik wrote: Tue Nov 02, 2021 6:13 amAlso how can i make so the player have to press the continue button between 2 sentences of the same dialogue entry ?
I've tried to make a child node with the same actor, but then the portrait goes in Unfocus state before coming back in Focus.
Split them into two nodes. Set the subtitle panel's Visibility to Until Superceded.

Re: Move a portrait

Posted: Tue Nov 02, 2021 10:27 am
by Wiik
You can change the Hide animation to keep the portrait off the screen
How do i do that ?
Sry if it's a newb question but i don't understand why the Subtitle Panel comes back into the scene since the 'hide' animation only adjust the canvas alpha.
Set the subtitle panel's Visibility to Until Superceded.
It doesn't work. The next dialogue entry is cut and the game is frozen.
Btw after other tests, the default visibility 'Always once Shown' works fine. The character only goes unfocused when the 1st node is a Response Menu.

Re: Move a portrait

Posted: Tue Nov 02, 2021 5:11 pm
by Tony Li
Hi,

It sounds like your animator is trying to play the unfocus and hide animations when the dialogue UI closes.

You can adjust your animator controller to prevent that. Here's an example:

DS_VNHidePortraitExample_2021-11-02.unitypackage

Play the third conversation: Albert. After a few lines, Albert and Abby will go offscreen. Then Albert will reappear, but Abby will stay offscreen.

To set up the animator controller, I added a bool parameter named "Offscreen". The transitions from Any State to Show or Hide require Offscreen to be false.

The conversation sets the Offscreen parameter true when Abby and Albert leave. Then it sets the Offscreen parameter false to make Albert reappear.