private IEnumerator RandomizeAndExplode() { float elapsedTime = 0; ChromaColor randomColor = ChromaColorInfo.Random; while (elapsedTime < bb.bodyColorsCarrouselMinTime) { randomColor = ChromaColorInfo.Random; SetMaterial(rsc.coloredObjectsMng.GetWormBodyMaterial(randomColor)); yield return(new WaitForSeconds(bb.bodyColorsCarrouselChangeInterval)); elapsedTime += bb.bodyColorsCarrouselChangeInterval; } bodyDeactivate[(int)randomColor].Play(); voxelization.SpawnFakeVoxels(); EnemyExplosionController explosion = rsc.poolMng.enemyExplosionPool.GetObject(); if (explosion != null) { explosion.transform.position = transform.position; explosion.PlayAll(finalExplosionSoundFx); } rsc.rumbleMng.Rumble(0, 0.3f, 0.5f, 0.5f); rsc.camerasMng.PlayEffect(0, 0.3f, 0.25f); //Destroy(gameObject); gameObject.SetActive(false); }
private IEnumerator RandomizeAndExplode() { float elapsedTime = 0; int chargeLevel = 0; while (elapsedTime < bb.bodyColorsCarrouselMinTime) { SetMaterial(rsc.coloredObjectsMng.GetWormHeadMaterial(chargeLevel++ % 4)); yield return(new WaitForSeconds(bb.bodyColorsCarrouselChangeInterval)); elapsedTime += bb.bodyColorsCarrouselChangeInterval; } EnemyExplosionController explosion = rsc.poolMng.enemyExplosionPool.GetObject(); if (explosion != null) { explosion.transform.position = transform.position; explosion.PlayAll(finalExplosionSoundFx); } rsc.rumbleMng.Rumble(0, 1.5f, 1f, 1f); rsc.camerasMng.PlayEffect(0, 1.5f, 0.75f); voxelization.SpawnFakeVoxels(); headModel.SetActive(false); yield return(new WaitForSeconds(2f)); //rsc.eventMng.TriggerEvent(EventManager.EventType.LEVEL_CLEARED, LevelEventInfo.eventInfo); rsc.eventMng.TriggerEvent(EventManager.EventType.WORM_DIED, EnemyDiedEventInfo.eventInfo); //Destroy(gameObject); gameObject.SetActive(false); }
public void SpawnVoxels() { voxelization.CalculateVoxelsGrid(); voxelization.SpawnVoxels(); EnemyExplosionController explosion = rsc.poolMng.enemyExplosionPool.GetObject(); if (explosion != null) { explosion.transform.position = transform.position; explosion.PlayAll(dieExplosionSoundFx); } }
public void Explode() { EnemyExplosionController explosion = rsc.poolMng.enemyExplosionPool.GetObject(); if (explosion != null) { explosion.transform.position = transform.position; explosion.PlayAll(finalExplosionSoundFx); } rsc.rumbleMng.Rumble(0, 0.3f, 0.5f, 0.5f); rsc.camerasMng.PlayEffect(0, 0.3f, 0.2f); voxelization.SpawnVoxels(); //Destroy(gameObject); gameObject.SetActive(false); }
public override void OnStateEnter() { base.OnStateEnter(); mosquitoBlackboard.agent.Stop(); mosquitoBlackboard.agent.enabled = false; color = mosquitoBlackboard.mosquito.color; blackboard.entity.DisableShields(); if (mosquitoBlackboard.lastShotPlayer != null) { rsc.rumbleMng.Rumble(mosquitoBlackboard.lastShotPlayer.Id, 0.25f, 0f, 0.5f); } EnemyDiedEventInfo.eventInfo.color = color; EnemyDiedEventInfo.eventInfo.infectionValue = MosquitoAIBehaviour.infectionValue; EnemyDiedEventInfo.eventInfo.killerPlayer = mosquitoBlackboard.lastShotPlayer; EnemyDiedEventInfo.eventInfo.killedSameColor = mosquitoBlackboard.lastShotSameColor; EnemyDiedEventInfo.eventInfo.specialKill = mosquitoBlackboard.specialKill; rsc.eventMng.TriggerEvent(EventManager.EventType.ENEMY_DIED, EnemyDiedEventInfo.eventInfo); if (mosquitoBlackboard.lastShotSameColor) { mosquitoBlackboard.entity.mainCollider.enabled = false; mosquitoBlackboard.entity.dyingCollider.SetActive(true); mosquitoBlackboard.canReceiveDamage = false; mosquitoBlackboard.dieAnimationEnded = false; mosquitoBlackboard.animator.SetTrigger("die"); movement = mosquitoBlackboard.lastShotDirection * mosquitoBlackboard.entity.shotForceModifier; EnemyExplosionController explosion = rsc.poolMng.enemyExplosionPool.GetObject(); if (explosion != null) { explosion.transform.position = blackboard.entityGO.transform.position; explosion.Play(color, mosquitoBlackboard.mosquito.explosion1SoundFx); } } else { mosquitoBlackboard.mosquito.SpawnVoxelsAndReturnToPool(false); } }
public void SpawnVoxelsAndReturnToPool(bool spawnEnergyVoxels = true) { EnemyExplosionController explosion = rsc.poolMng.enemyExplosionPool.GetObject(); Vector3 pos = transform.position; if (spawnEnergyVoxels) { if (explosion != null) { explosion.transform.position = pos; explosion.Play(color, explosion2SoundFx); } EnergyVoxelPool pool = rsc.poolMng.energyVoxelPool; for (int i = 0; i < energyVoxelsSpawnedOnDie; ++i) { EnergyVoxelController voxel = pool.GetObject(); if (voxel != null) { voxel.transform.position = pos; voxel.transform.rotation = Random.rotation; } } rsc.eventMng.TriggerEvent(EventManager.EventType.ENERGY_VOXEL_SPAWNED, EventInfo.emptyInfo); } else { if (explosion != null) { explosion.transform.position = pos; explosion.PlayAudioOnly(explosionWrongColorSoundFx); } } SpawnVoxels(); rsc.poolMng.spiderPool.AddObject(this); }
public void SpawnVoxelsAndReturnToPool(bool spawnEnergyVoxels = true) { EnemyExplosionController explosion = rsc.poolMng.enemyExplosionPool.GetObject(); Vector3 pos = transform.position; if (spawnEnergyVoxels) { if (explosion != null) { explosion.transform.position = pos; explosion.Play(color, explosion2SoundFx); } EnergyVoxelPool pool = rsc.poolMng.energyVoxelPool; for (int i = 0; i < energyVoxelsSpawnedOnDie; ++i) { EnergyVoxelController voxel = pool.GetObject(); if (voxel != null) { voxel.transform.position = pos; voxel.transform.rotation = Random.rotation; } } } else { if (explosion != null) { explosion.transform.position = pos; explosion.PlayAudioOnly(explosionWrongColorSoundFx); } } SpawnVoxels(); rsc.poolMng.mosquitoPool.AddObject(this); }