我有一个角色,有一个布尔标志,确定他是否正在跳跃(如果他在跳跃,他不能再次跳跃)。 当他跳跃时,跳跃标志设置为true,当他与某物碰撞时,它会被重置为false(这样他就可以再次跳跃)。
然而,他只能跳一次,并且即使应该重置为false,跳跃仍保持为true。 为什么会这样?我的
然而,他只能跳一次,并且即使应该重置为false,跳跃仍保持为true。 为什么会这样?我的
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;
}
}
编辑:根据给出的答案,我尝试在OnCollisionEnter()
中添加了Collision
参数,但仍然看起来这个函数没有被调用。我已经在其中添加了Debug.Log()
来检查,是否还有其他问题?
function OnCollisionEnter(collision: Collision) {
jump = false;
Debug.log("He Hit The Wall");
trump.velocity.y = 0;
trump.velocity.x = 0;
}