void BulletCollision() { bullets = shipShootBulletScript.bullets; if (bullets.Count > 0) { for (int i = 0; i < bullets.Count; i++) { SpriteRenderer bulletRender; if (bullets[i] != null) { bulletRender = bullets[i].GetComponent <SpriteRenderer>(); for (int j = 0; j < asteroids.Count; j++) { SpriteRenderer asteroidRender = asteroids[j].GetComponent <SpriteRenderer>(); if (detect.AABBCollision(bullets[i], asteroids[j])) { source.Play(); asteroidMovementScript = asteroids[j].GetComponent <AsteroidMovement>(); //this makes sure that the asteroid is the first so it splits if (asteroidMovementScript.firstIteration) { //creating 2 new asteroids GameObject asteroid1 = Instantiate(asteroidSpawningScript.asteroidPrefabs[Random.Range(0, asteroidSpawningScript.asteroidPrefabs.Count)], asteroids[j].transform.position, Quaternion.identity); asteroid1.transform.localScale /= 2; AsteroidMovement asteroid1Movement = asteroid1.GetComponent <AsteroidMovement>(); asteroid1Movement.asteroidVelocity = asteroids[j].GetComponent <AsteroidMovement>().asteroidVelocity *Random.Range(0.9f, 1.1f); asteroid1Movement.firstIteration = false; asteroids.Add(asteroid1); GameObject asteroid2 = Instantiate(asteroidSpawningScript.asteroidPrefabs[Random.Range(0, asteroidSpawningScript.asteroidPrefabs.Count)], asteroids[j].transform.position, Quaternion.identity); asteroid2.transform.localScale /= 2; AsteroidMovement asteroid2Movement = asteroid2.GetComponent <AsteroidMovement>(); asteroid2Movement.asteroidVelocity = asteroids[j].GetComponent <AsteroidMovement>().asteroidVelocity *Random.Range(0.9f, 1.1f); asteroid2Movement.firstIteration = false; asteroids.Add(asteroid2); } //GameObject asteroid2 = Instantiate(asteroidSpawningScript.asteroidPrefabs[asteroidSpawningScript.asteroidPrefabIndex], asteroids[j].transform.position, Quaternion.identity); Destroy(bullets[i]); bullets.RemoveAt(i); if (asteroidMovementScript.firstIteration) { score += 20; } else { score += 50; } Destroy(asteroids[j]); asteroids.RemoveAt(j); asteroidSpawningScript.asteroids = asteroids; shipShootBulletScript.bullets = bullets; break; } } } } } }
// Update is called once per frame void Update() { inContact = false; if (collision == CollisionType.AABB) { for (int i = 1; i < collisionObjects.Length; i++) { if (CollisionDetection.AABBCollision(collisionObjects[0], collisionObjects[i])) { inContact = true; indexNumber = i; } } } else { for (int i = 1; i < collisionObjects.Length; i++) { if (CollisionDetection.CircleCollision(collisionObjects[0], collisionObjects[i])) { inContact = true; indexNumber = i; } } } if (inContact) { collisionObjects[indexNumber].color = Color.red; collisionObjects[0].color = Color.red; } else { for (int i = 0; i < collisionObjects.Length; i++) { collisionObjects[i].color = Color.white; } } if (Input.GetKeyDown(KeyCode.Alpha1) && collision != CollisionType.AABB) { collision = CollisionType.AABB; } else if (Input.GetKeyDown(KeyCode.Alpha2) && collision != CollisionType.Circle) { collision = CollisionType.Circle; } }
// Update is called once per frame void Update() { // Switches collision type on input if (Input.GetKeyDown(KeyCode.Alpha1)) { collisionType = CollisionType.AABB; } else if (Input.GetKeyDown(KeyCode.Alpha2)) { collisionType = CollisionType.Circle; } // Keeps track of all objects that are colliding this frame List <GameObject> collidingObjects = new List <GameObject>(); switch (collisionType) { case (CollisionType.AABB): for (int i = 0; i < obsticles.Length; i++) { // If there's a collision, add the colliding objects to the list if (CollisionDetection.AABBCollision(player, obsticles[i])) { // Makes sure the player object doesn't get added multiple times if (!collidingObjects.Contains(player)) { collidingObjects.Add(player); } collidingObjects.Add(obsticles[i]); } } break; case (CollisionType.Circle): for (int i = 0; i < obsticles.Length; i++) { // If there's a collision, add the colliding objects to the list if (CollisionDetection.CircleCollision(player, obsticles[i])) { // Makes sure the player object doesn't get added multiple times if (!collidingObjects.Contains(player)) { collidingObjects.Add(player); } collidingObjects.Add(obsticles[i]); } } break; } if (collidingObjects.Contains(player)) { player.GetComponent <SpriteRenderer>().color = Color.red; } else { player.GetComponent <SpriteRenderer>().color = Color.white; } for (int i = 0; i < obsticles.Length; i++) { if (collidingObjects.Contains(obsticles[i])) { obsticles[i].GetComponent <SpriteRenderer>().color = Color.red; } else { obsticles[i].GetComponent <SpriteRenderer>().color = Color.white; } } }