using UnityEngine; using UnityEngine.Animations; using Saltosion.OneWeapon.AI; using Saltosion.OneWeapon.Utils; namespace Saltosion.OneWeapon.Enemies { [RequireComponent(typeof(Rigidbody2D))] public class Enemy : MonoBehaviour { [Header("Debug Info")] public string CurrentBehavior = "Nothing"; [Header("Graphics")] public Animator Anim; [Header("Stats")] public float MoveSpeed; [Header("Behaviour")] public BehaviourNode BehaviourTree; public AcceleratedMovement Movement; [HideInInspector] public bool Attacking; private Rigidbody2D Body; private bool MovingToTarget = false; private Vector2 TargetPosition; private void Start() { Body = GetComponent(); } private void Update() { BehaviourTree.Execute(this); CurrentBehavior = BehaviourTree.GetExecutedName(); if (Attacking) { Anim.Play("Attack"); } else if (Body.velocity.magnitude > 0.1) { Anim.Play("Walk"); } else { Anim.Play("Walk"); } Anim.SetFloat("Speed", Movement.SpeedPercentage); } private void FixedUpdate() { if (MovingToTarget) { Movement.Direction = (TargetPosition - Body.position).normalized; } else { Movement.Direction = Vector2.zero; } } public void StartMovingTo(Vector2 target) { TargetPosition = target; MovingToTarget = true; } public void StopMoving() { MovingToTarget = false; } } }