碰撞时,不更改布尔变量

本文关键字:布尔 变量 碰撞 | 更新日期: 2023-09-27 18:34:19

我正在尝试用C#编写一个用于统一的脚本。这个脚本是为了让我的精灵跳跃。我要求精灵只有在接触地面时才能跳跃,所以当布尔值"isJumping"设置为 false 时。

在 Unity3D 中使用脚本时(尽管我使用的是 2D 预设并正在构建 2D 游戏),我可以在游戏首次运行时跳跃,但在击中空格后,布尔值设置为 true,当我与标记为"Ground"的接地相撞时,布尔值不会设置为假,这意味着我不能再跳了。

所以我想知道我做错了什么,以及为什么当我与"Ground"碰撞时,布尔值没有设置为 false。提前感谢您的帮助!下面是代码。:)

using UnityEngine;
using System.Collections;
public class Jump1 : MonoBehaviour {
    public float jumpHeight;
    public bool isJumping = false;
    void Start() {
    }
    void Update() {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            if (isJumping == false)
            {
               rigidbody2D.AddForce(Vector2.up * jumpHeight);
               isJumping = true;
            }
        }
    }
    void onCollisionEnter2D(Collision2D col) {
        if (col.gameObject.tag == "Ground")
        {
            isJumping = false;
        }
    }
}

碰撞时,不更改布尔变量

嘿,

我想问题是你没有放置刚体,你应该把它添加到地面或它自己的角色上(如果你不想在其中使用重力,只需让它等于零,如果你添加刚体2D,或者取消选中使用重力,如果你使用刚体)如果您已经将刚体放置在其中一个上并且它不起作用,请在此处发表评论,请尝试考虑其他原因