BasicCharacterBrain.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
  2. #pragma warning disable CS0649 // Field is never assigned to, and will always have its default value.
  3. using UnityEngine;
  4. namespace Animancer.Samples.StateMachines
  5. {
  6. /// <summary>Uses player input to control a <see cref="Character"/>.</summary>
  7. ///
  8. /// <remarks>
  9. /// <strong>Sample:</strong>
  10. /// <see href="https://kybernetik.com.au/animancer/docs/samples/fsm/characters">
  11. /// Characters</see>
  12. /// </remarks>
  13. ///
  14. /// https://kybernetik.com.au/animancer/api/Animancer.Samples.StateMachines/BasicCharacterBrain
  15. ///
  16. [AddComponentMenu(Strings.SamplesMenuPrefix + "Characters - Basic Character Brain")]
  17. [AnimancerHelpUrl(typeof(BasicCharacterBrain))]
  18. public class BasicCharacterBrain : MonoBehaviour
  19. {
  20. /************************************************************************************************************************/
  21. [SerializeField] private Character _Character;
  22. [SerializeField] private CharacterState _Move;
  23. [SerializeField] private CharacterState _Action;
  24. /************************************************************************************************************************/
  25. protected virtual void Update()
  26. {
  27. UpdateMovement();
  28. UpdateAction();
  29. }
  30. /************************************************************************************************************************/
  31. private void UpdateMovement()
  32. {
  33. float forward = SampleInput.WASD.y;
  34. if (forward > 0)
  35. {
  36. _Character.StateMachine.TrySetState(_Move);
  37. }
  38. else
  39. {
  40. _Character.StateMachine.TrySetDefaultState();
  41. }
  42. }
  43. /************************************************************************************************************************/
  44. private void UpdateAction()
  45. {
  46. if (SampleInput.LeftMouseUp)
  47. _Character.StateMachine.TryResetState(_Action);
  48. }
  49. /************************************************************************************************************************/
  50. }
  51. }