Beispiel #1
0
    void OnCollisionEnter(Collision col)
    {
        GameObject objectCollision = col.gameObject;
        string     collisionTag    = objectCollision.tag;

        if (collisionTag == "Ship")
        {
            if (!ship.CheckReflection() && !ship.CheckRedirection())
            {
                if (projectileType == "EnemyProjectileLaser")
                {
                    prefabPools.CreateExplosion(transform, 0.16f);
                    ship.PlayerTakeDamage(projectileDamage);
                }
                else if (projectileType == "EnemyProjectileRocket")
                {
                    prefabPools.CreateExplosion(transform, 0.27f);
                    ship.PlayerTakeDamage(projectileDamage);
                    gameManager.audioManager.PlaySound(6);
                }
                else if (projectileType == "EnemyProjectileAcid")
                {
                    ship.ActivateAcid(5);
                    //for (int curIcon = 0; curIcon < 2; curIcon++)
                    //{
                    randRow    = Random.Range(0, Board.GridRows);
                    randColumn = Random.Range(0, Board.GridColumns);
                    board.boardIcons[(randRow), (randColumn)].ActivateAcid(projectileDamage, 5);
                    //}
                }
                else if (projectileType == "EnemyProjectileDrain")
                {
                    if (normalProjectile)
                    {
                        prefabPools.CreateExplosion(transform, 0.22f);
                        ship.PlayerTakeDamage(projectileDamage);
                    }
                }
                else if (projectileType == "EnemyProjectileWeaken")
                {
                    if (normalProjectile)
                    {
                        prefabPools.CreateExplosion(transform, 0.22f);
                        ship.PlayerTakeDamage(projectileDamage);
                    }
                }
                else if (projectileType == "EnemyProjectileFire")
                {
                    randRow    = Random.Range(0, Board.GridRows);
                    randColumn = Random.Range(0, Board.GridColumns);
                    for (int curRow = 0; curRow < 3; curRow++)
                    {
                        for (int curCol = 0; curCol < 3; curCol++)
                        {
                            int randomNumber = Random.Range(0, 3);

                            if (randomNumber > 0)
                            {
                                board.boardIcons[(randRow + curRow) % Board.GridRows, (randColumn + curCol) % Board.GridColumns].ActivateFire(projectileDamage);
                            }
                        }
                    }
                }
                if (normalProjectile)
                {
                    PushOnStack();
                }
            }
            else if (ship.CheckReflection() && normalProjectile)
            {
                if (projectileType == "EnemyProjectileRocket" || projectileType == "EnemyProjectileLaser" || projectileType == "EnemyProjectileFire" || projectileType == "EnemyProjectileAcid" || projectileType == "EnemyProjectileDrain" || projectileType == "EnemyProjectileWeaken")
                {
                    SetReflected();
                    gameManager.missionTracker.IncrementMissionProgress(11, 1);
                }
            }
            else if (normalProjectile)
            {
                if ((projectileType == "EnemyProjectileRocket" || projectileType == "EnemyProjectileLaser" || projectileType == "EnemyProjectileFire" || projectileType == "EnemyProjectileAcid" || projectileType == "EnemyProjectileDrain" || projectileType == "EnemyProjectileWeaken") && normalProjectile)
                {
                    SetRedirected();
                }
            }
        }
        else if (collisionTag == "Enemy")
        {
            if (reflected)
            {
                if (projectileType == "EnemyProjectileLaser")
                {
                    prefabPools.CreateExplosion(transform, 0.13f);
                    objectCollision.GetComponent <Enemy>().EnemyTakeDamage(projectileDamage, 1.0f, false);
                }
                else if (projectileType == "EnemyProjectileRocket")
                {
                    prefabPools.CreateExplosion(transform, 0.13f);
                    objectCollision.GetComponent <Enemy>().EnemyTakeDamage(projectileDamage, 1.2f, false);
                }
                else if (projectileType == "EnemyProjectileAcid")
                {
                    objectCollision.GetComponent <Enemy>().ActivateDamageOverTime(projectileDamage, 5, 0);
                }
                else if (projectileType == "EnemyProjectileFire")
                {
                    objectCollision.GetComponent <Enemy>().ActivateDamageOverTime(projectileDamage, 5, 1);
                }
                else if (projectileType == "EnemyProjectileDrain")
                {
                    prefabPools.CreateExplosion(transform, 0.2f);
                    objectCollision.GetComponent <Enemy>().EnemyTakeDamage(projectileDamage, 1.2f, false);
                }
                else
                {
                    prefabPools.CreateExplosion(transform, 0.2f);
                    objectCollision.GetComponent <Enemy>().EnemyTakeDamage(projectileDamage, 1.2f, false);
                }
                PushOnStack();
            }
        }
        else if (collisionTag == "ArmamentSecondary" && normalProjectile)
        {
            gameManager.missionTracker.IncrementMissionProgress(3, 1);
            gameManager.prefabPools.CreateExplosion(transform, 0.16f);
            PushOnStack();
        }
        else if (collisionTag == "Asteroid")
        {
            if (projectileType == "EnemyProjectileLaser")
            {
                prefabPools.CreateExplosion(transform, 0.13f);
                objectCollision.GetComponent <Asteroid>().EnemyTakeDamage(projectileDamage, 0.0f);
            }
            else if (projectileType == "EnemyProjectileRocket")
            {
                prefabPools.CreateExplosion(transform, 0.13f);
                objectCollision.GetComponent <Asteroid>().EnemyTakeDamage(projectileDamage, 0.0f);
            }
            else if (projectileType == "EnemyProjectileAcid")
            {
                objectCollision.GetComponent <Asteroid>().ActivateDamageOverTime(projectileDamage, 5, 0);
            }
            else if (projectileType == "EnemyProjectileFire")
            {
                objectCollision.GetComponent <Asteroid>().ActivateDamageOverTime(projectileDamage, 5, 1);
            }
            else if (projectileType == "EnemyProjectileDrain")
            {
                prefabPools.CreateExplosion(transform, 0.2f);
                objectCollision.GetComponent <Asteroid>().EnemyTakeDamage(projectileDamage, 0.0f);
            }
            else
            {
                prefabPools.CreateExplosion(transform, 0.2f);
                objectCollision.GetComponent <Asteroid>().EnemyTakeDamage(projectileDamage, 0.0f);
            }
            PushOnStack();
        }
    }