Пример #1
0
    public void ScriptedIndianaExplosion(Transform xzPosition)
    {
        Vector3 i_wantedPosition = xzPosition.position;

        i_wantedPosition.y = startposition.y;
        IndianaExplosion i_newExplosion = Instantiate(prefabIndianaExplosion, i_wantedPosition, Quaternion.Euler(-90, 0, 0)).GetComponent <IndianaExplosion>();

        i_newExplosion.myScale = maxSizeExplosion;
        i_newExplosion.waitTimeForExplosion = explosionWaitingTime;
        i_newExplosion.indianaManager       = this;
        i_newExplosion.isBarrage            = true;
        i_newExplosion.Initiate();
    }
Пример #2
0
    public void StartIndianaColumn(Transform zPosition)
    {
        Debug.Log("STARTING COLUMN");
        Vector3 i_wantedPosition = zPosition.position;

        for (int i = 0; i < 10; i++)
        {
            i_wantedPosition  = new Vector3(zPosition.position.x, startposition.y, i_wantedPosition.z);
            i_wantedPosition += directionIndiania * spaceBetweenBombsInColumns;
            IndianaExplosion i_newExplosion = Instantiate(prefabIndianaExplosion, i_wantedPosition, Quaternion.Euler(-90, 0, 0)).GetComponent <IndianaExplosion>();
            i_newExplosion.myScale = maxSizeExplosion;
            i_newExplosion.waitTimeForExplosion = explosionWaitingTime;
            i_newExplosion.indianaManager       = this;
            i_newExplosion.isBarrage            = true;
            i_newExplosion.Initiate();
        }
    }
