// Update is called once per frame void Update() { // Detección jugador // Calculamos el vector entre el enemigo y el jugador auxVector.x = shootingTarget.transform.position.x - transform.position.x; auxVector.y = shootingTarget.transform.position.y - transform.position.y; modulo = Mathf.Sqrt(Mathf.Pow(auxVector.x, 2) + Mathf.Pow(auxVector.y, 2)); targetEnemyVector.x = auxVector.x / modulo; targetEnemyVector.y = auxVector.y / modulo; // Actuamos si el jugador entra en el rango de visión del enemigo if (modulo <= detectionDistance) { // Disparo if (Time.time > nextShot) // Disparamos si ha pasado el tiempo suficiente entre disparos { nextShot = Time.time + fireRate; // Ponemos el valor del tiempo del siguiente disparo GameObject newShot = Instantiate <GameObject>(shot, shotSpawn.position, shotSpawn.rotation); // Instanciamos el disparo ShotBehaviour shotControl = newShot.GetComponent <ShotBehaviour>(); shotControl.vector = targetEnemyVector; } } }
protected void AddShot(float speed, float lifeTime, Transform friend) { //Add Shot to Update cicle if (length == shots.Length) { ShotBehaviour[] ss = new ShotBehaviour[shots.Length * 2]; for (int i = 0; i < shots.Length; i++) { ss[i] = shots[i]; } shots = ss; } shots[length] = this; _index = length; length++; // ShotInit _speed = speed; _lifeTime = lifeTime; _friend = friend; _forward = transform.forward; _back = transform.position; _startTime = Time.time; }
/// <summary> /// Takes away health and destroys if dead /// </summary> /// <param name="collision"></param> void OnCollisionEnter2D(Collision2D collision) { // Hit by laser if (collision.gameObject.name.Contains("Laser")) { ShotBehaviour shot = collision.gameObject.GetComponent <ShotBehaviour>(); Health -= shot.shotDamage; Destroy(collision.gameObject); } // Enemy dies and lets GameController know if (Health <= 0) { Destroy(gameObject); GameController controller = GameObject.FindGameObjectWithTag("GameController"). GetComponent <GameController>(); controller.KilledEnemy(); } }
// Update is called once per frame void Update() { if (shootingTarget.GetComponent <Transform>().position.x > this.GetComponent <Transform>().position.x) { vector.Set(1, 0); } else { vector.Set(-1, 0); } // Disparo if (Time.time > nextShot) // Disparamos si ha pasado el tiempo suficiente entre disparos { nextShot = Time.time + Random.Range(minFireRate, maxFireRate); // Ponemos el valor del tiempo del siguiente disparo GameObject newShot = Instantiate <GameObject>(shot, shotSpawn.position, shotSpawn.rotation); // Instanciamos el disparo ShotBehaviour shotControl = newShot.GetComponent <ShotBehaviour>(); shotControl.vector = vector; } }
public static void ClearBehaviour() { shots = new ShotBehaviour[100]; length = 0; }
void Update() { playerIsInside = detector.GetComponent <OnRangeDetector>().isOnRange; stalactiteSpawn.position = new Vector2(position, stalactiteSpawn.position.y); if (health >= 0) { if (playerIsInside) { if (Time.time > timeSinceLastStalactite + nextStalactite) { GameObject newStalactite; newStalactite = Instantiate <GameObject>(stalactite, stalactiteSpawn); timeSinceLastStalactite = Time.time; nextStalactite = Random.Range(2.5f, 3.5f); position = Random.Range(0, distance) + stalactiteLeft.position.x; } if (Time.time > timeSinceLastProjectile + nextProjectile) { GameObject newShot; if (side == 0) { if (type == 0) { newShot = Instantiate <GameObject>(normalProjectile, lowerShot); } else { newShot = Instantiate <GameObject>(deadlyProjectile, lowerShot); } } else if (type == 0) { newShot = Instantiate <GameObject>(normalProjectile, upperShot); } else { newShot = Instantiate <GameObject>(deadlyProjectile, upperShot); } if (type == 1) { DeadlyShot shotControl = newShot.GetComponent <DeadlyShot>(); shotControl.direction = new Vector2(-1, 0); shotControl.initTime = Time.time; } else { ShotBehaviour shotControl = newShot.GetComponent <ShotBehaviour>(); shotControl.vector = new Vector2(-1, 0); } timeSinceLastProjectile = Time.time; nextProjectile = Random.Range(1.0f, 4.0f); side = Random.Range(0, 2); type = Random.Range(0, 2); } if (waterSplashed) { GameObject newSplash; newSplash = Instantiate <GameObject>(waterSplash, waterSplashSpawn); waterSplashed = false; Destroy(newSplash, 0.4f); } if (exploded) { GameObject newExplosion; newExplosion = Instantiate <GameObject>(explosion, explosionSpawn); exploded = false; Destroy(newExplosion, 0.3f); } } } else { Debug.Log("Dead"); } }
private void Start() { shotBehaviour = gameObject.GetComponentInParent <ShotBehaviour>(); }
// Update is called once per frame void Update() { if (!dead) { if (bossHP <= 10 && bossHP >= 7) { minGenerateTime = 6.0f; maxGenerateTime = 8.0f; minFireTime = 3.0f; maxFireTime = 5.0f; } else if (bossHP < 7 && bossHP > 3) { minGenerateTime = 4.0f; maxGenerateTime = 6.0f; minFireTime = 3.0f; maxFireTime = 5.0f; } else { minGenerateTime = 2.0f; maxGenerateTime = 3.0f; minFireTime = 3.0f; maxFireTime = 5.0f; } if (Time.time > nextEnemy) { spawnNow = Random.Range(1, 3); if (spawnNow == 1) { Instantiate <GameObject>(enemyGenerate, shotSpawn1.position, shotSpawn1.rotation); } if (spawnNow == 2) { Instantiate <GameObject>(enemyGenerate, shotSpawn2.position, shotSpawn2.rotation); } if (spawnNow == 3) { Instantiate <GameObject>(enemyGenerate, shotSpawn3.position, shotSpawn3.rotation); } nextEnemy = Time.time + Random.Range(minGenerateTime, maxGenerateTime); } if (Time.time > nextShot) { GameObject newShot = Instantiate <GameObject>(shot, shotSpawnBoss.position, shotSpawnBoss.rotation); ShotBehaviour shotControl = newShot.GetComponent <ShotBehaviour>(); shotControl.vector = targetVector; nextShot = Time.time + Random.Range(minFireTime, maxFireTime); } gameObject.GetComponent <Transform>().localScale = new Vector3(20 + bossHP, 20 + bossHP, 0); gameObject.GetComponent <Transform>().localPosition = initialPosition + (new Vector3(0.65f * (10 - bossHP), -0.65f * (10 - bossHP), 0)); shotSpawnBoss.GetComponent <Transform>().position = initShotSpawnBoss; shotSpawn1.GetComponent <Transform>().position = init1; shotSpawn2.GetComponent <Transform>().position = init2; shotSpawn3.GetComponent <Transform>().position = init3; } else { if (Time.time > nextDieTime && counter < 4) { gameObject.GetComponent <Transform>().localScale = gameObject.GetComponent <Transform>().localScale - new Vector3(5, 5, 0); counter++; nextDieTime = Time.time + dieTimeRate; } if (counter >= 4) { Instantiate <GameObject>(pickUp, shotSpawnBoss.position, shotSpawnBoss.rotation); Destroy(this); } } }