using System.Collections; using System.Collections.Generic; using UnityEngine; using Saltosion.OneWeapon.AI.Behaviours; using Saltosion.OneWeapon.AI.Triggers; namespace Saltosion.OneWeapon.Enemies { [RequireComponent(typeof(Enemy))] [RequireComponent(typeof(PlayerSighted))] [RequireComponent(typeof(Wander))] [RequireComponent(typeof(Follow))] [RequireComponent(typeof(RangedAttackFollowed))] public class MobCat : MonoBehaviour { public Animator Anim; public SpriteRenderer SpriteRenderer; private Enemy Enemy; private PlayerSighted FollowTrigger; private Wander WanderBehaviour; private Follow FollowBehaviour; private RangedAttackFollowed RangedBehaviour; private void Start() { Enemy = GetComponent(); FollowTrigger = GetComponent(); WanderBehaviour = GetComponent(); FollowBehaviour = GetComponent(); RangedBehaviour = GetComponent(); } private void Update() { Enemy.CurrentBehaviour = ""; if (FollowTrigger.IsTriggered()) { FollowBehaviour.Target = FollowTrigger.Player.transform; if (FollowBehaviour.TryExecute()) { Enemy.CurrentBehaviour += "Follow:" + FollowBehaviour.CurrentStatus + ", "; } if (RangedBehaviour.TryExecute()) { Enemy.CurrentBehaviour += "Ranged:" + RangedBehaviour.CurrentStatus; } } else if (WanderBehaviour.TryExecute()) { Enemy.CurrentBehaviour += "Wander:" + WanderBehaviour.CurrentStatus; } if (RangedBehaviour.Attacking) { Anim.Play("Attack"); } else { Anim.Play("Walk"); } Anim.SetFloat("Speed", Enemy.Movement.SpeedPercentage); if (Enemy.Movement.SpeedPercentage > 0.1) { SpriteRenderer.flipX = Vector2.Dot(Enemy.Movement.Direction, Vector2.left) < 0; } else { SpriteRenderer.flipX = Vector2.Dot(FollowBehaviour.TargetDirection, Vector2.left) < 0; } } } }