1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем l_Slime_l, 22 май 2020.

  1. Автор темы
    l_Slime_l

    l_Slime_l Активный участник Пользователь

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

    alexandrage Старожил Пользователь

    Баллы:
    173
    Физику в школе не учили?
     
  3. Mavis

    Mavis Активный участник Пользователь

    Баллы:
    66
    Ты же понимаешь что у игрока есть скорость не только горизонтальная, но и вертикальная. Когда тело летит вверх и ты добавляешь ему ускорения - оно летит быстрее. Но когда тело падает твое ускорение с вектором вверх сначала погасит скорость падения, а после начнет движение вврех
     
  4. Автор темы
    l_Slime_l

    l_Slime_l Активный участник Пользователь

    Баллы:
    76
    Ну опять такие ответы, зачем это писать то? Помогли бы лучше. Сколько раз вижу "алгебру/физику/геометрию учили?"
    А почему плохо подкидывает именно при приземлении? Если игрок просто летит вниз и использует двойной прыжок, всё нормально.
     
  5. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Выучи физику как работает ускорение. Поймешь как это работает и какое противодействующее ускорение надо выдать.
     
  6. Mavis

    Mavis Активный участник Пользователь

    Баллы:
    66
    К сожалению не знаю, мое предположение было логичным :(
    Попробуй подебажить и узнать горизонтальную скорость игрока перед приземлением и при свободном полете.
    Возможно ускорение для прыжка стоит высчитывать. А еще лучше не давать прыгать второй раз если игрок уже падает
     
  7. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Хотя тут все просто, погаси вертикальное ускорение вниз ровно таким же и прибавь свое сверху.
     
    Последнее редактирование: 22 май 2020
  8. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Ускорение ты можешь получить getPlayer().getVelocity()
     
  9. Автор темы
    l_Slime_l

    l_Slime_l Активный участник Пользователь

    Баллы:
    76
    Что-то я так не понял, как его "погасить"
     
  10. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Противоположным вектором, что и логично не? А еще агрится что посылаю учить физику... Ты же понимаешь ровно ничего.
     
  11. Автор темы
    l_Slime_l

    l_Slime_l Активный участник Пользователь

    Баллы:
    76
    player.setVelocity(player.getVelocity().subtract(player.getVelocity())) ?
     
  12. NoooobKa

    NoooobKa Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    NoooobKa
    Полагаю если он летит вниз, то его вектор по Y отрицательный, а если ты из этого отрицательного вектора вычтешь тот же вектор, он просто камнем в 2 раза быстрее вниз полетит, разве не так?

    UPD Тебе надо свести его падение к нулю, и после этого дать новое направление
     
  13. Автор темы
    l_Slime_l

    l_Slime_l Активный участник Пользователь

    Баллы:
    76
    Там нулевой вектор получается, если из одного вектора вычесть такой же. Почему-то никак не получается исправить эту проблему.
     
  14. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Садись, два :D. Современных детей хоть чему то сейчас в школах обучают?
     
  15. Автор темы
    l_Slime_l

    l_Slime_l Активный участник Пользователь

    Баллы:
    76
    А что не так? Скажи мне.
     
    Последнее редактирование: 22 май 2020
  16. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    Получай вектор движения игрока, сделай инверсию, потом добавь этот вектор к вектору двойного прыжка и отправь это игроку.
     
  17. Автор темы
    l_Slime_l

    l_Slime_l Активный участник Пользователь

    Баллы:
    76
    Так что я не так написал то?
     
  18. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    Почему назад то. Вектор будет нулевым если прибавить противоположные скорости.
     
  19. Автор темы
    l_Slime_l

    l_Slime_l Активный участник Пользователь

    Баллы:
    76
    Помогите, ничего не работает :confused:
     
  20. MurlikMurlik

    MurlikMurlik Активный участник Пользователь

    Баллы:
    96
    У тебя должно все работать с оригинальным кодом, потому что ты устанавливаешь каждый раз новый вектор игроку, сбрасывая старый, из-за чего не требуется даже гасить скорость.
    Возможно какой то античит блокирует.
     

Поделиться этой страницей