Beispiel #1
0
    void FixedUpdate()
    {
        if (climber.Climbing)
        {
            if (dir.x > 0.1f)
            {
                climber.ClimbDown(ClimbSpeed);
            }
            if (dir.x < -0.1f)
            {
                climber.ClimbUp(ClimbSpeed);
            }
        }
        else
        {
            if (Mathf.Abs(dir.x) > 0.1f && HasRoom(dir.x))
            {
                rb.velocity = new Vector2(dir.x * MoveSpeed, rb.velocity.y);
            }
            else
            {
                rb.velocity = new Vector2(0, rb.velocity.y);
            }
        }

        if (dir.y > 0.1f)
        {
            climber.ClimbUp(ClimbSpeed);
        }
        if (dir.y < -0.1f)
        {
            climber.ClimbDown(ClimbSpeed);
        }

        if (climber.Climbing && dir.magnitude < 0.1f)
        {
            rb.velocity = Vector2.zero;
        }

        if (jump)
        {
            if (climber.Climbing || IsGrounded())
            {
                rb.velocity = new Vector2(rb.velocity.x, 0);
                rb.AddForce(new Vector2(0, JumpSpeed));
                climber.Release();
                jump = false;
            }
        }
    }
Beispiel #2
0
 void FixedUpdate()
 {
     if (config.ClimbDownStairs)
     {
         if (climber != null)
         {
             if (climber.ClimbDown(config.ClimbingSpeed))
             {
                 shouldMove = false;
                 //transform.eulerAngles = new Vector2(0f, -180f);
             }
             else
             {
                 shouldMove = true;
             }
         }
         else
         {
             Debug.Log("<color=red>No climber on " + gameObject.name + "!</color>");
         }
     }
     if (shouldMove && grounded && !stopped)
     {
         rb2D.velocity = new Vector2(velocityX, rb2D.velocity.y);
     }
 }