// Update is called once per frame
    void Update()
    {
        Noise();

        if (blink.spawn)
        {
            blink.SpriteBlinkingEffect();
        }
        else
        {
            if (target != null)
            {
                //If one player (who are not the actual target) is closer than the target, then the script change of target
                var maxDistance = float.MaxValue;
                for (int i = 0; i < players.Count; i++)
                {
                    var whichOneCloser = GetDistance(players[i].gameObject);
                    if (whichOneCloser < maxDistance)
                    {
                        target      = players[i].gameObject;
                        maxDistance = whichOneCloser;
                    }
                }
                //Condition to turn animations on
                if (methodAttack == MethodAttack.Cac)
                {
                    if (anim_atack && methodToDie != MethodToDie.Kamikaze)
                    {
                        AttackCac();
                    }
                    else
                    {
                        timer = 0;
                    }
                    transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, 0);

                    if (GetDistance(target) < detectionDistance)
                    {
                        Follow();
                        if (methodToDie != MethodToDie.Kamikaze)
                        {
                            if (animator != null)
                            {
                                animator.SetBool("running", true);
                            }
                        }
                    }
                    else
                    {
                        if (methodToDie != MethodToDie.Kamikaze)
                        {
                            if (animator != null)
                            {
                                animator.SetBool("running", false);
                            }
                        }
                    }
                }
                else if (methodAttack == MethodAttack.DistanceShoot)
                {
                    if (GetDistance(target) < distanceShoot)
                    {
                        if (canShoot)
                        {
                            if (GetDistance(target) > 4)
                            {
                                coroutineFire = FireCoroutine(cooldown);
                                StartCoroutine(coroutineFire);
                            }
                        }
                    }
                    //But if he's too close, then he leave in the opposite direction of players
                    if (GetDistance(target) < detectionDistance_minimalBeforeLeave)
                    {
                        Leave();
                    }
                    else
                    {
                        Follow();
                    }
                }
            }

            //If the monster don't have target then we look for one
            if (target == null)
            {
                var maxDistance = float.MaxValue;
                for (int i = 0; i < players.Count; i++)
                {
                    var whichOneCloser = GetDistance(players[i].gameObject);
                    if (whichOneCloser < maxDistance)
                    {
                        target      = players[i].gameObject;
                        maxDistance = whichOneCloser;
                    }
                }
            }

            Start_surround();
            if (methodToKill == MethodToKill.Surround)
            {
                switch (num_trig)
                {
                case 4:
                    shakeDuration  = 1;
                    shakeMagnitude = 0.04f;
                    CameraShake();
                    foreach (Transform child in ropeSystemGetChild.transform)
                    {
                        child.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0, 255);
                    }
                    break;

                case 5:
                    shakeDuration  = 1;
                    shakeMagnitude = 0.05f;
                    CameraShake();
                    foreach (Transform child in ropeSystemGetChild.transform)
                    {
                        child.GetComponent <SpriteRenderer>().color = new Color(255, 150, 0, 255);
                    }
                    break;

                case 6:
                    shakeDuration  = 1;
                    shakeMagnitude = 0.06f;
                    CameraShake();
                    foreach (Transform child in ropeSystemGetChild.transform)
                    {
                        child.GetComponent <SpriteRenderer>().color = new Color(255, 255, 0, 255);
                    }
                    break;

                case 7:
                    shakeDuration  = 1;
                    shakeMagnitude = 0.07f;
                    CameraShake();
                    foreach (Transform child in ropeSystemGetChild.transform)
                    {
                        child.GetComponent <SpriteRenderer>().color = new Color(150, 255, 0, 255);
                    }
                    break;

                case 8:
                    shakeDuration  = 0;
                    shakeMagnitude = 0;
                    foreach (Transform child in ropeSystemGetChild.transform)
                    {
                        child.GetComponent <SpriteRenderer>().color = new Color(0, 255, 0, 255);
                    }
                    if (!confirmed)
                    {
                        confirmed = true;
                    }
                    break;

                default:
                    shakeDuration  = 0;
                    shakeMagnitude = 0;
                    foreach (Transform child in ropeSystemGetChild.transform)
                    {
                        child.GetComponent <SpriteRenderer>().color = new Color(255, 255, 255, 255);
                    }
                    confirmed = false;
                    break;
                }
            }

            if (num_trig >= num_triggered)
            {
                if (Players_dashing())
                {
                    if (methodToKill == MethodToKill.Cut && methodToDie != MethodToDie.Kamikaze || methodToKill == MethodToKill.Surround)
                    {
                        players[0].testVibrationHitRope = true;
                        players[1].testVibrationHitRope = true;
                        if (animator != null)
                        {
                            animator.SetBool("dead", true);
                        }
                        gameObject.GetComponent <Collider2D>().enabled = false;
                        GetComponent <Rigidbody2D>().bodyType          = RigidbodyType2D.Static;
                        transform.localScale = new Vector3(1, 1, 1);
                        StartCoroutine(Dead());
                    }
                }

                if (players[0].get_MovementX() != 0 || players[1].get_MovementY() != 0)
                {
                    timerCut += Time.deltaTime;
                    if (methodToKill == MethodToKill.Surround)
                    {
                        transform.localScale = Vector3.Lerp(transform.localScale, new Vector3(0.6f, 1, 1), timerCut / timerCut_TOT);
                    }

                    if (timerCut > timerCut_TOT)
                    {
                        players[0].testVibrationHitRope = true;
                        players[1].testVibrationHitRope = true;

                        gameObject.GetComponent <Collider2D>().enabled = false;
                        GetComponent <Rigidbody2D>().bodyType          = RigidbodyType2D.Static;
                        transform.localScale = new Vector3(1, 1, 1);

                        if (methodToDie == MethodToDie.Normal)
                        {
                            animator.SetBool("dead", true);
                            StartCoroutine(Dead());
                        }
                        else if (methodToDie == MethodToDie.Kamikaze)
                        {
                            blink.spriteBlinkingTotalDuration = timer_BeforeExplosion;
                            blink.spriteBlinkingMiniDuration  = 0.1f;
                            blink.spawn = true;
                            StartCoroutine(Wait_EXPLOSIONN());
                        }
                    }
                }
                else
                {
                    timerCut = 0;
                }
            }
            else
            {
                timerCut             = 0;
                transform.localScale = new Vector3(1, 1, 1);
            }
        }
    }
