- Home /
Question by
joeybbb · Dec 17, 2011 at 11:30 PM ·
aienemyprojectilecombat
Enemy AI Not Working?
Ok so I have many different varieties of enemies in my game and for some reason, this one isn't working:
var player : GameObject;
var speed : float=6f;
var range : float=15f;
var hitRange : float=6f;
var enemyDamage : float=10f;
var rotationSpeed : float=5f;
var damageTimer : float=0f;
var delta : Vector3;
var distance;
var me : GameObject;
var projectile : Rigidbody;
var initialSpeed = 20.0;
var exit : GameObject;
function Start()
{
player = GameObject.FindGameObjectWithTag("Player");
}
function Update()
{
//calculate the enemy's distance from player and do a check to see if we should
//progress then call the necessary methods
distance = Vector3.Distance(transform.position, player.transform.position);
if(distance<=range)
{
MoveTowards();
RotateTowards();
AttackPlayer();
}
}
function MoveTowards()
{
delta = player.transform.position - transform.position;
delta.Normalize();
delta.y = 0;
if(distance<=(hitRange/1.5))
{
return;
}
var moveSpeed = speed * Time.deltaTime;
transform.position = transform.position + (delta * moveSpeed);
}
function RotateTowards()
{
transform.rotation = Quaternion.RotateTowards (transform.rotation, Quaternion.LookRotation(delta), rotationSpeed);
transform.rotation = Quaternion.Euler(0, transform.eulerAngles.y, 0);
}
function AttackPlayer()
{
damageTimer+=Time.deltaTime;
if (distance < hitRange && damageTimer>=1.5)
{
damageTimer=0f;
Shot();
}
}
function Shot()
{
var instantiatedProjectile : Rigidbody = Instantiate (projectile, exit.position, exit.rotation);
// Give it an initial forward velocity. The direction is along the z-axis of the missile launcher's transform.
instantiatedProjectile.velocity = exit.TransformDirection(Vector3 (0, 0, initialSpeed));
// Ignore collisions between the missile and the character controller
Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider);
}
The enemy does move toward the player just fine but the projectile doesn't instantaniate. Help please???
Comment
Answer by ThomasQ · Dec 18, 2011 at 12:06 AM
For
if (distance < hitRange && damageTimer>=1.5)
Try
if (distance < hitRange && (damageTimer>=1.5))
Your answer
Follow this Question
Related Questions
How do I apply bullet projectile to enemy ai properly on unity3d 0 Answers
How to detect wether an object is headed towards the top or bottom of an object? 2 Answers
Need help trying to make enemy detect player's projectiles 1 Answer
Enemy AI movement problem 1 Answer
Basic sword swing combat 1 Answer