【发布时间】: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)”不起作用?
-
我猜不是。为什么它会起作用?谁会打电话给它,为什么?
-
不是添加脚本调用的精灵吗?