Сообщение от NitE
эмм, у меня почти "стандарт", а у тебя уже переделка - которая по сути ненужна потомучто делает всё тоже.
|
Стандарт конца 1980-х.
Саб тож чот мудрёно написал.
На самом деле всё делается на основе элементарных принципов раздела механики - кинематики, попробую объяснить популярно и максимально понятно даже ежу.
Есть ускорение свободного падения g (пусть оно положительное)
Есть у персонажа скорость V по вертикали, то есть по оси Y. (пусть положительное направление оси - вниз)
Персонажа по оси Y нужно двигать в соответствии с его скоростью по вертикали V. То есть например скорость 1 - вот и сдвинули по оси Y на 1.
И каждый же раз увеличивать скорость на g. То есть чем дольше персонаж падает, тем быстрее он это делает: скорость-то увеличивается.
Когда персонаж коснётся земли, движение его вниз отключаем к чёртовой бабушке, скорость ставим на 0 и не трогаем, а то, чего доброго, сквозь землю провалится.
То есть получается, что уравнение, описывающее лодинату персонажа, выглядит так:
Y = Y0 + V0*t + gt^2/2
Где Y0 - начальное положение по оси Y
t - время
Уравнение скорости V получаем дифференцированием уравнения ординаты Y по времени t:
V = V0 + gt
Опять же, дифференцированием по t данного уравнения находим, что ускорение - есть константа :
a = g
В момент, когда надо сделать прыжок - выставляем скорость персонажа на какое-то отрицательное значение (как мы помним, направление оси вверх - это отрицательные значения) и видим, как он, летя вверх, сначала замедляется, а потом уже летит вниз, пока не коснётся земли.
Значения g и V в момент прыжка подбирать экспериментально.
Никаких точных рекомендаций по детектированию "коснулся ли персонаж земли или нет?" дать не могу, так как хз как у тебя выглядит земля в коде/на экране (телепаты в отпуске, наглецы, уже не один месяц). В самом примитивном случае - плоская земля и тогда проверка сводится к сравнению ординаты со значением высоты земли.
И да, не удивляйся ответам в начале темы в стиле капитана очевидность: описание вопроса в первом посте было настолько "подробным", что можно только послать.
Формулируй вопросы чётко и подробно.
И называй тему так, чтобы она кратко отражала своё содержание.
Между прочим, за названия топиков типа "Помогите", "Подскажите", "Вопрос" и т.д., т.е. не понять, о чём собственно тема, положен банан.
В следующий раз применим.