Always searching for an object tagged with "Enemy" that exists within a 20 degree cone of influence (distance limited by var:targetingDistance) starting at the player's location and heading in the direction they're facing.
var enemyObj : GameObject[];
var enemyAI : EnemyAI;
var targetingConeAngle = 20;
var targetingDistance = 200;
enemyObj = GameObject.FindGameObjectsWithTag("Enemy");
for(var nme : GameObject in enemyObj) {
if (Vector3.Distance(nme.transform.position, transform.position) < targetingDistance)
{
// get instance of enemy AI script to see what they're doing at the moment
enemyAI = nme.GetComponent(EnemyAI);
// target is within missile range
//Debug.Log("Enemy found at distance:" + Vector3.Distance(nme.transform.position, transform.position));
var cone = Mathf.Cos(targetingConeAngle * Mathf.Deg2Rad);
var heading = (nme.transform.position - transform.position).normalized;
var dot: float = Vector3.Dot(transform.forward, heading);
if(Vector3.Dot(transform.forward, heading) > cone)
{
// if we don't already have a 'target', target this enemy
if(!hasTarget)
{
// object of currently targeted enemy, for getting it's position for weaponry
targetedEnemy = nme;
// enemy's AI script, so we can find out what they're up to!
targetedEnemyAI = enemyAI;
targetedEnemyAI.isTargeted = true;
// we now have a target
hasTarget = true;
}
}
else
{
// enemy cannot be targeted because it's not in our cone's range
enemyAI.isTargeted = false; // this enemy should know they are not being targeted
}
}
}
function OnCollisionEnter(collision : Collision) {
var instance : GameObject = Instantiate(Resources.Load("Detonator-Wide", GameObject), collision.contacts[0].point, transform.rotation);
}
function Update(){
if (Input.GetButtonDown ("Pause"))
{
if(Time.timeScale == 1.0)
Time.timeScale = 0.0;
else
Time.timeScale = 1.0;
// Adjust fixed delta time according to timescale
// The fixed delta time will now be 0.02 frames per real-time second
Time.fixedDeltaTime = 0.02 * Time.timeScale;
}
}