this behavior code make the assigned object move according to a set amount of waypoints and when the play comes near it it follows him and shoots at him util the player has leaved his raduis. this requires an abject with a rigidbody, a gun object as it's child, a bullet prefab&fire effects.
enemy.js
Code: Select all
var way : Transform[];
var speed : float = 10;
var raduis : float = 5;
private var currentWay : int;
var health : int = 3;
var loop : boolean = true;
var player : Transform;
var Bullet : Transform;
var barrel : Transform;
var gunFire : Transform;
var spread : float = 2;
var minSpread : float = 0.5;
var maxSpread : float = 3;
private var nextFire = 0;
var fireRate : float = 1;
var gravity : float = 20;
function Update () {
if(currentWay < way.length)
{
var target : Vector3 = way[currentWay].position;
var moveDirection : Vector3 = target - transform.position;
var distFromPlayer : Vector3 = player.position - transform.position;
var velocity = rigidbody.velocity;
if(moveDirection.magnitude < 1)
{
currentWay++;
}
else if(distFromPlayer.magnitude < raduis)
{
velocity = Vector3.zero;
target = player.position;
velocity = (player.position - transform.position).normalized * speed;
fire();
}
else if(distFromPlayer.magnitude > raduis)
{
target = way[currentWay].position;
velocity = moveDirection.normalized * speed;
}
else
{
velocity = moveDirection.normalized * speed;
}
}
else
{
if(loop)
{
currentWay = 0;
}
else
{
velocity = Vector3.zero;
}
}
if(health<0)
{
Destroy(gameObject);
print("Kill");
}
moveDirection.y -= gravity * Time.deltaTime;
rigidbody.velocity = velocity;
transform.LookAt(target);
}
function OnCollisionEnter(collide : Collision)
{
if(collide.gameObject.tag=="bullet")
{
health = health - 1;
print(health);
}
}
function fire()
{
if (Time.time > nextFire)
{
nextFire = Time.time + fireRate;
Instantiate(Bullet, barrel.position, transform.rotation);
Instantiate(gunFire, barrel.position, transform.rotation);
Bullet.LookAt(player.position);
}
}
your welcome.