コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    public void SpawnVoxels()
    {
        voxelization.CalculateVoxelsGrid();
        voxelization.SpawnVoxels();

        EnemyExplosionController explosion = rsc.poolMng.enemyExplosionPool.GetObject();

        if (explosion != null)
        {
            explosion.transform.position = transform.position;
            explosion.PlayAll(dieExplosionSoundFx);
        }
    }
コード例 #4
0
    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);
    }
コード例 #5
0
    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);
        }
    }
コード例 #6
0
    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);
    }
コード例 #7
0
    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);
    }