Question by
xXDylan21Xx · Oct 08, 2020 at 09:03 PM ·
4.6
How to make enemy stop and shoot.,How to make enemy to stop and shoot nearby player
I have a script that I use and I do not know how to go and make my ai to shoot when near my player. My enemy movement script is :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class enemymover : MonoBehaviour
{
public GameObject player;
public float speed = 5f;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
//transform.LookAt(player.transform);
Quaternion targetRotation = Quaternion.LookRotation(player.transform.position - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, 1 * Time.deltaTime);
transform.position += transform.forward * speed * Time.deltaTime;
}
}
The Bullet shoot script I use for my player is:
using UnityEngine;
using System.Collections;
public class BulletShoot : MonoBehaviour
{
//Drag in the Bullet Emitter from the Component Inspector.
public GameObject Bullet_Emitter;
//Drag in the Bullet Prefab from the Component Inspector.
public GameObject Bullet;
//Enter the Speed of the Bullet from the Component Inspector.
public float Bullet_Forward_Force;
public float fireRate = 0.5F;
private float nextFire = 0.5F;
public ParticleSystem muzzleFlash;
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetButton("Fire1") && Time.time > nextFire)
{
//The Bullet instantiation happens here.
GameObject Temporary_Bullet_Handler;
Temporary_Bullet_Handler = Instantiate(Bullet, Bullet_Emitter.transform.position, Bullet_Emitter.transform.rotation) as GameObject;
//Sometimes bullets may appear rotated incorrectly due to the way its pivot was set from the original modeling package.
//This is EASILY corrected here, you might have to rotate it from a different axis and or angle based on your particular mesh.
Temporary_Bullet_Handler.transform.Rotate(Vector3.left * 90);
//Retrieve the Rigidbody component from the instantiated Bullet and control it.
Rigidbody Temporary_RigidBody;
Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent<Rigidbody>();
//Tell the bullet to be "pushed" forward by an amount set by Bullet_Forward_Force.
nextFire = Time.time + fireRate;
Temporary_RigidBody.AddForce(transform.forward * Bullet_Forward_Force);
muzzleFlash.Play();
//Basic Clean Up, set the Bullets to self destruct after 10 Seconds, I am being VERY generous here, normally 3 seconds is plenty.
Destroy(Temporary_Bullet_Handler, 3.0f);
}
}
}
Thank you :) ,
Comment