void OnTriggerEnter(Collider other) { Transform rootT = other.gameObject.transform.root; GameObject go = rootT.gameObject; //print("Triggered: " + go.name); // Make sure it's not the same triggering go as last time if (go == lastTriggerGo) { // c return; } lastTriggerGo = go; // d if (go.tag == "Enemy" && go.name != "Shooter(Clone)") { // If the shield was triggered by an enemy TakeDamage(); // Decrease the level of the shield by 1 //print(shieldLevel); Destroy(go); // … and Destroy the enemy // e } else if (go.tag == "PowerUp") { // If the shield was triggered by a PowerUp AbsorbPowerUp(go); } else if (go.tag == "Enemy" && go.name == "Shooter(Clone)") { Enemy_2 enemyShooter = go.GetComponent <Enemy_2>(); enemyShooter.target = this.transform.position; // print(enemyShooter.target); } else { print("Triggered by non-Enemy: " + go.name); // f } }
//check if bullet is colliding with something private void OnTriggerEnter2D(Collider2D hitInfo) { //things that a bullet can do damage to Enemy_1 enemy_1 = hitInfo.GetComponent <Enemy_1>(); Flyer_Enemy_Movement enemy_flying_1 = hitInfo.GetComponent <Flyer_Enemy_Movement>(); //the flying enemy that follows the player Fly_Back_And_Forth enemy_flying_2 = hitInfo.GetComponent <Fly_Back_And_Forth>(); //the flying enemy that just consistently flys back and forth Enemy_2 enemy_2 = hitInfo.GetComponent <Enemy_2>(); //the platform patroller Block_Shootable block_shootable = hitInfo.GetComponent <Block_Shootable>(); //the block that you can destroy with a shot BubbleBoy_1 bubble_boy_1 = hitInfo.GetComponent <BubbleBoy_1>(); //getting reference to the Player to ignore collision with bullet Player the_player = hitInfo.GetComponent <Player>(); if (enemy_1 != null) { enemy_1.TakeDamage(damage); } if (enemy_flying_1 != null) { enemy_flying_1.TakeDamage(damage); } if (enemy_flying_2 != null) { enemy_flying_2.TakeDamage(damage); } if (enemy_2 != null) { enemy_2.TakeDamage(damage); } if (block_shootable != null) { block_shootable.TakeDamage(100); //100 is all of the block's health } if (bubble_boy_1 != null) { bubble_boy_1.TakeDamage(damage); } //if bullet collides with player, ignore it if (the_player != null) { return; } Destroy(gameObject); //destroy bullet }
// private BoundsCheck bndCheck; public void ShipDestroyed(Enemy e) { // c // Potentially generate a PowerUp if (Random.value <= e.powerUpDropChance) { // d // Choose which PowerUp to pick // Pick one from the possibilities in powerUpFrequency int ndx = Random.Range(0, powerUpFrequency.Length); // e WeaponType puType = powerUpFrequency[ndx]; // Spawn a PowerUp GameObject go = Instantiate(prefabPowerUp) as GameObject; PowerUp pu = go.GetComponent <PowerUp>(); // Set it to the proper WeaponType pu.SetType(puType); // f // Set it to the position of the destroyed ship // pu.transform.position = e.transform.position; if (e.transform.gameObject.name == "Shooter(Clone)") { Enemy_2 e2 = e.transform.root.gameObject.GetComponent <Enemy_2>(); spawnPositions[e2.MainPositionIndex] = Vector3.zero; pu.transform.position = new Vector3(0f, 1.5f, 0f); } else { pu.transform.position = new Vector3(e.transform.position.x, 1.5f, e.transform.position.z); } } if (e.transform.gameObject.name == "Shooter(Clone)") { score += 20f; } else { score += 10f; } UpdateScore(); }
public void SpawnEnemy() { // Pick a random Enemy prefab to instantiate int ndx = Random.Range(0, prefabEnemies.Length); // b GameObject go = Instantiate <GameObject>(prefabEnemies[ndx]); // c // Position the Enemy above the screen with a random x position float enemyPadding = enemyDefaultPadding; // d Vector3 pos = Vector3.zero; float xMin = -60f; float xMax = 60f; float zMin = -60f; float zMax = 60f; pos.x = Random.Range(xMin, xMax); pos.y = 0.5f; if (go.name == "Enemy(Clone)") { pos.z = zMax; //North of the wall } else if (go.name == "Shooter(Clone)") { Enemy_2 e2Go = go.GetComponent <Enemy_2>(); switch (spawnPositions.Count) { case 0: pos = spawnPoint[0]; spawnPositions.Add(spawnPoint[0]); // North West corner e2Go.MainPositionIndex = 0; break; case 1: pos = spawnPoint[1]; spawnPositions.Add(spawnPoint[1]); // North East corner e2Go.MainPositionIndex = 1; break; case 2: pos = spawnPoint[2]; spawnPositions.Add(spawnPoint[2]); // South East corner e2Go.MainPositionIndex = 2; break; case 3: pos = spawnPoint[3]; spawnPositions.Add(spawnPoint[3]); // South West corner e2Go.MainPositionIndex = 3; break; default: for (int i = 0; i < spawnPositions.Count; i++) { if (spawnPositions[i] == Vector3.zero) { //there is a vacancy pos = spawnPoint[i]; spawnPositions[i] = spawnPoint[i]; e2Go.MainPositionIndex = i; } if (i == spawnPositions.Count - 1) { go.SetActive(false); } } break; } } if (go.activeInHierarchy) { go.transform.position = pos; } else { Destroy(go); } // Invoke SpawnEnemy() again Invoke("SpawnEnemy", 1f / enemySpawnPerSecond); // g }
public void Fire() { // If this.gameObject is inactive, return if (!gameObject.activeInHierarchy) { return; // h } // If it hasn't been enough time between shots, return if (Time.time - lastShotTime < def.delayBetweenShots) { // i return; } if (transform.root.gameObject.tag == "Player") { Ray ray = Camera.main.ViewportPointToRay(Vector3.one * 0.5f); // Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f,3f,0f)); Debug.DrawRay(ray.origin, ray.direction * 100f, Color.red, 2f); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, 100f)) { target = hitInfo.point; if (hitInfo.rigidbody != null) { // hitInfo.rigidbody.AddForceAtPosition(ray.direction * pokeForce, hitInfo.point); } } } else if (transform.root.gameObject.tag == "Enemy") { Enemy_2 enemyShooter = transform.root.gameObject.GetComponent <Enemy_2>(); target = enemyShooter.target; //print(target); } Projectile p; Vector3 vel = Vector3.zero; Debug.Log(target); if (collar != null) { vel = (target - collar.transform.position) * def.velocity; // j } /* if (transform.up.y < 0) * { * vel.y = -vel.y; * }*/ switch (type) { // k case WeaponType.blaster: p = MakeProjectile(); p.rigid.velocity = vel; // p.rigid.MovePosition(new Vector3(-20,0,30) * def.velocity *200f); break; case WeaponType.spread: // l p = MakeProjectile(); // Make middle Projectile p.rigid.velocity = vel; p = MakeProjectile(); // Make right Projectile p.transform.rotation = Quaternion.AngleAxis(10, collar.transform.forward); p.rigid.velocity = p.transform.rotation * vel; p = MakeProjectile(); // Make left Projectile p.transform.rotation = Quaternion.AngleAxis(-10, Vector3.forward); p.rigid.velocity = p.transform.rotation * vel; break; } }
public static void ResetAllFreq() { _dropPowerUp = 6; Enemy_1.ResetFreq(); Enemy_2.ResetFreq(); }