Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Velocity 0 при движении в бок

ql_Nik_lp

Старожил
Девелопер
Пользователь
Баллы
173
Имя в Minecraft
ql_Nik_lp
Собственно сабж такой, попробовал толкнуть игрока в сторону движения, но хрен там.
Велосити "работает" только при движении вперед, если же передвигаться через A и D, то Velocity 0

Чтоподелать?
 
Т.е. ты хочешь сказать, что когда игрок не давит кнопку W или S у него Velocity нет???
 
Так и есть.
Bukkit не вычисляет velocity (или вычисляет не верно) для игроков.
Для "своих" энтитей (на стороне сервера) он всегда вычисляет динамическую скорость, а вот перемещение клиента - зависит от самого клиента.
В протоколе клиент никогда не передает своей скорости. По факту при движении он просто телепортируется на короткие расстояния. Единственный способ вычислить его скорость - дифференциальный.
 
Благодарю за информацию.
В данный момент пытаюсь реализовать через смещения получаемые через onMoveEvent
Видимо it's time для формулы V = loc.distance(prev) / (dTicks * 20.0);
Или как-то так.

Скорость мы так то получим, только нам она нужна в векторе, по XYZ
 
Скорость мы так то получим, только нам она нужна в векторе, по XYZ
dx = curr.x - prev.x
dy = curr.y - prev.y
dz = curr.z - prev.z
Насколько я понял, ты пытаешься сделать что-то типа прыгалки? )
 
Так и есть.
Bukkit не вычисляет velocity (или вычисляет не верно) для игроков.
Для "своих" энтитей (на стороне сервера) он всегда вычисляет динамическую скорость, а вот перемещение клиента - зависит от самого клиента.
В протоколе клиент никогда не передает своей скорости. По факту при движении он просто телепортируется на короткие расстояния. Единственный способ вычислить его скорость - дифференциальный.

Прикольно. Тогда нужно делать репорт по ошибке. Пущай исправляют ;)
 
Назад
Верх