Menu

CodeSnippits

jpyers

Cone of influence

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
            }
        }
    }

Instantiate an object on collision

function OnCollisionEnter(collision : Collision) {
    var instance : GameObject = Instantiate(Resources.Load("Detonator-Wide", GameObject), collision.contacts[0].point, transform.rotation);
}

Pausing the game

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;
    }
}