using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; public class SlimeAI : MonoBehaviour { Animator animator; float playerDistance; GameObject player; int HP; //[SerializeField] //private UnityEvent onAttack; // Start is called before the first frame update void Start() { animator = GetComponent(); player = GameObject.FindWithTag("Player"); HP = 10; } // Update is called once per frame void Update() { playerDistance = Vector3.Distance(player.transform.position, transform.position); if (playerDistance < 1.5) //Attack { animator.SetBool("EnemyInAttackRange", true); animator.SetBool("EnemyInAggroRange", true); animator.SetBool("EnemyInVisionRange", true); Rotate(); } else if (playerDistance < 5) //Chase { animator.SetBool("EnemyInAttackRange", false); animator.SetBool("EnemyInAggroRange", true); animator.SetBool("EnemyInVisionRange", true); Rotate(); Move(); } else if (playerDistance < 8) //Stare { animator.SetBool("EnemyInAttackRange", false); animator.SetBool("EnemyInAggroRange", false); animator.SetBool("EnemyInVisionRange", true); Rotate(); } else //Idle { animator.SetBool("EnemyInAttackRange", false); animator.SetBool("EnemyInAggroRange", false); animator.SetBool("EnemyInVisionRange", false); } if (HP <= 0) { animator.SetBool("Dead", true); } if (animator.GetBool("DeathComplete")) { print("asd"); Destroy(this.gameObject); } } void Rotate() { // Rotate the forward vector towards the target direction by one step Vector3 newDirection = Vector3.RotateTowards(transform.forward, player.transform.position - transform.position, 1.0f * Time.deltaTime, 0.0f); // Calculate a rotation a step closer to the target and applies rotation to this object transform.rotation = Quaternion.LookRotation(newDirection); } void Move() { transform.position += transform.forward * Time.deltaTime * 1.0f; } public void GetHit(int dmg) { HP -= dmg; } }