| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | using System;using System.Collections.Generic;using Animancer;using Animancer.TransitionLibraries;using Core.Triiger;using Fort23.UTool;using UnityEngine;using UnityEngine.AI;using Utility;namespace GameLogic.Combat.Hero{    public class CombatHeroAnimtion : HeroAnimtionBasic    {        public AnimancerComponent AnimancerComponent;        protected Map<string, TransitionAsset> _transitionMap = new Map<string, TransitionAsset>();        protected override void ProInit()        {            AnimancerComponent = combatHeroEntity.GameObject.GetComponentInChildren<AnimancerComponent>();            // AnimancerComponent.gameObject.OnAnimatorMove(OnAnimatorMove);            if (AnimancerComponent != null)            {                // AnimancerComponent.GetAnimationClips();                // List<AnimationClip> results = new List<AnimationClip>();                // AnimancerComponent.Transitions.GetAnimationClips(results);                int max = AnimancerComponent.Transitions.Library.Count;                for (int i = 0; i < max; i++)                {                    if (AnimancerComponent.Transitions.Library.TryGetTransition(i,                            out TransitionModifierGroup transition))                    {                        TransitionAsset clipTransition2 = transition.Transition as TransitionAsset;                        _transitionMap[clipTransition2.name] = clipTransition2;                    }                }            }        }        // protected void OnAnimatorMove()        // {        //     if (AnimancerComponent == null || AnimancerComponent.Animator.velocity.sqrMagnitude < .01f)        //     {        //         return;        //     }        //        //     bool isOk = false;        //        //        //        //     combatHeroEntity.CombatAIBasic.NavMeshAgent.Raycast(AnimancerComponent.Animator.rootPosition,        //         out NavMeshHit hit);        //     if (!hit.hit)        //     {        //         combatHeroEntity.combatHeroGameObject.SetPosition(AnimancerComponent.Animator.rootPosition);        //     }        //        // }        public override HeroPlayStateInfoBasic Play(string name, float speed = 1)        {            if (!_transitionMap.TryGetValue(name, out TransitionAsset clipTransition))            {                // LogTool.Log("没有找到要播放的动画" + name);                return null;            }            // clipTransition.Speed = speed;            // clipTransition. = isLoop;            AnimancerState animancerState = AnimancerComponent.Play(clipTransition);            // AnimancerComponent.Animator.speed = speed;            animancerState.Speed = speed;            HeroAnimtionStateInfo heroPlayStateInfoBasic = new HeroAnimtionStateInfo();            heroPlayStateInfoBasic.animancerState = animancerState;            return heroPlayStateInfoBasic;        }        public void Dispose()        {            _transitionMap.Clear();            AnimancerComponent = null;        }    }}
 |