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(); }
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(); } }
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);
// 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(); } } } } }