跳完之后下来快一点

本文关键字:一点 之后 | 更新日期: 2023-09-27 18:26:16

在我的2D游戏中,我需要我的玩家能够在跳跃后拉下。我试着在操纵杆上使用垂直控制,但它只是让我四处漂浮。当我试着跳的时候,我在空中停留的时间太长了。我希望能够把我的球员拉低。如何在没有输入.getkeydown的情况下获得这种移动?这是代码:

public class PlayerControl : MonoBehaviour
{
    [HideInInspector]
    public bool facingRight = true;         // For determining which way the player is currently facing.
    [HideInInspector]
    public bool jump = false;               // Condition for whether the player should jump.
    public float moveForce = 365f;          // Amount of force added to move the player left and right.
    public float maxSpeed = 5f;             // The fastest the player can travel in the x axis.
    public float jumpForce = 1000f;// Amount of force added when the player jumps.
    public string jumpButton = "Jump_P1";
    public string horizontalCtrl = "Horizontal_P1";
    public string verticalCtrl = "Vertical_P1";

    private Transform groundCheck;          // A position marking where to check if the player is grounded.
    private bool grounded = false;          // Whether or not the player is grounded.

    void Awake()
    {
        // Setting up references.
        groundCheck = transform.Find("groundCheck");
    }
    void Update(){
        // The player is grounded if a linecast to the groundcheck position hits anything on the ground layer.
        grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));  
        // If the jump button is pressed and the player is grounded then the player should jump.
        if(Input.GetButtonDown(jumpButton) && grounded)
            jump = true;
    }
    void FixedUpdate ()
    {
        // Cache the horizontal input.
        float h = Input.GetAxis (horizontalCtrl);
        float a = Input.GetAxis (verticalCtrl);

        // If the player is changing direction (h has a different sign to velocity.x) or hasn't reached maxSpeed yet...
        if (h * GetComponent<Rigidbody2D> ().velocity.x < maxSpeed)
            // ... add a force to the player.
            GetComponent<Rigidbody2D> ().AddForce (Vector2.right * h * moveForce);
        // If the player's horizontal velocity is greater than the maxSpeed...
        if (Mathf.Abs (GetComponent<Rigidbody2D> ().velocity.x) > maxSpeed)
            // ... set the player's velocity to the maxSpeed in the x axis.
            GetComponent<Rigidbody2D> ().velocity = new Vector2 (Mathf.Sign (GetComponent<Rigidbody2D> ().velocity.x) * maxSpeed, GetComponent<Rigidbody2D> ().velocity.y);
        // If the input is moving the player right and the player is facing left...
        if (h > 0 && !facingRight)
            // ... flip the player.
            Flip ();
        // Otherwise if the input is moving the player left and the player is facing right...
        else if (h < 0 && facingRight)
            // ... flip the player.
            Flip ();
        // If the player should jump...
        if (jump) {
            // Add a vertical force to the player.
            GetComponent<Rigidbody2D> ().AddForce (new Vector2 (0f, jumpForce));
            // Make sure the player can't jump again until the jump conditions from Update are satisfied.
            jump = false;
        }
    }
    void Flip ()
    {
        // Switch the way the player is labelled as facing.
        facingRight = !facingRight;
        // Multiply the player's x local scale by -1.
        Vector3 theScale = transform.localScale;
        theScale.x *= -1;
        transform.localScale = theScale;
    }
}

跳完之后下来快一点

增加玩家RigidBody2D的重力,同时增加jumpForce变量,使其跳得足够高。随着重力和跳跃力的增加,他现在可以跳得尽可能高,然后重力会把他迅速送回地面。