- Home /
multiple enemies does nt work with this script but a a single enemy works..Please help
Enemy.cs
This explains the navigation
using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class Enemy : MonoBehaviour { // Start is called before the first frame update Animator animator; NavMeshAgent navMeshAgent; [SerializeField] Transform target; [SerializeField] float rangeOfEnemy=15f; void Start() { navMeshAgent=GetComponent(); animator=GetComponent();
}
// Update is called once per frame
void Update()
{
NavigatingMethod();
}
private void NavigatingMethod(){
float distanceToTarget=Vector3.Distance(transform.position,target.position);
if(distanceToTarget>rangeOfEnemy){
animator.SetTrigger("idle");
animator.SetBool("isAttack",false);
//create no method as nothing has to be done when the player is outside of the enemy range but an idle animation for the enemy has to be set here.
}
else if(distanceToTarget<=rangeOfEnemy){
//do a animation for moving a character towards the enemy
if(distanceToTarget<=navMeshAgent.stoppingDistance){
animator.SetTrigger("attack");
animator.SetBool("isAttack",true);
}
else if(distanceToTarget>navMeshAgent.stoppingDistance){
animator.SetTrigger("walk");
animator.SetBool("isAttack",false);
navMeshAgent.SetDestination(target.position);
}
}
}
}
Healer.cs
This explains the enemy health
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Healer : MonoBehaviour { // Start is called before the first frame update [SerializeField] float totalLife=5f; private float maxHealth=5f; Animator animator; private bool isDead=true; void Awake(){ totalLife=maxHealth;
}
void Start()
{
animator=GetComponent<Animator>();
}
// Update is called once per frame
public void StartLife(float adi,Collider other){
if(totalLife<=0){
totalLife=maxHealth;
Debug.Log("Reboosted");
}
else if(totalLife>0){
totalLife-=adi;
Debug.Log(totalLife);
if(totalLife<=0){
Debug.Log(totalLife);
Debug.Log("Enemy dead "+ other.gameObject.name);
animator.SetTrigger("die");
Destroy(other.gameObject,1.5f);
}
}
}
void Update()
{
}
}
EnemyFriend.cs
This explains the enemytrigger
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class EnemyFriend : MonoBehaviour { // Start is called before the first frame update [SerializeField] float adi=1.5f; void Start() {
}
void OnTriggerStay(Collider other){
if(other.gameObject.tag=="Respawn"){
FindObjectOfType<Healer>().StartLife(adi,other);
}
}
// Update is called once per frame
void Update()
{
}
}