Исчисление? Нужна помощь в решении для переменной, зависящей от времени с учетом некоторых других переменных

Короче говоря, я делаю платформер. еще недостаточно взрослый, чтобы изучать математику, поэтому я не знаю производных или интегралов, но я знаю о них. Желаемое поведение - чтобы мой персонаж автоматически прыгал, когда по обе стороны от него есть блок, который находится выше того, на котором он стоит; например, лестница. Таким образом, игрок может просто удерживать влево / вправо, чтобы подняться по лестнице, вместо того, чтобы также спамить клавишу прыжка.

Проблема в том, как я реализовал прыжок; Я решил пойти в марио-стиле и позволить игроку дольше удерживать «прыжок», чтобы прыгать выше. Для этого у меня есть переменная 'jump', которая добавляется к скорости игрока по оси Y. Переменная прыжка увеличивается до установленного значения при нажатии клавиши «прыжок» и очень быстро уменьшается после отпускания клавиши «прыжок», но уменьшается менее быстро, пока вы удерживаете нажатой клавишу «прыжок», что обеспечивает непрерывное ускорение. до тех пор, пока вы удерживаете "прыжок". Это также обеспечивает приятный плавный прыжок, а не визуально резкое резкое ускорение.

Итак, чтобы учесть переменную высоту лестницы, я хочу иметь возможность точно вычислить, какое значение должна получить переменная 'jump' для того, чтобы прыгнуть ровно на высоту лестницы; желательно не больше, не меньше, хотя допустимо чуть больше. Таким образом, персонаж может прыгать по крутым или неглубоким лестничным пролетам, не выглядя странно или медленно.

По сути, в игре 5 переменных:

h -the height the character needs to jump to reach the stair top<br>
j -the jump acceleration variable<br>
v -the vertical velocity of the character<br>
p -the vertical position of the character<br>
d -initial vertical position of the player minus final position<br>

Each timestep:<br>
j -= 1.5;          //the jump variable's deceleration<br>
v -= j;            //the jump value's influence on vertical speed<br>
v *= 0.95;         //friction on the vertical speed<br>
v += 1;            //gravity<br>
p += v;            //add the vertical speed to the vertical position<br>

v-initial is known to be zero<br>
v-final is known to be zero<br>
p-initial is known<br>
p-final is known<br>
d is known to be p-initial minus p-final<br>
j-final is known to be zero<br>

j-initial is unknown<br>

Учитывая все эти факты, как я могу составить уравнение, которое решит for j?

tl; dr Как я могу вычислить?

Большое спасибо всем, кто дошел до этого и решил разобраться с этой проблемой.

Edit: Вот график, который я сделал из примера в Excel.

Итак, чтобы учесть переменную высоту лестницы, я хочу иметь возможность точно рассчитать, какое значение должна получить переменная 'jump', чтобы прыгнуть точно на высоту лестницы; желательно не больше, не меньше, хотя допустимо чуть больше. Таким образом, персонаж может прыгать по крутым или неглубоким лестничным пролетам, не выглядя странно или медленно.

По сути, в игре 5 переменных:

h -the height the character needs to jump to reach the stair top<br>
j -the jump acceleration variable<br>
v -the vertical velocity of the character<br>
p -the vertical position of the character<br>
d -initial vertical position of the player minus final position<br>

Each timestep:<br>
j -= 1.5;          //the jump variable's deceleration<br>
v -= j;            //the jump value's influence on vertical speed<br>
v *= 0.95;         //friction on the vertical speed<br>
v += 1;            //gravity<br>
p += v;            //add the vertical speed to the vertical position<br>

v-initial is known to be zero<br>
v-final is known to be zero<br>
p-initial is known<br>
p-final is known<br>
d is known to be p-initial minus p-final<br>
j-final is known to be zero<br>

j-initial is unknown<br>

Учитывая все эти факты, как я могу составить уравнение, которое решит for j?

tl; dr. Как мне вычислить?

Большое спасибо всем, кто дошел до этого и решил разобраться с этой проблемой.

Edit: Вот график, который я сделал из примера в Excel.

