While using Unity's Timeline, a 3D character's position and rotation can be updated if they are included as an Animation track. However, when control is resumed to AC, the character's rotation will - by default - return to their original direction. Attaching the following script to the character will prevent this:
UpdateCharTimelineRotation.cs:
using UnityEngine;
using UnityEngine.Playables;
namespace AC
{
public class UpdateCharTimelineRotation : MonoBehaviour
{
#region Variables
private PlayableDirector activeDirector;
private Char character;
#endregion
#region UnityStandards
private void OnEnable ()
{
character = GetComponent <Char>();
EventManager.OnCharacterEnterTimeline += OnCharacterEnterTimeline;
EventManager.OnCharacterExitTimeline += OnCharacterExitTimeline;
}
private void OnDisable ()
{
EventManager.OnCharacterEnterTimeline -= OnCharacterEnterTimeline;
EventManager.OnCharacterExitTimeline -= OnCharacterExitTimeline;
}
private void Update ()
{
if (activeDirector != null)
{
character.SetRotation (character.GetAnimator ().rootRotation);
}
}
#endregion
#region CustomEvents
private void OnCharacterEnterTimeline (Char character, PlayableDirector director, int trackIndex)
{
activeDirector = director;
}
private void OnCharacterExitTimeline(Char character, PlayableDirector director, int trackIndex)
{
if (activeDirector == director)
{
activeDirector = null;
}
}
#endregion
}
}