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(); }
public Laser(Vector2 position, Vector2 targetPosition, Vector2 scale, TypeOfLaser type, float damage, int lifeTimer, Texture2D texture) : base(position, scale, texture) { this.targetPosition = targetPosition; Type = type; this.damage = damage; Vector2 tempOrigin = new Vector2(Size.X / 2, 0); Origin = tempOrigin; Vector2 dPos = targetPosition - position; rotation = (float)Math.Atan2(dPos.Y, dPos.X) - MathHelper.ToRadians(90); direction = Vector2.Normalize(targetPosition - position); this.lifeTimer = new Timer(100); timerActivated = false; hitbox = new Rectangle(0, 0, 0, 0); IsCollidable = true; //FindAllReasonablePositions(); }
public override void Fire(Vector2 center, Vector2 target, TypeOfBullet type, GameTime gameTime) { if (fireTimer.IsDone(gameTime)) { if (type == TypeOfBullet.Enemy) { laserType = TypeOfLaser.Enemy; } else { laserType = TypeOfLaser.Player; } EntityManager.CreateLaser(laserType, center, target, damagePerShot); fireTimer.Reset(gameTime); } }
//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()); } } }
public static void CreateLaser(TypeOfLaser type, Vector2 start, Vector2 target, float damage) { AddLaser(new Laser(start, target, new Vector2(0.1f, Vector2.Distance(start, target)), type, damage, 900, AssetManager.TextureAsset("gradient_bar"))); //AddBullet(new Bullet(start, target, Vector2.Zero, new Vector2(10, 0.1f/*Vector2.Distance(start, target)*/), type, damage, 1)); }