首页 > 解决方案 > 我想成功,所以当我在空中右键单击跳跃一次时,我不能再这样做了

问题描述

所以我有这个问题,我想解决这个问题,所以当我在空中右击一次(作为额外的跳跃)(在用空间跳跃之后)我不能再做一次。

这是我目前的运动脚本:

public class Move2D : MonoBehaviour 
{
    public float moveSpeed = 5f;
    public bool isGrounded = false;

    void Update()
    {
        Jump();
        Vector3 movement = new Vector3(Input.GetAxis("Horizontal"), 0f, 0f);
        transform.position += movement * Time.deltaTime * moveSpeed;
    }

    void Jump()
    {
        if (Input.GetButtonDown("Jump") && isGrounded == true)
        {
            gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, 8f), ForceMode2D.Impulse);
        }

        if (Input.GetMouseButtonDown(1) && isGrounded == false)
        {
            gameObject.GetComponent<Rigidbody2D>().AddForce(new Vector2(0f, 4f), ForceMode2D.Impulse);
        }
    }
}

这是我当前的“接地”脚本

public class Grounded : MonoBehaviour

    {
    GameObject Player;
    // Start is called before the first frame update
    void Start()
    {
        Player = gameObject.transform.parent.gameObject;
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.collider.tag == "Ground")
        {
            Player.GetComponent<Move2D>().isGrounded = true;
        }
    }

    private void OnCollisionExit2D(Collision2D collision)
    {
        if (collision.collider.tag == "Ground")
        {
            Player.GetComponent<Move2D>().isGrounded = false;
        }
    }
}

我在 youtube 上遵循了这个脚本。如果我需要为以后的帖子提供更多信息,请回答。我对编码很陌生。

标签: c#unity3d

解决方案


因此,您已经必须isGrounded防止双击跳转键(我想您说过空格),并且该逻辑足够简单,可以扩展以防止双击:

  • 添加一个新的全局变量isBoosted(在 下添加isGrounded);
  • 当你跳跃时,以及为你的暴徒增加一些动力,也设置isBoosted为 false;
  • 当您右键单击以进行第二次跳转时,检查是否isBoosted为假;
  • 在右键单击的代码中,设置isBoosted为 true,并为您的模型添加更多动力。

第一次提升时,您将设置isBoosted为 true,第二次尝试提升时将失败,因为测试为isBoostedfalse 将失败。当你撞到地面并使​​用空间再次跳跃时,它会重置,因此每次“重置”时都会让你获得新的提升。

这是“最好”的方式吗?可能不是,但它与你已经拥有的一致......


推荐阅读