using UnityEngine; using UnityEngine.Animations; using Saltosion.OneWeapon.AI; using Saltosion.OneWeapon.Utils; namespace Saltosion.OneWeapon.Enemies { [RequireComponent(typeof(Rigidbody2D), typeof(AcceleratedMovement))] public class Enemy : MonoBehaviour { private static Enemy latestDebugHoveredEnemy = null; [Header("Debug Info")] public TextMesh BehaviourDisplay; public string CurrentBehaviour = "Nothing"; public AcceleratedMovement Movement { private set; get; } private Rigidbody2D Body; private bool MovingToTarget = false; private Vector2 TargetPosition; private void Start() { Movement = GetComponent(); Body = GetComponent(); BehaviourDisplay.GetComponent().sortingLayerName = "Debug Text"; } private void Update() { if (Application.isEditor) { Collider2D Hit = Physics2D.OverlapPoint(Camera.main.ScreenToWorldPoint(Input.mousePosition)); if (Hit != null && Hit.attachedRigidbody == Body) { latestDebugHoveredEnemy = this; } } bool DisplayDebugInfo = latestDebugHoveredEnemy == this; BehaviourDisplay.gameObject.SetActive(DisplayDebugInfo); if (DisplayDebugInfo) { BehaviourDisplay.text = CurrentBehaviour.Length == 0 ? "Nothing" : CurrentBehaviour; } } 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; } } }