Example #2
0
    // Update is called once per frame
    void Update()
    {
        if (blink.spawn)
        {
            blink.SpriteBlinkingEffect();
        }
        else
        {
            // TP
            if (curr_delay_tp > 0)
            {
                curr_delay_tp -= Time.deltaTime;
            }
            else
            {
                if ((targets[0].transform.position - transform.position).magnitude < 5 || (targets[1].transform.position - transform.position).magnitude < 5)
                {
                    tp_active = true;
                    StartCoroutine("Tepe");
                    curr_delay_tp = delay_tp;
                }
            }

            //If the monster don't have target then we look for one
            if (target == null)
            {
                var maxDistance = float.MaxValue;
                for (int i = 0; i < players.Count; i++)
                {
                    var whichOneCloser = GetDistance(players[i].gameObject);
                    if (whichOneCloser < maxDistance)
                    {
                        target      = players[i].gameObject;
                        maxDistance = whichOneCloser;
                    }
                }
            }

            //SHOOT
            if (target != null && !tp_active)
            {
                //If one player (who are not the actual target) is closer than the target, then the script change of target
                var maxDistance = float.MaxValue;
                for (int i = 0; i < players.Count; i++)
                {
                    var whichOneCloser = GetDistance(players[i].gameObject);
                    if (whichOneCloser < maxDistance)
                    {
                        target      = players[i].gameObject;
                        maxDistance = whichOneCloser;
                    }
                }
                //Condition to turn animations on
                if (GetDistance(target) < distanceShoot)
                {
                    if (canShoot)
                    {
                        if (GetDistance(target) > 4)
                        {
                            coroutineFire = FireCoroutine(cooldown);
                            StartCoroutine(coroutineFire);
                        }
                    }
                }
            }

            Start_surround();
            switch (num_trig)
            {
            case 4:
                shakeDuration  = 1;
                shakeMagnitude = 0.04f;
                CameraShake();
                foreach (Transform child in ropeSystemGetChild.transform)
                {
                    child.GetComponent <SpriteRenderer>().color = new Color(255, 0, 0, 255);
                }
                break;

            case 5:
                shakeDuration  = 1;
                shakeMagnitude = 0.05f;
                CameraShake();
                foreach (Transform child in ropeSystemGetChild.transform)
                {
                    child.GetComponent <SpriteRenderer>().color = new Color(255, 150, 0, 255);
                }
                break;

            case 6:
                shakeDuration  = 1;
                shakeMagnitude = 0.06f;
                CameraShake();
                foreach (Transform child in ropeSystemGetChild.transform)
                {
                    child.GetComponent <SpriteRenderer>().color = new Color(255, 255, 0, 255);
                }
                break;

            case 7:
                shakeDuration  = 1;
                shakeMagnitude = 0.07f;
                CameraShake();
                foreach (Transform child in ropeSystemGetChild.transform)
                {
                    child.GetComponent <SpriteRenderer>().color = new Color(150, 255, 0, 255);
                }
                break;

            case 8:
                shakeDuration  = 0;
                shakeMagnitude = 0;
                foreach (Transform child in ropeSystemGetChild.transform)
                {
                    child.GetComponent <SpriteRenderer>().color = new Color(0, 255, 0, 255);
                }
                if (!confirmed)
                {
                    confirmed = true;
                }
                break;

            default:
                shakeDuration  = 0;
                shakeMagnitude = 0;
                foreach (Transform child in ropeSystemGetChild.transform)
                {
                    child.GetComponent <SpriteRenderer>().color = new Color(255, 255, 255, 255);
                }
                confirmed = false;
                break;
            }

            if (num_trig >= num_triggered && !tp_active)
            {
                if (Players_dashing())
                {
                    players[0].testVibrationHitRope = true;
                    players[1].testVibrationHitRope = true;
                    if (animator != null)
                    {
                        animator.SetBool("dead", true);
                    }
                    gameObject.GetComponent <Collider2D>().enabled = false;
                    GetComponent <Rigidbody2D>().bodyType          = RigidbodyType2D.Static;
                    transform.localScale = new Vector3(1, 1, 1);
                    StartCoroutine(Dead());
                }

                if (players[0].get_MovementX() != 0 || players[1].get_MovementY() != 0)
                {
                    timerCut            += Time.deltaTime;
                    transform.localScale = Vector3.Lerp(transform.localScale, new Vector3(0.6f, 1, 1), timerCut / timerCut_TOT);

                    if (timerCut > timerCut_TOT)
                    {
                        players[0].testVibrationHitRope = true;
                        players[1].testVibrationHitRope = true;

                        gameObject.GetComponent <Collider2D>().enabled = false;
                        GetComponent <Rigidbody2D>().bodyType          = RigidbodyType2D.Static;
                        transform.localScale = new Vector3(1, 1, 1);

                        animator.SetBool("dead", true);
                        StartCoroutine(Dead());
                    }
                }
                else
                {
                    timerCut = 0;
                }
            }
            else
            {
                timerCut             = 0;
                transform.localScale = new Vector3(1, 1, 1);
            }
        }
    }
