示例#1
0
    void Update()
    {
        if (!isPaused)
        {
            if (isLocked)
            {
                audioData.Stop(); //stops the whip sound from playing when miles is locked on the floor changing mechanism, but hasnt chosen a direction
                whipAnim.Play("MilesWhipPulledBackIdleStop");
                MilesFrontWalk.enabled = false;
                MilesBackWalk.enabled  = false;

                foreach (GameObject sprites in MilesSprites)
                {
                    sprites.GetComponent <SpriteRenderer>().enabled = false;
                }

                if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1) || Input.GetButtonDown("Fire3") || Input.GetButtonDown("Fire5"))
                {
                    audioData.clip = audioClipArray[11]; //plays whip sound after player makes a direction choice
                    audioData.PlayOneShot(audioData.clip);
                    playedOnce = false;
                    isLocked   = false;
                    shake.triggerShakeBig();
                    whipAnim.Play("MilesWhipPulledBackIdle");
                }
            }

            if (notMoving && !isJumping && !isRolling && !justJumped && isGrounded && !isWhipping && !bigDropQuake)//trying to stop sliding
            {
                rb.drag = 2f;
            }
            else
            {
                rb.drag = 0.2f;
            }
            if (isDead)
            {
                SceneManager.LoadScene("DeathScene");
            }
            else if (isWhipping && isGrounded && !isLocked && !justJumped && !isRolling && !playedOnce)
            {
                foreach (GameObject sprites in MilesSprites)
                {
                    sprites.GetComponent <SpriteRenderer>().enabled = false;
                }

                MilesFrontWalk.enabled = false;
                MilesBackWalk.enabled  = false;
                whipAnim.Play("MilesWhippingFrameByFrame"); //whip extending animation

                if (!isLocked && playedOnce == false)
                {
                    audioData.clip = audioClipArray[11];
                    audioData.PlayOneShot(audioData.clip);
                    StartCoroutine(WhipAnimationDelay());
                    playedOnce = true;
                }
            }
            else if (!isWhipping && !isLocked)
            {
                // moves character
                if ((Input.GetAxis("Horizontal") != 0) || (Input.GetAxis("Vertical") != 0))
                {
                    notMoving = false;
                }
                else
                {
                    notMoving = true;
                }
                if (MilesFrontWalk && !facingFront)
                {
                    TurnOffFrontWalk();
                }

                if (!stayStill)
                {
                    if (!facingFront)
                    {
                        transform.Translate(Input.GetAxis("Horizontal") * speed * Time.deltaTime, 0f, Input.GetAxis("Vertical") * speed * Time.deltaTime);
                    }
                    else
                    {
                        transform.Translate(Input.GetAxis("Horizontal") * speed * Time.deltaTime, 0f, -1 * (speed + 3) * Time.deltaTime);
                    }

                    if (Input.GetMouseButton(0) || Input.GetButtonDown("Fire4"))
                    {
                        if (isGrounded && !isRolling && !justJumped)
                        {
                            isWhipping = true;
                            //Debug.Log("Whipping");
                        }
                    } //press mouse button to whip

                    if (Input.GetAxis("Horizontal") > 0)
                    {
                        //player is going right
                        isBackTurned         = false;
                        transform.localScale = new Vector3(defaultScale, transform.localScale.y, transform.localScale.z);
                        whip.sortingOrder    = 10;
                        if (facingFront && !notMoving)
                        {
                            RunAnimation();
                        }
                        else if (facingFront && notMoving)
                        {
                            anim.Play("MilesIdle");
                        }
                    }
                    else if (Input.GetAxis("Horizontal") < 0)
                    {
                        //player is going left
                        isBackTurned         = false;
                        transform.localScale = new Vector3(-defaultScale, transform.localScale.y, transform.localScale.z);
                        whip.sortingOrder    = 0;
                        if (facingFront && !notMoving)
                        {
                            RunAnimation();
                        }
                        else if (facingFront && notMoving)
                        {
                            anim.Play("MilesIdle");
                        }
                    }
                    //character moving toward camera
                    if (Input.GetAxis("Vertical") < 0)
                    {
                        if (Input.GetAxis("Horizontal") == 0)
                        {
                            foreach (GameObject sprites in MilesSprites)
                            {
                                sprites.GetComponent <SpriteRenderer>().enabled = false;
                            }

                            MilesFrontWalk.enabled = true;
                            MilesBackWalk.enabled  = false;

                            if (!justJumped && isGrounded)
                            {
                                frontMiles.Play("MilesFrontRunCycle");
                            }

                            isBackTurned = false;
                        }
                    }
                    //character moving away from camera
                    if (Input.GetAxis("Vertical") > 0)
                    {
                        if (Input.GetAxis("Horizontal") == 0)
                        {
                            foreach (GameObject sprites in MilesSprites)
                            {
                                sprites.GetComponent <SpriteRenderer>().enabled = false;
                            }
                            if (facingFront)//these if statments make sure the player cant face away from the camera when in auto run "Boulder" mode
                            {
                                frontMiles.Play("MilesFrontRunCycle");
                            }
                            else if (!facingFront)
                            {
                                MilesBackWalk.enabled  = true;
                                MilesFrontWalk.enabled = false;
                            }
                            if (!justJumped && isGrounded)
                            {
                                backMiles.Play("MilesBackRunCycle");
                            }
                            isBackTurned = true;
                        }
                    }

                    if (!isGrounded)
                    {
                        timeInAir += Time.deltaTime;
                        //Debug.Log(timeInAir);
                    }

                    if (timeInAir > maxAirTime)
                    {
                        if (timeInAir > 6f)
                        {
                            bigDropQuake = false;
                        }
                        else if (timeInAir < 6f)
                        {
                            bigDropQuake = true;
                        }
                    }

                    if (Input.GetKeyDown(KeyCode.F))
                    {
                        if (isGrounded && notMoving)
                        {
                            anim.Play("MilesFart");
                            fartParticles.Play();
                        }

                        if (!isGrounded && (!notMoving || notMoving))
                        {
                            anim.Play("MilesFartAirborne");
                            fartParticles.Play();
                        }

                        if (!isGrounded && !fartJumpCooldown)
                        {
                            //rb.velocity = new Vector3(rb.velocity.x, jumpForce, rb.velocity.z);
                            fartJumpCooldown = true;
                            fartParticles.Play();
                        }
                    }

                    // roll
                    if (isGrounded && !isRolling && (Input.GetKeyDown("left shift") || Input.GetButtonDown("Fire3")))
                    {
                        if (!facingFront && !notMoving)
                        {
                            speed    += rollSpeed;
                            isRolling = true;
                            RollAnimation();
                            StartCoroutine(RollBack());
                        }
                        else if (facingFront && !isRolling) //removing !isRolling causes the player to infinitely speedup
                        {
                            speed           += rollSpeed;
                            isRolling        = true;
                            frontMiles.speed = 1.8f;
                            frontMiles.Play("MilesFrontRunCycle");
                            StartCoroutine(RollBack());
                        }
                    }
                    // roll back
                    if (isGrounded && rollStop)
                    {
                        speed    -= rollSpeed;
                        isRolling = false;
                        rollStop  = false;
                    }

                    // applies force vertically if the space key is pressed
                    if (isGrounded && (Input.GetKeyDown("space") || Input.GetButton("Fire1")))
                    {
                        if (justJumped == false && isJumping == false)
                        {
                            rb.velocity = new Vector3(rb.velocity.x, jumpForce, rb.velocity.z);
                            justJumped  = true;
                            isJumping   = true;
                            JumpAnimation();
                            PlayerJumpSound();
                            StartCoroutine(JumpReset());
                        }
                    }

                    // stairs checker
                    if (isGrounded)
                    {
                        newPosition = gameObject.transform.position.y;

                        if (newPosition > originalPosition)
                        {
                            isStairs = true;
                        }
                        else
                        {
                            isStairs = false;
                        }

                        originalPosition = gameObject.transform.position.y;
                    }
                }
            }
        }
        // coins
        if (isGreen > 0)
        {
            if (counterGreen != greenValue)
            {
                score += 1;
                ScoreDisplay();
                text.text += score;
                counterGreen++;

                if (counterGreen == greenValue)
                {
                    counterGreen = 0;
                    isGreen--;
                }
            }
        }
        if (isGold > 0)
        {
            if (counterGold != goldValue)
            {
                score += 1;
                ScoreDisplay();
                text.text += score;
                counterGold++;

                if (counterGold == goldValue)
                {
                    counterGold = 0;
                    isGold--;
                }
            }
        }
        if (isSilver > 0)
        {
            if (counterSilver != silverValue)
            {
                score += 1;
                ScoreDisplay();
                text.text += score;
                counterSilver++;

                if (counterSilver == silverValue)
                {
                    counterSilver = 0;
                    isSilver--;
                }
            }
        }
    }