碰撞时,不要改变bool变量

时间:2014-12-14 13:36:09

标签: c# unity3d boolean

我正在尝试用C#编写一个脚本来实现统一。这个脚本是为了让我的精灵跳跃。我要求精灵只能在接触地面时跳跃,所以当bool“跳跃”时设置为false。

在Unity3D中使用脚本时(尽管我使用2D预设并正在构建2D游戏)我可以在游戏首次运行时跳转,但在击中空格后bool设置为true ,当我与被贴上标签的地面发生碰撞时,地面' bool没有设置为false意味着我不能再跳。

所以我想知道我做错了什么,以及为什么当我碰到' Ground' bool未设置为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;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

嘿,我想问题是你没有放置僵硬的身体,你应该将它添加到地面或它自己的角色(如果你不想使用重力,只要它等于零,如果你'重新添加rigidbody2D或取消选中使用刚体(如果使用刚体) 如果你已经把僵硬的身体放在其中一个身上并且它不起作用只是在这里评论我试着想到其他原因