Question by 
               Sansgamer120 · Nov 17, 2020 at 07:24 PM · 
                3dbeginnerenemy ai  
              
 
              how do i make an enemy shoot at my player unity 3d,how do i make an enemy attack the player in unity 3d
I am a beginner and I can't figure out how to make enemies attack. I tried to make it work, but it didn't. I was thinking about them having melee and some having guns. this is the melee code. I can't get the enemy ranged attack. here is the code. Thanks in advance! using Unity Engine; using UnityEngine.AI;
[RequireComponent(typeof(NavMeshAgent))] [RequireComponent(typeof(Rigidbody))]
public class SC_NPCEnemy : MonoBehaviour, IEntity { public float attackDistance = 3f; public float movementSpeed = 4f; public float npcHP = 30; //How much damage will npc deal to the player public float npcDamage = 5; public float attackRate = 0.5f; public Transform firePoint; public GameObject npcDeadPrefab;
 [HideInInspector]
 public Transform playerTransform;
 [HideInInspector]
 public SC_EnemySpawner es;
 NavMeshAgent agent;
 float nextAttackTime = 0;
 Rigidbody r;
 // Start is called before the first frame update
 void Start()
 {
     agent = GetComponent<NavMeshAgent>();
     agent.stoppingDistance = attackDistance;
     agent.speed = movementSpeed;
     r = GetComponent<Rigidbody>();
     r.useGravity = false;
     r.isKinematic = true;
 }
 // Update is called once per frame
 void Update()
 {
     if (agent.remainingDistance - attackDistance < 0.01f)
     {
         if (Time.time > nextAttackTime)
         {
             nextAttackTime = Time.time + attackRate;
             //Attack
             RaycastHit hit;
             if (Physics.Raycast(firePoint.position, firePoint.forward, out hit, attackDistance))
             {
                 if (hit.transform.CompareTag("Player"))
                 {
                     Debug.DrawLine(firePoint.position, firePoint.position + firePoint.forward * attackDistance, Color.cyan);
                     IEntity player = hit.transform.GetComponent<IEntity>();
                     player.ApplyDamage(npcDamage);
                 }
             }
         }
     }
     //Move towardst he player
     agent.destination = playerTransform.position;
     //Always look at player
     transform.LookAt(new Vector3(playerTransform.transform.position.x, transform.position.y, playerTransform.position.z));
     //Gradually reduce rigidbody velocity if the force was applied by the bullet
     r.velocity *= 0.99f;
 }
 public void ApplyDamage(float points)
 {
     npcHP -= points;
     if (npcHP <= 0)
     {
         //Destroy the NPC
         GameObject npcDead = Instantiate(npcDeadPrefab, transform.position, transform.rotation);
         //Slightly bounce the npc dead prefab up
         npcDead.GetComponent<Rigidbody>().velocity = (-(playerTransform.position - transform.position).normalized * 8) + new Vector3(0, 5, 0);
         Destroy(npcDead, 10);
         es.EnemyEliminated(this);
         Destroy(gameObject);
     }
 }
}
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                