BloodAndGore/Assets/Scripts/Enemies/Enemy.cs

60 lines
1.7 KiB
C#

using UnityEngine;
using Saltosion.OneWeapon.AI;
namespace Saltosion.OneWeapon {
[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<Rigidbody2D>();
}
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;
}
}
}