【问题标题】:When colliding, not changing the bool variable碰撞时,不改变 bool 变量
【发布时间】:2015-02-12 17:05:14
【问题描述】:

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

在 Unity3D 中使用脚本时(虽然我正在使用 2D 预设并正在构建 2D 游戏)我可以在第一次运行游戏时跳跃,但在击中空格后 bool 设置为 true,并且当我与标记为“地面”的接地相撞时,布尔值不会设置为假,这意味着我不能再次跳跃。

所以我想知道我做错了什么,为什么当我与“地面”碰撞时,布尔值没有设置为假。提前谢谢你的帮助!下面,是代码。 :)

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;
        }
    }
}

【问题讨论】:

  • 你设置断点了吗?你知道onCollisionEnter2D方法是否被调用了吗?
  • 我不确定断点是什么,我一定会检查一下。我做了'打印(“测试”);'它没有在控制台上打印任何东西,所以我猜这意味着“void onCollisionEnter2D(collision2D col)”不起作用?
  • 我猜不是。为什么它会起作用?谁会打电话给它,为什么?
  • 不是添加脚本调用的精灵吗?

标签: c# unity3d boolean


【解决方案1】:

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

【讨论】:

  • 我确实给角色加了一个Rigidbody2D。。nvogit一直在说谁调用了它,但是如果脚本被添加到精灵中,那么精灵调用它对吗?提前感谢您的意见! :)
  • 你确定没有检查 istrigger 吗?如果不是,您是否对项目设置进行了任何更改?精灵是另一个对象的子对象还是父对象?
  • 没有检查触发器,我没有重温我已经更改了任何项目设置..?我将开始一个新项目,然后导入脚本并查看。角色和背景不是父母/或孩子.. :/
  • 你能检查一下碰撞函数是否被调用尝试在函数内部打印一些东西(不是 if 语句..)
  • 哦哦看看你的函数名 On 中的字母 o 应该是大写字母... XD
猜你喜欢
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多