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(); }
//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()); } } }