Example #3
0
    private void Update()
    {
        if (canShoot)
        {
            StartCoroutine(SpriteInstanciation(0.05f));
        }

        //MINI MAP
        if (miniMap.GetBool("Open"))
        {
            timer += Time.deltaTime;
        }

        if (miniMap.GetBool("Open") && miniMap.GetBool("Close"))
        {
            timer = 0;
        }

        //Reset God Mode timer
        if (god_ModeAction.godMode == false)
        {
            god_ModeAction.timerTotGodMode = god_ModeAction.oldValueTimerGod;
        }

        //UI control with the controller
        if (manager.life <= 0)
        {
            pause.cheatModeButton.SetActive(false);
        }

        /*
         * if (ReInput.controllers.joystickCount > 0 && !pause.cheatMode.activeSelf && !modo_solo)
         * {
         *  Cursor.visible = false;
         *  Cursor.lockState = CursorLockMode.Locked;
         * }
         * else
         * {
         *  Cursor.visible = true;
         *  Cursor.lockState = CursorLockMode.None;
         * }*/

        if (rew_player.GetButtonDown("PanicHealth"))
        {
            if (manager.life > 0)
            {
                manager.life = manager.max_Life;
                manager.Update_liveDisplay();
            }
        }

        if (rew_player.GetButtonDown("Pause") && !modo_solo)
        {
            if (manager.life > 0)
            {
                if (pause.menu.activeSelf)
                {
                    pause.cheatModeButton.SetActive(true);
                    pause.menu.SetActive(false);
                    Time.timeScale = 1;
                }
                else
                {
                    pause.cheatModeButton.SetActive(false);
                    pause.menu.SetActive(true);
                    Time.timeScale = 0;
                }
            }
        }

        if (rew_player.GetButtonDown("CheatMode"))
        {
            if (!miniMap.GetBool("Open"))
            {
                miniMap.SetBool("Open", true);
            }

            if (!miniMap.GetBool("Close") && timer >= timerMiniMap)
            {
                timer = 0;
                miniMap.SetBool("Close", true);
            }
        }

        if (rew_player.GetButtonDown("Panic"))
        {
            if (panicEscape.enabled)
            {
                for (int i = 0; i < manager.players_Movement.Count; i++)
                {
                    manager.players_Movement[i].Stop_Moving();
                }
                panicEscape.mashingCanvas.SetActive(true);
            }
        }

        ///////// HIT SYSTEM - A CLEAN ////////////////
        if (testVibrationHitRope)
        {
            joysticVibrationMan.Vibrate_Control_Kill();
            camera_ShakeMan.start_Shake_Kill(0.2f);
            timerRope += Time.deltaTime;
            if (timerRope > timerTot_RopeHitVibrate)
            {
                testVibrationHitRope   = false;
                god_ModeAction.godMode = false;
                timerRope = 0;
            }
        }

        if (!testVibrationHitRope || joysticVibrationMan.alreadyVibrated)
        {
            joysticVibrationMan.Vibrate_Control();
        }

        if (startBlinking)
        {
            joysticVibrationMan.alreadyVibrated = false;
            joysticVibrationMan.Vibrate_Control_Hit();
            camera_ShakeMan.start_Shake_Hit(0.3f);
            blinking_Effect.SpriteBlinkingEffect();
        }
        /////////////////////////

        //Set the position of the Sprite to the extrems of the chains
        if (PlayerNum == Enum_PlayerNum.PlayerOne && rope_system.get_points().Count > 0)
        {
            transform.position = rope_system.get_points()[0].transform.position + new Vector3(0, -y_offset, 0);;
        }
        else if (PlayerNum == Enum_PlayerNum.PlayerTwo && rope_system.get_points().Count > 0)
        {
            transform.position = rope_system.get_points()[rope_system.NumPoints - 1].transform.position + new Vector3(0, -y_offset, 0);;;
        }

        // Dash timer
        if (dash_tmp > 0)
        {
            dash_tmp -= Time.deltaTime;
        }
        else
        {
            dash_tmp = 0;
        }

        //Geting the direction of the movement and detecting if the player started a dash
        if (modo_solo)
        {
            if (PlayerNum == Enum_PlayerNum.PlayerOne)
            {
                if (can_move)
                {
                    movementX = rew_player.GetAxis("MoveHorizontal_p1");
                    movementY = rew_player.GetAxis("MoveVertical_p1");
                }
                if (rew_player.GetButtonDown("Dash_p1") && dash_tmp <= 0 && new Vector2(movementX, movementY) != Vector2.zero)
                {
                    Start_Dash();
                    Physics2D.IgnoreLayerCollision(19, 21);
                }
            }
            else if (PlayerNum == Enum_PlayerNum.PlayerTwo)
            {
                if (can_move)
                {
                    movementX = rew_player.GetAxis("MoveHorizontal_p2");
                    movementY = rew_player.GetAxis("MoveVertical_p2");
                }

                if (rew_player.GetButtonDown("Dash_p2") && dash_tmp <= 0 && new Vector2(movementX, movementY) != Vector2.zero)
                {
                    Start_Dash();
                    //To cros the "Holes"
                    Physics2D.IgnoreLayerCollision(20, 21);
                }
            }
        }
        else
        {
            if (can_move)
            {
                movementX = rew_player.GetAxis("MoveHorizontal");
                movementY = rew_player.GetAxis("MoveVertical");
            }
            if (rew_player.GetButtonDown("Dash") && dash_tmp <= 0 && new Vector2(movementX, movementY) != Vector2.zero)
            {
                Start_Dash();
                if (PlayerNum == Enum_PlayerNum.PlayerOne)
                {
                    Physics2D.IgnoreLayerCollision(19, 21);
                }
                else if (PlayerNum == Enum_PlayerNum.PlayerTwo)
                {
                    Physics2D.IgnoreLayerCollision(20, 21);
                }
            }
        }

        //Sprite Fliping
        if (movementX > 0)
        {
            gameObject.GetComponent <SpriteRenderer>().flipX = false;
        }
        else if (movementX < 0)
        {
            gameObject.GetComponent <SpriteRenderer>().flipX = true;
        }

        Set_inputs_Animation();

        // If Player dont move, play idle anim
        idle_anim();
        Move(movementX, movementY);
    }