Помогите Странно работает двойной прыжок

l_Slime_l

Активный участник
Пользователь
Баллы
76
В общем, хочу сделать двойной прыжок у игроков, всё вроде работает, но имеется проблемка. Ставлю velocity игроку через
Код:
player.setVelocity(player.getLocation().getDirection().multiply(0.25).setY(0.9));
Но есть одно но. Если использовать двойной прыжок прямо перед приземлением на землю, игрока гораздо меньше подкидывает. Как исправить?
 
Ты же понимаешь что у игрока есть скорость не только горизонтальная, но и вертикальная. Когда тело летит вверх и ты добавляешь ему ускорения - оно летит быстрее. Но когда тело падает твое ускорение с вектором вверх сначала погасит скорость падения, а после начнет движение вврех
 
Физику в школе не учили?
Ну опять такие ответы, зачем это писать то? Помогли бы лучше. Сколько раз вижу "алгебру/физику/геометрию учили?"
Ты же понимаешь что у игрока есть скорость не только горизонтальная, но и вертикальная. Когда тело летит вверх и ты добавляешь ему ускорения - оно летит быстрее. Но когда тело падает твое ускорение с вектором вверх сначала погасит скорость падения, а после начнет движение вврех
А почему плохо подкидывает именно при приземлении? Если игрок просто летит вниз и использует двойной прыжок, всё нормально.
 
Ну опять такие ответы, зачем это писать то? Помогли бы лучше. Сколько раз вижу "алгебру/физику/геометрию учили?"
Выучи физику как работает ускорение. Поймешь как это работает и какое противодействующее ускорение надо выдать.
 
Ну опять такие ответы, зачем это писать то? Помогли бы лучше. Сколько раз вижу "алгебру/физику/геометрию учили?"

А почему плохо подкидывает именно при приземлении? Если игрок просто летит вниз и использует двойной прыжок, всё нормально.
К сожалению не знаю, мое предположение было логичным :(
Попробуй подебажить и узнать горизонтальную скорость игрока перед приземлением и при свободном полете.
Возможно ускорение для прыжка стоит высчитывать. А еще лучше не давать прыгать второй раз если игрок уже падает
 
Хотя тут все просто, погаси вертикальное ускорение вниз ровно таким же и прибавь свое сверху.
 
Последнее редактирование:
Ускорение ты можешь получить getPlayer().getVelocity()
 
player.setVelocity(player.getVelocity().subtract(player.getVelocity())) ?
Полагаю если он летит вниз, то его вектор по Y отрицательный, а если ты из этого отрицательного вектора вычтешь тот же вектор, он просто камнем в 2 раза быстрее вниз полетит, разве не так?

UPD Тебе надо свести его падение к нулю, и после этого дать новое направление
 
Полагаю если он летит вниз, то его вектор по Y отрицательный, а если ты из этого отрицательного вектора вычтешь тот же вектор, он просто камнем в 2 раза быстрее вниз полетит, разве не так?
Там нулевой вектор получается, если из одного вектора вычесть такой же. Почему-то никак не получается исправить эту проблему.
 
Там нулевой вектор получается, если из одного вектора вычесть такой же. Почему-то никак не получается исправить эту проблему.
Садись, два :D. Современных детей хоть чему то сейчас в школах обучают?
 
Помогите, ничего не работает :confused:
У тебя должно все работать с оригинальным кодом, потому что ты устанавливаешь каждый раз новый вектор игроку, сбрасывая старый, из-за чего не требуется даже гасить скорость.
Возможно какой то античит блокирует.
 
Назад
Верх