FANDOM


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

	}

}
Community content is available under CC-BY-SA unless otherwise noted.