У меня есть персонаж с логическим флагом, который определяет, прыгает он или нет (если он прыгает, он не может прыгать снова). Когда он прыгает, флаг прыжка устанавливается в значение «истина», а когда он сталкивается с чем-либо, он снова устанавливается в значение «ложь» (чтобы он мог снова прыгать).
Однако он прыгает только один раз, и прыжок остается истинным, даже когда он должен сбрасываться на ложный. Почему это так? Мое определение для 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;
}
}
EDIT: Основываясь на данном ответе, я попытался добавить параметр Collision
к OnCollisionEnter()
, но все еще не похоже, что функция вызывается после того, как я добавил Debug.Log()
внутри нее для проверки. Что-то еще не так?
function OnCollisionEnter(collision: Collision) {
jump = false;
Debug.log("He Hit The Wall");
trump.velocity.y = 0;
trump.velocity.x = 0;
}
Why won't Trump jump more than once?
, безусловно, самый смешной и безумный заголовок вопроса, который я когда-либо видел ;-) - person John Slegers   schedule 09.03.2016