using UnityEngine; using Saltosion.OneWeapon.AI; namespace Saltosion.OneWeapon.Enemies { [RequireComponent(typeof(Rigidbody2D))] public class Enemy : MonoBehaviour { [Header("Debug Info")] public string CurrentBehavior = "Nothing"; [Header("Graphics")] public SpriteRenderer Renderer; public Sprite IdleSprite; public Sprite AttackingSprite; public int MovementAnimationFramerate; public Sprite[] MovementSprites; [Header("Stats")] public float MoveSpeed; [Header("Behaviour")] public BehaviourNode BehaviourTree; [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) { Renderer.sprite = AttackingSprite; } else if (Body.velocity.magnitude > 0.1) { Renderer.sprite = MovementSprites[(int)(Time.time * MovementAnimationFramerate) % MovementSprites.Length]; } else { Renderer.sprite = IdleSprite; } } private void FixedUpdate() { if (MovingToTarget) { Body.velocity = (TargetPosition - Body.position).normalized * MoveSpeed; } } public void StartMovingTo(Vector2 target) { TargetPosition = target; MovingToTarget = true; } public void StopMoving() { MovingToTarget = false; } } }