Всем привет, нужна небольшая помощь. Нужно сделать так, чтобы персонаж подпрыгивал выше, если кнопка прыжка зажата дольше, чем при одном быстром нажатии. Ну, т.е.: Быстрое нажатие - невысоко подпрыгнул. Нажал и держишь клавишу - подпрыгнул выше.
Пытался умножить силу, прилагаемую к телу на меняющуюся переменную holdingTime - но это, очевидно, не вышло. Ни в FixedUpdate ни в Update, ибо выполняется то моментом. :\ Других идей больше нет.
Попробуй завести переменную, отвечающую за время прыжка. Увеличивай ее при удерживании клавиш прыжка до определенного значения — это и будет высотой прыжка. Вот примерно так:
Код
bool onGround, jumped; int jumpTime; int jumpHeight = 15;
if (Input.GetKey(KeyCode.Space)) { if (onGround) jumped = true; } else { jumped = false; } if (jumped) { if (jumpTime++ < jumpHeight) rigidbody2D.AddForce(new Vector2(0, 1000)); } else { jumpTime = 0; }
FadeBaker, не совсем понял, что ты имел ввиду. >.< Я ведь вроде похожим способом и делал, заводил переменную, которую увеличивал при удержании клавиши.
Я еще вот такой быдлокод писал, отказавшись от динамичности изменения высоты, сделав 3 основных значения для нее.
Теперь понял, что ты предлагал. Вот что сделал, прекрасно работает, почти:
Код
if ((Input.GetKey (KeyCode.Space) || Input.GetKey (KeyCode.W))){ if(holdingTime++ < jumpHeight) rigidbody2D.AddForce (new Vector2 (0, 250 )); } else holdingTime = 0;
Когда пытаюсь сделать ограничение на прыжок только с земли ( при этом коде можно бесконечно продолжать прыгать в воздухе ) - все перестает норм работать. :\ И по твоему примеру делал, и по своему делал, полчаса сидел перебирал разные варианты - не выходит поставить ограничение. >.<
Добавлено (25 января 2015, 17:18) --------------------------------------------- Так, все, ограничение заработало, спасибо. Не знаю почему до этого не работало, заново сделал и теперь все ок.
Сообщение отредактировал choopie - Воскресенье, 25 Января 2015, 17:18