CombatHeroAnimtion.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System;
  2. using System.Collections.Generic;
  3. using Animancer;
  4. using Animancer.TransitionLibraries;
  5. using Core.Triiger;
  6. using Fort23.UTool;
  7. using UnityEngine;
  8. using UnityEngine.AI;
  9. using Utility;
  10. namespace GameLogic.Combat.Hero
  11. {
  12. public class CombatHeroAnimtion : HeroAnimtionBasic
  13. {
  14. public AnimancerComponent AnimancerComponent;
  15. protected Map<string, TransitionAsset> _transitionMap = new Map<string, TransitionAsset>();
  16. protected override void ProInit()
  17. {
  18. AnimancerComponent = combatHeroEntity.GameObject.GetComponentInChildren<AnimancerComponent>();
  19. // AnimancerComponent.gameObject.OnAnimatorMove(OnAnimatorMove);
  20. if (AnimancerComponent != null)
  21. {
  22. // AnimancerComponent.GetAnimationClips();
  23. // List<AnimationClip> results = new List<AnimationClip>();
  24. // AnimancerComponent.Transitions.GetAnimationClips(results);
  25. int max = AnimancerComponent.Transitions.Library.Count;
  26. for (int i = 0; i < max; i++)
  27. {
  28. if (AnimancerComponent.Transitions.Library.TryGetTransition(i,
  29. out TransitionModifierGroup transition))
  30. {
  31. TransitionAsset clipTransition2 = transition.Transition as TransitionAsset;
  32. _transitionMap[clipTransition2.name] = clipTransition2;
  33. }
  34. }
  35. }
  36. }
  37. // protected void OnAnimatorMove()
  38. // {
  39. // if (AnimancerComponent == null || AnimancerComponent.Animator.velocity.sqrMagnitude < .01f)
  40. // {
  41. // return;
  42. // }
  43. //
  44. // bool isOk = false;
  45. //
  46. //
  47. //
  48. // combatHeroEntity.CombatAIBasic.NavMeshAgent.Raycast(AnimancerComponent.Animator.rootPosition,
  49. // out NavMeshHit hit);
  50. // if (!hit.hit)
  51. // {
  52. // combatHeroEntity.combatHeroGameObject.SetPosition(AnimancerComponent.Animator.rootPosition);
  53. // }
  54. //
  55. // }
  56. public override HeroPlayStateInfoBasic Play(string name, float speed = 1)
  57. {
  58. if (!_transitionMap.TryGetValue(name, out TransitionAsset clipTransition))
  59. {
  60. // LogTool.Log("没有找到要播放的动画" + name);
  61. return null;
  62. }
  63. // clipTransition.Speed = speed;
  64. // clipTransition. = isLoop;
  65. AnimancerState animancerState = AnimancerComponent.Play(clipTransition);
  66. // AnimancerComponent.Animator.speed = speed;
  67. animancerState.Speed = speed;
  68. HeroAnimtionStateInfo heroPlayStateInfoBasic = new HeroAnimtionStateInfo();
  69. heroPlayStateInfoBasic.animancerState = animancerState;
  70. return heroPlayStateInfoBasic;
  71. }
  72. public void Dispose()
  73. {
  74. _transitionMap.Clear();
  75. AnimancerComponent = null;
  76. }
  77. }
  78. }