private void CheckCollisionWithPlayer()
    {
        garbage.SpawnRandomGarbageAtRandomLocation(true);
        garbage.SpawnRandomGarbageAtRandomLocation(true);
        garbage.SpawnRandomGarbageAtRandomLocation(true);
        garbage.SpawnRandomGarbageAtRandomLocation(true);

        Camera.main.GetComponent <Camera_controller>().CameraShake();
        Collider2D[]    contacts = new Collider2D[5];
        ContactFilter2D filter   = new ContactFilter2D();

        collider.GetComponent <Collider2D> ().OverlapCollider(filter.NoFilter(), contacts);
        foreach (Collider2D collision in contacts)
        {
            if (collision != null)
            {
                PlayerController playerController = collision.gameObject.GetComponent <PlayerController> ();
                if (playerController != null)
                {
                    playerController.Damage(30f);
                    return;
                }
            }
        }
    }
Пример #2
0
    void FixedUpdate()
    {
        if (firstphase)
        {
            if (castTimer < 0)
            {
                CastSpell();
                castTimer  -= TimerReset;
                TimerReset -= 0.5f;
            }

            if (transform.position.x > 12)
            {
                MoveRight = -1f;
            }
            else if (transform.position.x < -12)
            {
                MoveRight = 1f;
            }

            if (transform.position.y > 20)
            {
                MoveUp = -1f;
            }
            else if (transform.position.y < 14)
            {
                MoveUp = 1f;
            }

            if (!DuringCast)
            {
                castTimer -= Time.fixedDeltaTime;
                Move();
            }
            if (DuringCast)
            {
                if (SpellStage == 0)
                {
                    if (transform.position.y < -2)
                    {
                        transform.position   = new Vector2(0, -2);
                        wizardBody.velocity  = new Vector2(0, 8);
                        wizardHands.velocity = new Vector2(0, 8);
                        NormalFace.SetActive(false);
                        AngerFace.SetActive(true);
                        SpellStage = 1;
                        Debug.Log("SpellStage 1");
                    }
                }
                else if (SpellStage == 1)
                {
                    if (transform.position.y > 20)
                    {
                        wizardBody.velocity = new Vector2(0, 0);
                    }
                    if (wizardHandsHolder.transform.position.y > 22)
                    {
                        wizardHands.velocity       = new Vector2(0, 0);
                        LeftHandHalf.sortingOrder  = 3;
                        RightHandHalf.sortingOrder = 3;
                    }
                    if (wizardHandsHolder.transform.position.y > 22 && transform.position.y > 20)
                    {
                        SpellStage           = 2;
                        wizardHands.velocity = new Vector2(0, -7);
                        wizardBody.velocity  = new Vector2(0, 7);
                        Debug.Log("SpellStage 2");
                    }
                }
                else if (SpellStage == 2)
                {
                    if (transform.position.y > 32)
                    {
                        wizardBody.velocity = new Vector2(0, 0);
                    }

                    if (wizardHandsHolder.transform.position.y < 16)
                    {
                        wizardHands.velocity = new Vector2(0, 0);
                    }
                    if (wizardHandsHolder.transform.position.y <= 16 && transform.position.y >= 32)
                    {
                        SpellStage           = 3;
                        wizardHands.velocity = new Vector2(0, 5);
                        //wizardBody.velocity = new Vector2(0,7);
                        Debug.Log("SpellStage 3");
                    }
                }
                else if (SpellStage == 3)
                {
                    if (transform.position.y > 32)
                    {
                        wizardBody.velocity = new Vector2(0, 0);
                    }

                    if (wizardHandsHolder.transform.position.y > 23)
                    {
                        wizardHands.velocity = new Vector2(0, 0);
                    }
                    if (wizardHandsHolder.transform.position.y >= 23 && transform.position.y >= 32)
                    {
                        SpellStage           = 4;
                        wizardHands.velocity = new Vector2(0, 5);
                        //wizardBody.velocity = new Vector2(0,7);
                        Debug.Log("SpellStage 4");
                        audiosource.Play();
                    }
                }
                else if (SpellStage == 4)
                {
                    if (wizardHandsHolder.transform.position.y > 30)
                    {
                        wizardHands.velocity       = new Vector2(0, -20);
                        RightHandFist.enabled      = true;
                        RightHandFull.enabled      = false;
                        RightHandHalf.enabled      = false;
                        LeftHandFist.enabled       = true;
                        LeftHandFull.enabled       = false;
                        LeftHandHalf.enabled       = false;
                        RightHandFist.sortingOrder = 3;
                        LeftHandFist.sortingOrder  = 3;
                        Debug.Log("SpellStage 5");
                        SpellStage = 5;
                    }
                }
                else if (SpellStage == 5)
                {
                    if (wizardHandsHolder.transform.position.y < 20)
                    {
                        Camera.main.GetComponent <Camera_controller>().CameraShake();
                        SpawnPowerup();

                        float playerX = PlayerTransform.position.x;
                        float playerY = PlayerTransform.position.y;
                        garbageSpawner.SpawnRandomGarbageAtLocation(playerX, playerY, true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                        garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);

                        wizardHands.velocity = new Vector2(0, 3);
                        SpellStage           = 6;

                        Debug.Log("SpellStage 6");
                    }
                }
                else if (SpellStage == 6)
                {
                    if (wizardHandsHolder.transform.position.y > 23)
                    {
                        wizardHands.velocity       = new Vector2(0, -8);
                        wizardBody.velocity        = new Vector2(0, -8);
                        SpellStage                 = 7;
                        RightHandFist.sortingOrder = 0;
                        LeftHandFist.sortingOrder  = 0;
                        RightHandFull.sortingOrder = 0;
                        RightHandHalf.sortingOrder = 0;
                        LeftHandFull.sortingOrder  = 0;
                        LeftHandHalf.sortingOrder  = 0;

                        Debug.Log("SpellStage 7");
                    }
                }
                else if (SpellStage == 7)
                {
                    if (wizardHandsHolder.transform.position.y < 8)
                    {
                        wizardHands.velocity = new Vector2(0, 0);
                        //SpellStage =7;
                        RightHandFist.enabled = false;
                        RightHandFull.enabled = true;
                        RightHandHalf.enabled = true;
                        LeftHandFist.enabled  = false;
                        LeftHandFull.enabled  = true;
                        LeftHandHalf.enabled  = true;
                        DuringCast            = false;
                        NormalFace.SetActive(true);
                        AngerFace.SetActive(false);
                        Debug.Log("Spell done");
                    }
                }
            }
        }
        //FINAL PHASE
        else
        {
            if (castTimer < 0)
            {
                CastBossSpell();
                castTimer  -= TimerReset;
                TimerReset -= 0.5f;
            }


            if (NumSpellsCast == 2)
            {
                if (SpellStage == 0)
                {
                    Debug.Log("into SpellStage 0");
                    transform.position = Vector3.Lerp(transform.position, new Vector3(0, 14.4f, 0), 2 * Time.deltaTime);
                    wizardHandsHolder.transform.position = Vector3.Lerp(wizardHandsHolder.transform.position, new Vector3(0.25f, 14.45f, 0.2109375f), 4 * Time.deltaTime);

                    movementCooldown -= Time.fixedDeltaTime;
                    if (movementCooldown < 0)
                    {
                        SpellStage         = 1;
                        VulnerableCooldown = 8f;
                        healthLoseLimit    = wizardHealth - 35;
                        Debug.Log("Moved into vuln area");
                        isVulnerable = true;
                        leftHandHalfGameObject.GetComponent <WizardHandDamageable>().SwitchCollider(true);
                        rightHandHalfGameObject.GetComponent <WizardHandDamageable>().SwitchCollider(true);
                        NormalFace.GetComponent <WizardFaceDamageable>().SwitchCollider(true);
                        //Make wizard and hands able to be hurt
                    }
                }
                else if (SpellStage == 1)
                {
                    VulnerableCooldown -= Time.fixedDeltaTime;
                    if (VulnerableCooldown < 0 || wizardHealth < healthLoseLimit)
                    {
                        wizardHandsHolder.transform.localPosition = new Vector3(0.25f, -6.4f, 0.2109375f);
                        Debug.Log("vulnerability complete");
                        isVulnerable  = false;
                        SpellStage    = 2;
                        NumSpellsCast = 0;

                        RightHandFist.enabled      = true;
                        RightHandFull.enabled      = false;
                        RightHandHalf.enabled      = false;
                        LeftHandFist.enabled       = true;
                        LeftHandFull.enabled       = false;
                        LeftHandHalf.enabled       = false;
                        LeftHandHalf.sortingOrder  = 0;
                        RightHandHalf.sortingOrder = 0;
                        vulnMode = false;
                        leftHandHalfGameObject.GetComponent <WizardHandDamageable>().SwitchCollider(false);
                        rightHandHalfGameObject.GetComponent <WizardHandDamageable>().SwitchCollider(false);
                        NormalFace.GetComponent <WizardFaceDamageable>().SwitchCollider(false);
                    }
                }
            }



            if (!DuringCast && !vulnMode)
            {
                if (transform.position.x > 12)
                {
                    MoveRight = -1f;
                }
                else if (transform.position.x < -12)
                {
                    MoveRight = 1f;
                }

                if (transform.position.y > 34)
                {
                    MoveUp = -1f;
                }
                else if (transform.position.y < 29)
                {
                    MoveUp = 1f;
                }

                castTimer -= Time.fixedDeltaTime;
                Move();
            }

            if (DuringCast)
            {
                //garbage ball
                if (ChosenSpell < 7)
                {
                    if (SpellStage == 0)
                    {
                        wizardHands.velocity       = new Vector2(0, -8);
                        LeftHandFist.sortingOrder  = 0;
                        RightHandFist.sortingOrder = 0;
                        SpellStage = 1;
                    }
                    else if (SpellStage == 1)
                    {
                        if (wizardHandsHolder.transform.position.y < -6)
                        {
                            garbageBall.SetActive(true);
                            wizardHands.velocity = new Vector2(0, 25);
                            Debug.Log("SpellStage 2");
                            SpellStage       = 2;
                            audiosource.clip = CastGarbageBall;
                            audiosource.Play();
                        }
                    }
                    else if (SpellStage == 2)
                    {
                        if (wizardHandsHolder.transform.position.y > 50)
                        {
                            SpawnPowerup();
                            garbageBall.SetActive(false);
                            wizardHands.velocity = new Vector2(0, 0);
                            SpellStage           = 3;
                            Debug.Log("SpellStage 3, garbage ball cast complete");

                            float playerX = PlayerTransform.position.x;
                            float playerY = PlayerTransform.position.y;
                            garbageSpawner.SpawnAtLocation(1, playerX, playerY, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX + 10, playerY, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX + 5f, playerY + 5f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX, playerY + 10f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX - 5f, playerY + 5f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX - 10f, playerY, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX - 5f, playerY - 5f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX, playerY - 10f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX + 7.5f, playerY - 7.5f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX + 15, playerY, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX + 7.5f, playerY + 7.5f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX, playerY + 15f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX - 7.5f, playerY + 7.5f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX - 15f, playerY, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX - 7.5f, playerY - 7.5f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX, playerY - 15f, true);
                            garbageSpawner.SpawnRandomGarbageAtLocation(playerX + 7.5f, playerY - 7.5f, true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);

                            DuringCast = false;
                            NormalFace.SetActive(true);
                            AngerFace.SetActive(false);
                            NumSpellsCast++;
                            if (NumSpellsCast == 2)
                            {
                                RightHandFist.enabled      = false;
                                RightHandFull.enabled      = true;
                                RightHandHalf.enabled      = true;
                                LeftHandFist.enabled       = false;
                                LeftHandFull.enabled       = true;
                                LeftHandHalf.enabled       = true;
                                LeftHandHalf.sortingOrder  = 3;
                                RightHandHalf.sortingOrder = 3;
                                vulnMode         = true;
                                SpellStage       = 0;
                                movementCooldown = 3;
                            }
                            else
                            {
                                wizardHandsHolder.transform.localPosition = new Vector3(0.25f, -6.4f, 0.2109375f);
                            }
                        }
                    }
                }

                //Hail of trash
                else if (ChosenSpell < 14)
                {
                    if (SpellStage == 0)
                    {
                        wizardHands.velocity = new Vector2(0, 5);
                        SpellStage           = 1;
                    }
                    else if (SpellStage == 1)
                    {
                        if (wizardHandsHolder.transform.position.y > 30)
                        {
                            wizardHands.velocity = new Vector2(0, -20);
                            Debug.Log("SpellStage 2");
                            SpellStage       = 2;
                            audiosource.clip = CastHailOfTrash;
                            audiosource.Play();
                        }
                    }
                    else if (SpellStage == 2)
                    {
                        if (wizardHandsHolder.transform.position.y < 20)
                        {
                            SpawnPowerup();
                            Camera.main.GetComponent <Camera_controller>().CameraShake();
                            float playerX = PlayerTransform.position.x;
                            float playerY = PlayerTransform.position.y;
                            garbageSpawner.SpawnAtLocation(1, playerX, playerY, true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);
                            garbageSpawner.SpawnRandomGarbageAtRandomLocation(true);

                            wizardHands.velocity = new Vector2(0, 0);
                            SpellStage           = 3;
                            //wizardHandsHolder.transform.localPosition = new Vector3(0.25f, -6.4f, 0.2109375f);
                            Debug.Log("SpellStage 3, hail of trash complete");

                            DuringCast = false;
                            NormalFace.SetActive(true);
                            AngerFace.SetActive(false);
                            NumSpellsCast++;
                            if (NumSpellsCast == 2)
                            {
                                RightHandFist.enabled      = false;
                                RightHandFull.enabled      = true;
                                RightHandHalf.enabled      = true;
                                LeftHandFist.enabled       = false;
                                LeftHandFull.enabled       = true;
                                LeftHandHalf.enabled       = true;
                                LeftHandHalf.sortingOrder  = 3;
                                RightHandHalf.sortingOrder = 3;
                                vulnMode         = true;
                                SpellStage       = 0;
                                movementCooldown = 5;
                            }
                            else
                            {
                                wizardHandsHolder.transform.localPosition = new Vector3(0.25f, -6.4f, 0.2109375f);
                            }
                        }
                    }
                }                        //Hail of trash end

                //Fist
                else if (ChosenSpell < 20)
                {
                    if (SpellStage == 0)
                    {
                        wizardHands.velocity = new Vector2(0, 10);
                        SpellStage           = 1;
                    }
                    else if (SpellStage == 1)
                    {
                        if (wizardHandsHolder.transform.position.y > 40)
                        {
                            SpawnPowerup();
                            audiosource.clip = CastFist;
                            audiosource.Play();
                            Debug.Log("SpellStage 2");
                            SpellStage  = 2;
                            fistCounter = 0;
                            StartCoroutine("Fist", 1);
                            StartCoroutine("Fist", 3);
                            StartCoroutine("Fist", 5);
                            wizardHands.velocity = new Vector2(0, 0);
                        }
                    }
                    else if (SpellStage == 2)
                    {
                        if (fistCounter == 3)
                        {
                            SpellStage = 3;
                            //wizardHandsHolder.transform.localPosition = new Vector3(0.25f, -6.4f, 0.2109375f);
                            Debug.Log("SpellStage 3, fist spell complete");

                            DuringCast = false;
                            NormalFace.SetActive(true);
                            AngerFace.SetActive(false);
                            NumSpellsCast++;
                            if (NumSpellsCast == 2)
                            {
                                RightHandFist.enabled      = false;
                                RightHandFull.enabled      = true;
                                RightHandHalf.enabled      = true;
                                LeftHandFist.enabled       = false;
                                LeftHandFull.enabled       = true;
                                LeftHandHalf.enabled       = true;
                                LeftHandHalf.sortingOrder  = 3;
                                RightHandHalf.sortingOrder = 3;
                                vulnMode         = true;
                                SpellStage       = 0;
                                movementCooldown = 3;
                            }
                            else
                            {
                                wizardHandsHolder.transform.localPosition = new Vector3(0.25f, -6.4f, 0.2109375f);
                            }
                        }
                    }
                }
            }

            if (SpellStage == 0)
            {
                if (transform.position.y < -2)
                {
                    transform.position   = new Vector2(0, -2);
                    wizardBody.velocity  = new Vector2(0, 8);
                    wizardHands.velocity = new Vector2(0, 8);
                    NormalFace.SetActive(false);
                    AngerFace.SetActive(true);
                    SpellStage = 1;
                    Debug.Log("SpellStage 1");
                }
            }
        }
    }            //Else for final phase