示例#1
0
    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);
    }