101 lines
2.7 KiB
C#
101 lines
2.7 KiB
C#
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<Animator>();
|
|
agent = GetComponentInParent<NavMeshAgent>();
|
|
photonView = GetComponentInParent<PhotonView>();
|
|
parentController = GetComponentInParent<CharacterAnimatorParent>();
|
|
}
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
if (!photonView.IsMine)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
parentController = GetComponentInParent<CharacterAnimatorParent>();
|
|
Debug.Log("OnEnable: parentController is " + (parentController != null ? "not null" : "null"));
|
|
|
|
if (photonView.IsMine)
|
|
CastBarHandler.Instance.OnCastingStateChanged.AddListener(UpdateIsCastingState);
|
|
}
|
|
private void OnDisable()
|
|
{
|
|
if (photonView.IsMine)
|
|
CastBarHandler.Instance.OnCastingStateChanged.RemoveListener(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);
|
|
|
|
if (parentController == null)
|
|
{
|
|
parentController = GetComponentInParent<CharacterAnimatorParent>();
|
|
Debug.Log("OnEnable: parentController is " + (parentController != null ? "not null" : "null"));
|
|
}
|
|
|
|
Debug.Log("NULL: " + parentController);
|
|
|
|
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;
|
|
case AbilityAnimationType.Melee:
|
|
anim.SetTrigger("melee");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
public enum AbilityAnimationType
|
|
{
|
|
Throw,
|
|
Spell,
|
|
Melee
|
|
} |