using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class CharacterAnimatorController : MonoBehaviour { Animator anim; NavMeshAgent agent; PhotonView photonView; CharacterAnimatorParent parentController; bool isCasting; private void Awake() { anim = GetComponent(); agent = GetComponentInParent(); photonView = GetComponentInParent(); parentController = GetComponentInParent(); } // Start is called before the first frame update void Start() { if (!photonView.IsMine) { return; } CastBarHandler.Instance.OnCastingStateChanged.AddListener(UpdateIsCastingState); } // Update is called once per frame void Update() { if (!photonView.IsMine) return; anim.SetFloat("movementSpeed", agent.velocity.magnitude); } private void UpdateIsCastingState(bool isCasting) { this.isCasting = isCasting; if (isCasting) { anim.SetFloat("throwingTime", (1 / CastBarHandler.Instance.currentCastTime)); SetTriggerBasedOnAbility(CastBarHandler.Instance.currentAbility.animationType); parentController.SetRemoteTriggerBasedOnAbility((int)CastBarHandler.Instance.currentAbility.animationType); } } public void SetTriggerBasedOnAbility(AbilityAnimationType animationType) { switch (animationType) { case AbilityAnimationType.Throw: anim.SetTrigger("throw"); break; case AbilityAnimationType.Spell: anim.SetTrigger("cast"); break; default: break; } } } public enum AbilityAnimationType { Throw, Spell }