Итак, чтобы учесть переменную высоту лестницы, я хочу иметь возможность точно рассчитать, какое значение должна получить переменная 'jump', чтобы прыгнуть точно на высоту лестницы; желательно не больше, не меньше, хотя допустимо чуть больше. Таким образом, персонаж может прыгать по крутым или неглубоким лестничным пролетам, не выглядя странно или медленно.

По сути, в игре 5 переменных:

h -the height the character needs to jump to reach the stair top<br>
j -the jump acceleration variable<br>
v -the vertical velocity of the character<br>
p -the vertical position of the character<br>
d -initial vertical position of the player minus final position<br>

Each timestep:<br>
j -= 1.5;          //the jump variable's deceleration<br>
v -= j;            //the jump value's influence on vertical speed<br>
v *= 0.95;         //friction on the vertical speed<br>
v += 1;            //gravity<br>
p += v;            //add the vertical speed to the vertical position<br>

v-initial is known to be zero<br>
v-final is known to be zero<br>
p-initial is known<br>
p-final is known<br>
d is known to be p-initial minus p-final<br>
j-final is known to be zero<br>

j-initial is unknown<br>

Учитывая все эти факты, как я могу составить уравнение, которое решит for j?

tl; dr. Как мне вычислить?

Большое спасибо всем, кто дошел до этого и решил разобраться с этой проблемой.

Edit: Вот график, который я сделал из примера в Excel. переменная должна получить, чтобы прыгнуть ровно на высоту лестницы; желательно не больше, не меньше, хотя допустимо чуть больше. Таким образом, персонаж может прыгать по крутым или неглубоким лестничным пролетам, не выглядя странно или медленно.

По сути, в игре 5 переменных:

h -the height the character needs to jump to reach the stair top<br>
j -the jump acceleration variable<br>
v -the vertical velocity of the character<br>
p -the vertical position of the character<br>
d -initial vertical position of the player minus final position<br>

Each timestep:<br>
j -= 1.5;          //the jump variable's deceleration<br>
v -= j;            //the jump value's influence on vertical speed<br>
v *= 0.95;         //friction on the vertical speed<br>
v += 1;            //gravity<br>
p += v;            //add the vertical speed to the vertical position<br>

v-initial is known to be zero<br>
v-final is known to be zero<br>
p-initial is known<br>
p-final is known<br>
d is known to be p-initial minus p-final<br>
j-final is known to be zero<br>

j-initial is unknown<br>

Учитывая все эти факты, как я могу составить уравнение, которое решит for j?

tl; dr Как я могу вычислить?

Большое спасибо всем, кто дошел до этого и решил разобраться с этой проблемой.

Edit: Вот график, который я сделал из примера в Excel. переменная должна получить, чтобы прыгнуть ровно на высоту лестницы; желательно не больше, не меньше, хотя допустимо чуть больше. Таким образом, персонаж может прыгать по крутым или неглубоким лестничным пролетам, не выглядя странно или медленно.

По сути, в игре 5 переменных:

h -the height the character needs to jump to reach the stair top<br>
j -the jump acceleration variable<br>
v -the vertical velocity of the character<br>
p -the vertical position of the character<br>
d -initial vertical position of the player minus final position<br>

Each timestep:<br>
j -= 1.5;          //the jump variable's deceleration<br>
v -= j;            //the jump value's influence on vertical speed<br>
v *= 0.95;         //friction on the vertical speed<br>
v += 1;            //gravity<br>
p += v;            //add the vertical speed to the vertical position<br>

v-initial is known to be zero<br>
v-final is known to be zero<br>
p-initial is known<br>
p-final is known<br>
d is known to be p-initial minus p-final<br>
j-final is known to be zero<br>

j-initial is unknown<br>

Учитывая все эти факты, как я могу составить уравнение, которое решит for j?

tl; dr Как я могу вычислить?

Большое спасибо всем, кто дошел до этого и решил разобраться с этой проблемой.

Edit: Вот график, который я сделал из примера в Excel. alt text

Мне нужно уравнение, которое позволит мне найти значение A при заданном значении B. Поскольку переменная прыжка со временем уменьшается, значение позиции - это не просто парабола.

7
задан Zane Geiger 21 December 2010 в 19:58
поделиться