public override void doDie(Creature killer) { World.getInstance().unregisterTower(this); World.getInstance().unregisterTowerBySpawn(_spawn); _gameInstance.GetComponent <HealthBarController> ().destroy(); Vector3 originalPos = getGameInstance().transform.position; GameObject.Destroy(getGameInstance()); GameObject fracturedInstance = GameObject.Instantiate( getTower().getFracturedAsset(), World.getInstance().getTerrainTransform()) as GameObject; fracturedInstance.transform.position = originalPos; fracturedInstance.AddComponent <TowerCollapse> ().Propagate = true; GameObject ps = ParticleSystemTable.getInstance().instantiateParticleSystem("PS_Collapse"); ps.transform.position = originalPos; ps.AddComponent <ParticleSystemCollector> (); ps.GetComponent <ParticleSystem> ().Play(); ps.AddComponent <AudioSource> ().loop = false; SoundTable.getInstance().getAudioPlayer(ps.GetComponent <AudioSource> (), "sound_collapse"); ps.GetComponent <AudioSource> ().Play(); CameraShake.INSTANCE.prepareShake(); PlatfromSpawnTable.getInstance().enablePlatform(_spawn); SpawnTable.getInstance().releaseSpawn(_spawn); }
public GameTowerInstance(int objectId, GameTower tower, byte spawn) : base(objectId, tower) { _spawn = spawn; PlatfromSpawnTable.getInstance().disablePlatform(_spawn); World.getInstance().registerTowerInSpawn(_spawn, this); _gameInstance.AddComponent <TowerController> ().setTowerInstance(this); _gameInstance.AddComponent <HealthBarController> ()._creature = this; setUpgradeLevel(0); }