Пример #1
0
    public void Update()
    {
        if (Input.GetKey(KeyCode.A))
        {
            playerMovement.MoveHorizontal(-1);
        }
        else if (Input.GetKey(KeyCode.D))
        {
            playerMovement.MoveHorizontal(1);
        }
        else
        {
            playerMovement.MoveHorizontal(0);
        }


        playerMovement.ApplyGravity();
        if (Input.GetKey(KeyCode.Space))
        {
            playerMovement.Jump();
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
        }

        if (Input.GetMouseButton(0))
        {
            // grab or throw
            if (plag.GrabbedObject && !playerMovement.OnLadder)
            {
                plag.PredictTrajectory();
            }
            else if (!playerMovement.OnLadder)
            {
                plag.Grab();
            }
        }
        else if (Input.GetMouseButtonUp(0) && plag.GrabbedObject)
        {
            plag.Throw();
        }
        else if (Input.GetMouseButton(1))
        {
            if (plag.GrabbedObject)
            {
                plag.Drop();
            }
        }

        var info = plat.Move(playerMovement.velocity * Time.deltaTime);

        if (!info.climbingSlope)
        {
            if (info.bottom || info.top)
            {
                playerMovement.velocity.y = 0;
            }
            if (info.left || info.right)
            {
                playerMovement.velocity.x = 0;
            }
        }

        playerMovement.MoveAnimation(info.velocity);
    }
Пример #2
0
    void Update()
    {
        if (plat.Grounded)
        {
            anim.SetInteger("jump", 0);
            if (fuel < 100)
            {
                fuel += FUEL_RECHARGE_RATE * Time.deltaTime;
                pls.PlayJetpackRefillingSound();
                if (fuel > 100)
                {
                    pls.PlayJetpackRefilledSound();
                    pls.PauseJetpackRefillingSound();
                    fuel = 100;
                }
            }
            flytimer = Time.time;
        }
        else
        {
            pls.PauseJetpackRefillingSound();
            canfly = Time.time > flytimer + 0.2f;
        }

        if (Input.GetKeyUp(KeyCode.Space))
        {
            pls.PauseJetpackUsingSound();
            jetpackParticle.Stop();
        }

        if (InWater)
        {
            anim.SetInteger("inwater", 1);
        }
        else
        {
            anim.SetInteger("inwater", 0);
        }

        if (plat.Grounded != oldGrounded)
        {
            if (plat.Grounded && oldVelocity.y < -2f)
            {
                pls.PlayLandSound();
                var p = Instantiate(landParticle, new Vector3(
                                        walkParticlePosition.position.x,
                                        walkParticlePosition.position.y + 0.2f,
                                        walkParticlePosition.position.z), Quaternion.identity);
            }
        }

        oldGrounded = plat.Grounded;
        oldVelocity = velocity;

        var cols = Physics2D.BoxCastAll(transform.position, new Vector2(1, 1), 0, Vector2.zero);

        foreach (var col in cols)
        {
            if (col.transform.tag == "Ladder" &&
                !OnLadder && (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.W)))
            {
                //Get on the ladder
                onLadderObject = col.transform.GetComponent <Ladder>();
                OnLadder       = true;

                var pos = transform.position;
                pos.x = onLadderObject.transform.position.x + (onLadderObject.Side == Ladder.LadderSide.RIGHT ? Ladder.LADDER_WIDTH : 0);
                transform.position = pos;

                var scale = transform.localScale;
                scale.x = onLadderObject.Side == Ladder.LadderSide.RIGHT ? -1 : 1;
                transform.localScale = scale;

                anim.SetBool("onladder", true);

                plygrab.Drop();
            }
        }
    }