Hi I want my enemies to stay until i come to their field of view. When I enter it it will begin chasing me.Problem is that I need only the one in which field of view I am. I need to gameObject.Find the collider which I triggered but Unity says that in gameObject.Find I must use (string). How can I do it?
The script which controls if enemy can see player:
function OnTriggerEnter(object : Collider)
{
if(object.gameObject.tag == "field")
{
object.gameObject.GetComponent(enemyMovement).canSee = true;
}
}
This is the enemyMovement script:
var canSee = false;
// Sets the target of enemy
var target : Transform;
// Sets distance where enemy stops befero target. Prevents collision with target
var stopDistance : float;
// Sets movement speed
var movementSpeed : float;
// Sets rotation speed
var rotateSpeed : float;
function Update ()
{
if(canSee == true)
{
var rotate = Quaternion.LookRotation(target.position - transform.position);
// Controls rotation over time
transform.rotation = Quaternion.Slerp(transform.rotation, rotate, (Time.deltaTime * rotateSpeed));
// Stops enemy before target
if(Vector3.Distance(target.position, transform.position) >= stopDistance)
{
transform.Translate(Vector3.forward * (Time.deltaTime * movementSpeed));
}
}
}
The enemyAttack script:
var target : Transform;
var damage : float;
var attackSpeed : float;
var attackDistance : float;
var max_attackDistance : float;
var distance : float;
var canAttack = true;
function Update ()
{
distance = Vector3.Distance(target.position, transform.position);
if(distance > attackDistance && distance < max_attackDistance && canAttack == true && !IsInvoking("GiveDamage"))
{
health.currentHealth -= damage;
canAttack = false;
}
if(distance <= attackDistance && !IsInvoking("GiveDamage"))
{
Invoke("GiveDamage", attackSpeed);
}
if(distance > max_attackDistance)
{
canAttack = true;
CancelInvoke("GiveDamage");
}
}
function GiveDamage ()
{
health.currentHealth -= damage;
}
function AfterRunAttack ()
{
}