public void Break(bool byPlayer) { // can't remove border tiles if (Border) { return; } if (byPlayer) { switch (Type) { case TileType.Normal: GameController.Inst.AddScore(Tuning.SCORE_BREAK_BLOCK); break; case TileType.Gem: GameController.Inst.AddScore(Tuning.SCORE_BREAK_GEM); break; case TileType.Gem2: GameController.Inst.AddScore(Tuning.SCORE_BREAK_GEM * 10f); break; case TileType.PowerS: case TileType.PowerL: case TileType.PowerR: case TileType.PowerB: //GameController.Inst.AddScore(Tuning.SCORE_BREAK_POWERUP); GameController.Inst.GivePowerup((PowerupType)(Type - TileType.PowerS + 1)); break; } GameController.Inst.Power += Tuning.POWER_ADD_BLOCK; } GameController.Inst.PlaySoundAt(BreakSound, m_Transform.position); Instantiate(BreakParticles, m_Transform.position, Quaternion.identity); ScreenShaker.AddShake(0.12f, 0.22f); Destroy(gameObject); }
public void Explode(Rigidbody pushAway) { if (m_Exploded) { return; } // don't fire again m_Exploded = true; Destroy(gameObject, 0.1f); // shoot the player away if (pushAway != null) { var dir = (pushAway.transform.position - m_Transform.position).normalized; pushAway.AddForce(dir * Tuning.MINE_EXPLODE_FORCE, ForceMode.VelocityChange); } // pretty effects Instantiate(ExplosionParticles, m_Transform.position, Quaternion.identity); GameController.Inst.PlaySoundAt(ExplodeSound, m_Transform.position); ScreenShaker.AddShake(0.45f, 0.55f); // eraser object (removes tiles and chain-reacts mines) Instantiate(TileEraserPrefab, m_Transform.position, Quaternion.identity); }