【发布时间】:2016-03-09 17:12:39
【问题描述】:
我有一个角色,它是一个布尔标志,它决定了他是否在跳跃(如果他在跳跃,他就不能再跳跃了)。当他跳跃时,跳跃标志被设置为真,当他与某物碰撞时,它被设置回假(这样他就可以再次跳跃)。
但是,他只跳跃一次,即使应该重置为 false,跳跃也会保持真实。为什么会这样?我对OnCollisionEnter() 的定义应该是重置标志。
var trump;
var jump = false;
function Start() {
// Assigns the Rigidbody to a variable
trump = GetComponent(Rigidbody2D);
// Variable Switches:
}
function OnCollisionEnter() {
jump = false;
trump.velocity.y = 0;
trump.velocity.x = 0;
}
function FixedUpdate() {
trump.velocity.x = Input.GetAxis("Horizontal") * 10;
if ((Input.GetKeyDown(KeyCode.UpArrow)) && (jump == false)) {
trump.AddForce(Vector2(0, 10), ForceMode2D.Impulse);
jump = true;
}
}
编辑:根据给出的答案,我尝试将Collision 参数添加到OnCollisionEnter(),但在我添加Debug.Log() 后,它看起来仍然没有被调用在里面检查。还有什么问题吗?
function OnCollisionEnter(collision: Collision) {
jump = false;
Debug.log("He Hit The Wall");
trump.velocity.y = 0;
trump.velocity.x = 0;
}
【问题讨论】:
-
是特朗普。他不让其他人告诉他该做什么:-p - 不过说真的,
Why won't Trump jump more than once?是迄今为止我见过的最有趣和最疯狂的问题标题 ;-) -
这个原因引起了我的注意。 XP 但我真的很想编辑标题以成为未来更有用/可搜索的问题......
-
@serlite - 每当您看到要进行的编辑时,始终只需单击编辑
-
@Number1son100 - 你不能使用“unityscript”。它已被弃用,不起作用,并且正在从 Unity 中删除。幸运的是,c# 要容易得多。
标签: unity3d physics unityscript unity3d-2dtools