Пример #3
0
    IEnumerator SpawnEnemy_C(EnemyBehaviour _enemy, bool _addSmallRandomDelay, float _spawnSpeedOverride)
    {
        if (_spawnSpeedOverride != -1)
        {
            spawnDuration = _spawnSpeedOverride;
        }
        //_enemy.transform.localScale = Vector3.one;
        _enemy.gameObject.SetActive(false);
        _enemy.transform.position = startPosition.position;
        if (_addSmallRandomDelay)
        {
            yield return(new WaitForSeconds(Random.Range(1.5f, 3f)));
        }

        opened = true;
        if (animator)
        {
            animator.SetTrigger("Open");
        }
        if (_spawnSpeedOverride != -1)
        {
            yield return(new WaitForSeconds(0.1f));
        }
        _enemy.ChangeState(EnemyState.Spawning);
        if (_enemy.GetNavMesh() != null)
        {
            _enemy.GetNavMesh().enabled = false;
        }
        GameObject explosionVisualizer = default;

        if (type == SpawnerType.Air)
        {
            _enemy.gameObject.SetActive(false);
            explosionVisualizer = Instantiate(Resources.Load <GameObject>("ArenaResource/Spawners/P_ExplosionVisualizer"));
            explosionVisualizer.transform.position = endPosition + Vector3.up * 0.01f;
            explosionVisualizer.transform.rotation = Quaternion.LookRotation(Vector3.up);
            IndianaExplosion ie = explosionVisualizer.GetComponent <IndianaExplosion>();
            ie.myScale = _enemy.spawnImpactRadius * 0.33f;
            ie.waitTimeForExplosion = zonePreviewDuration / 3f;
            ie.Initiate();
            yield return(new WaitForSeconds(zonePreviewDuration / 3f));

            _enemy.gameObject.SetActive(true);
        }
        else
        {
            _enemy.gameObject.SetActive(true);
        }
        PawnController enemyPawn = (PawnController)_enemy;

        if (_enemy.GetNavMesh() != null)
        {
            _enemy.GetNavMesh().enabled = false;
        }
        for (float i = 0; i < spawnDuration; i += Time.deltaTime)
        {
            RecalculateEndspawnLocation();
            _enemy.ChangeState(EnemyState.Spawning);
            if (_enemy.GetNavMesh() != null)
            {
                _enemy.GetNavMesh().enabled = false;
            }
            switch (type)
            {
            case SpawnerType.Ground:
                Vector3 i_horizontalPosition = Vector3.Lerp(startPosition.position, endPosition, horizontalLerpCurve.Evaluate(i / spawnDuration));
                Vector3 i_verticalPosition   = Vector3.Lerp(startPosition.position, endPosition, verticalLerpCurve.Evaluate(i / spawnDuration));
                Vector3 i_finalPosition      = i_horizontalPosition;
                Vector3 i_flatDirection      = endPosition - startPosition.position;
                i_flatDirection.y = 0;
                Quaternion i_wantedRotation = Quaternion.Lerp(startPosition.rotation, Quaternion.LookRotation(i_flatDirection), rotationLerpCurve.Evaluate(i / spawnDuration));
                i_finalPosition.y            = i_verticalPosition.y;
                enemyPawn.transform.position = i_horizontalPosition;
                enemyPawn.transform.rotation = i_wantedRotation;
                break;

            case SpawnerType.Air:
                enemyPawn.transform.position = Vector3.Lerp(startPosition.position, endPosition, verticalLerpCurve.Evaluate(i / spawnDuration));
                break;

            case SpawnerType.Underground:
                enemyPawn.transform.position = Vector3.Lerp(startPosition.position, endPosition, verticalLerpCurve.Evaluate(i / spawnDuration));
                break;
            }
            yield return(null);
        }
        enemyPawn.transform.position = endPosition;
        if (type == SpawnerType.Air)
        {
            Destroy(explosionVisualizer);
            foreach (Collider col in Physics.OverlapSphere(explosionVisualizer.transform.position, _enemy.spawnImpactRadius))
            {
                IHitable hitableTarget = col.GetComponent <IHitable>();
                if (hitableTarget != null)
                {
                    hitableTarget.OnHit(default, explosionVisualizer.transform.position - col.transform.position, _enemy, _enemy.spawnImpactDamages, DamageSource.SpawnImpact);
Пример #4
0
    // Update is called once per frame
    void Update()
    {
        if (activated)
        {
            currentTimer                 -= Time.deltaTime;
            currentTimerExplosion        -= Time.deltaTime;
            currentTimerExplosionBarrage -= Time.deltaTime;
            invisibleColliderForward.transform.position  = Vector3.Lerp(invisibleColliderForward.transform.position, ColliderForwardWantedPosition, 0.1f);
            invisibleColliderBackward.transform.position = Vector3.Lerp(invisibleColliderBackward.transform.position, ColliderBackwardWantedPosition, 0.1f);



            if (currentTimer < 0)
            {
                activated = false;
                invisibleColliderForward.SetActive(false);
                invisibleColliderBackward.transform.position = transform.position + (currentPositionMultiplier - 3) * directionIndiania;
                indianaCamera.onRail = false;
            }


            if (currentTimerExplosion < 0)
            {
                currentTimerExplosion = 1 / nbExplosionBySec;
                int     i_temproll = Random.Range(0, 3);
                Vector3 i_wantedPosition;
                if (i_temproll == 0)
                {
                    i_wantedPosition = GameManager.playerOne.transform.position;
                }
                else if (i_temproll == 1)
                {
                    i_wantedPosition = GameManager.playerTwo.transform.position;
                }
                else
                {
                    i_wantedPosition = Vector3.Lerp(GameManager.playerTwo.transform.position, GameManager.playerOne.transform.position, 0.5f);
                }
                i_wantedPosition = new Vector3(i_wantedPosition.x + Random.Range(-maxDistancePlayer, maxDistancePlayer), i_wantedPosition.y, i_wantedPosition.z + Random.Range(-maxDistancePlayer, maxDistancePlayer));
                IndianaExplosion i_newExplosion = Instantiate(prefabIndianaExplosion, i_wantedPosition, Quaternion.Euler(-90, 0, 0)).GetComponent <IndianaExplosion>();
                i_newExplosion.myScale = Random.Range(minSizeExplosion, maxSizeExplosion);
                i_newExplosion.waitTimeForExplosion = explosionWaitingTime;
                i_newExplosion.indianaManager       = this;
                i_newExplosion.isBarrage            = false;
                i_newExplosion.Initiate();
            }


            if (currentTimerExplosionBarrage < 0)
            {
                currentTimerExplosionBarrage = timeBarrage;

                currentPositionMultiplier++;
                ColliderBackwardWantedPosition   = transform.position + (currentPositionMultiplier - 4f) * directionIndiania;
                ColliderForwardWantedPosition    = transform.position + (currentPositionMultiplier + 3.5f) * directionIndiania;
                indianaCamera.railPositionWanted = transform.position + (currentPositionMultiplier + 1) * directionIndiania;
                for (int j = 0; j < nbBarrage; j++)
                {
                    for (int i = 0; i < nbExplosionByBarrage; i++)
                    {
                        Vector3 i_wantedPosition = startposition + (currentPositionMultiplier - j) * directionIndiania;
                        i_wantedPosition += directionBarrage * i;
                        IndianaExplosion i_newExplosion = Instantiate(prefabIndianaExplosion, i_wantedPosition, Quaternion.Euler(-90, 0, 0)).GetComponent <IndianaExplosion>();
                        i_newExplosion.myScale = maxSizeExplosion;
                        i_newExplosion.waitTimeForExplosion = explosionWaitingTime;
                        i_newExplosion.indianaManager       = this;
                        i_newExplosion.isBarrage            = true;
                        i_newExplosion.Initiate();
                    }
                }
            }
        }
    }