示例#1
0
    public void fireLaser()
    {
        GameObject laserClone;
        //we need to spawn the laser slightly below the centre of the player model
        //otherwise the laser appears to come out of the alien's belly button
        Vector3 tempPos = transform.position;

        if (getLaserType().Equals(LaserType.Man))
        {
            tempPos.y += 2.5f;
        }
        else
        {
            tempPos.y -= 2.5f;
        }
        //spawn the laser
        laserClone = Instantiate(laserPrefab, tempPos, transform.rotation) as GameObject;

        laserType = laserClone.GetComponent("TypeOfLaser") as TypeOfLaser;
        ls        = laserClone.GetComponent("LaserMovement") as LaserMovement;

        laserType.setTypeOfLaser(getLaserType());
        ls.setLaserType(laserType.getTypeOfLaser());
        try{
            //play laser fire sound
            audioS.PlayOneShot(fireFX, 0.3F);
        }catch (NullReferenceException e) {
            //catches a null exception
            Debug.Log("This would have errored");
        }
        ls.startMoving();
    }
示例#2
0
    //called when something enters the trigger of the object this script is assigned to
    void OnTriggerEnter2D(Collider2D other)
    {
        //if a laser collides with this object
        if (other.gameObject.name.Contains("aser"))
        {
            TypeOfLaser typeOfLaser = other.GetComponent("TypeOfLaser") as TypeOfLaser;

            //if a player or invader has been hit
            if (gameObject.name.StartsWith("Invader") || gameObject.name.Equals("Player"))
            {
                //if it has been hit by the opposite laser
                if (typeOfLaser.getTypeOfLaser() != LaserType.Invader && typeOfLaser.getTypeOfLaser() != LaserType.Player)
                {
                    //take damage
                    damage = other.gameObject.GetComponent("Damage") as Damage;
                    Debug.Log(gameObject.name + "has been hit by a laser of type " + typeOfLaser.getTypeOfLaser().ToString());
                    takeDamage(damage.getDamage());
                }
            }
            else if (gameObject.name.Equals("man"))
            {
                //if the man gets hit
                if (typeOfLaser.getTypeOfLaser() != LaserType.Man)
                {
                    damage = other.gameObject.GetComponent("Damage") as Damage;
                    //play audio
                    audioS.PlayOneShot(deadFX, 0.35F);
                    //take damage
                    takeDamage(damage.getDamage());
                    //destroy laser
                    Destroy(other.gameObject);
                    //pause the game for a second
                    StartCoroutine(pause.Pause(1, true));
                }
            }
            else
            {
                //otherwise, take damage.
                damage = other.gameObject.GetComponent("Damage") as Damage;
                takeDamage(damage.getDamage());
            }
        }
    }