public bool BulletsHitSomething(Vector2Int position, GameObject currentObject) { GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy"); if (currentObject.CompareTag("Enemy Projectile")) { //The size of the current object on the UI var UISize = currentObject.GetComponent <SpriteRenderer>().bounds.size; Rect UIobjRect = new Rect((int)Math.Round(position.x - (UISize.x / 2)), (int)Math.Round(position.y - (UISize.y / 2)), (int)Math.Round(UISize.x), (int)Math.Round(UISize.y)); Vector2Int obstaclePoint = new Vector2Int((int)Math.Round(player.transform.position.x - (player.transform.localScale.x / 2)), (int)Math.Round(player.transform.position.y - (player.transform.localScale.y / 2))); Vector2Int obstacleRect = new Vector2Int((int)Math.Round(player.transform.localScale.x), (int)Math.Round(player.transform.localScale.y)); Rect UIObstacleRect = new Rect(obstaclePoint, obstacleRect); if (UIobjRect.Overlaps(UIObstacleRect)) { if (currentObject.GetComponent <Bullet>().Moving) { DestroyImmediate(currentObject); player.TakeDamage(1); return(true); } } } foreach (GameObject obstacle in obstacles) { //The size of the current object on the UI var UISize = currentObject.GetComponent <SpriteRenderer>().bounds.size; Rect UIobjRect = new Rect((int)Math.Round(position.x - (UISize.x / 2)), (int)Math.Round(position.y - (UISize.y / 2)), (int)Math.Round(UISize.x), (int)Math.Round(UISize.y)); Vector2Int obstaclePoint = new Vector2Int((int)Math.Round(obstacle.transform.position.x - (obstacle.transform.localScale.x / 2)), (int)Math.Round(obstacle.transform.position.y - (obstacle.transform.localScale.y / 2))); Vector2Int obstacleRect = new Vector2Int((int)Math.Round(obstacle.transform.localScale.x), (int)Math.Round(obstacle.transform.localScale.y)); Rect UIObstacleRect = new Rect(obstaclePoint, obstacleRect); if (UIobjRect.Overlaps(UIObstacleRect)) { if (currentObject.CompareTag("Enemy Projectile")) { DestroyImmediate(currentObject); } return(true); } } foreach (GameObject enemy in enemies) { SpriteRenderer sprite = enemy.GetComponent <SpriteRenderer>(); //The size of the current object on the UI var UISize = currentObject.GetComponent <SpriteRenderer>().bounds.size; Rect UIobjRect = new Rect((int)Math.Round(position.x - (UISize.x / 2)), (int)Math.Round(position.y - (UISize.y / 2)), (int)Math.Round(UISize.x), (int)Math.Round(UISize.y)); Vector2Int obstaclePoint = new Vector2Int((int)Math.Round(enemy.transform.position.x - (sprite.size.x * enemy.transform.localScale.x / 2)), (int)Math.Round(enemy.transform.position.y - (sprite.size.y * enemy.transform.localScale.y / 2))); Vector2Int obstacleRect = new Vector2Int((int)Math.Round(sprite.size.x * enemy.transform.localScale.x), (int)Math.Round((sprite.size.y * enemy.transform.localScale.y))); Rect UIObstacleRect = new Rect(obstaclePoint, obstacleRect); if (UIobjRect.Overlaps(UIObstacleRect)) { if (currentObject.CompareTag("Projectile")) { DestroyImmediate(currentObject); enemyController temp = enemy.GetComponent <enemyController>(); if (temp.pointVie > 1) { temp.pointVie--; } else { if (temp.typeNME == "buff") { Instantiate(NMEBuffDead, enemy.transform.position, Quaternion.identity); for (int i = 0; i < 3; i++) { GameObject boule = Instantiate(bulletPrefab, enemy.transform.position, Quaternion.identity); boule.GetComponent <Bullet>().Moving = false; } } else if (temp.typeNME == "kamikaze") { Instantiate(NMEKamikazeDead, enemy.transform.position, Quaternion.identity); GameObject boule = Instantiate(bulletPrefab, enemy.transform.position, Quaternion.identity); boule.GetComponent <Bullet>().Moving = false; temp.ExplosionKamikaze(); } DestroyImmediate(enemy); spawncontroller.nbrNME--; } return(true); } } } //TODO ADD COLLISION WITH THE ENNEMIES return(false); }