52 lines
1.9 KiB
C#
52 lines
1.9 KiB
C#
|
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(MeleeAttackFollowed))]
|
|||
|
public class Crab : MonoBehaviour {
|
|||
|
public Animator Anim;
|
|||
|
|
|||
|
private Enemy Enemy;
|
|||
|
private PlayerSighted FollowTrigger;
|
|||
|
private Wander WanderBehaviour;
|
|||
|
private Follow FollowBehaviour;
|
|||
|
private MeleeAttackFollowed MeleeBehaviour;
|
|||
|
|
|||
|
private void Start() {
|
|||
|
Enemy = GetComponent<Enemy>();
|
|||
|
FollowTrigger = GetComponent<PlayerSighted>();
|
|||
|
WanderBehaviour = GetComponent<Wander>();
|
|||
|
FollowBehaviour = GetComponent<Follow>();
|
|||
|
MeleeBehaviour = GetComponent<MeleeAttackFollowed>();
|
|||
|
}
|
|||
|
|
|||
|
private void Update() {
|
|||
|
Enemy.CurrentBehaviour = "Nothing";
|
|||
|
if (FollowTrigger.IsTriggered()) {
|
|||
|
FollowBehaviour.Target = FollowTrigger.Player.transform;
|
|||
|
if (MeleeBehaviour.TryExecute()) {
|
|||
|
Enemy.CurrentBehaviour = "Melee:" + MeleeBehaviour.CurrentStatus;
|
|||
|
} else if (FollowBehaviour.TryExecute()) {
|
|||
|
Enemy.CurrentBehaviour = "Follow:" + FollowBehaviour.CurrentStatus;
|
|||
|
}
|
|||
|
} else if (WanderBehaviour.TryExecute()) {
|
|||
|
Enemy.CurrentBehaviour = "Wander:" + WanderBehaviour.CurrentStatus;
|
|||
|
}
|
|||
|
|
|||
|
if (Enemy.Attacking) {
|
|||
|
Anim.Play("Attack");
|
|||
|
} else {
|
|||
|
Anim.Play("Walk");
|
|||
|
}
|
|||
|
Anim.SetFloat("Speed", Enemy.Movement.SpeedPercentage);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|