- Баллы
- 123
.
Последнее редактирование:
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
типо как с крыльями, только тупо вертикально вниз?Я телепортирую игрока блоков на ~10 выше земли, можно ли ему как-то организовать "медленное" или хотя-бы "замедленное" падение? Ну чтоб и красиво было и урона не получил. Какими костылями это можно сделать? (1.9)
@EventHandler
public void onMove(PlayerMoveEvent e)
{
Player pl = e.getPlayer();
Location f = e.getFrom().clone();
Location t = e.getTo().clone();
//направление вектора движения
Vector dir = t.subtract(f).toVector().normalize();
//координаты валидны
if(!(Double.isNaN(dir.getX()) && Double.isNaN(dir.getY()) && Double.isNaN(dir.getZ())))
{
if(dir.getY() < 0)
{
if(Math.abs(dir.getBlockY()) > Math.abs(dir.getX()) && Math.abs(dir.getY()) > Math.abs(dir.getZ()))
{
//более красивое отлавливание падения делайте сами
pl.setVelocity(dir.multiply(0.5d));//0.5 - множитель замедления.
}
}
}
}
Врядли, отрицательный эффект (типо левитация силой -1) нельзя же вроде..Возможно новый эффект левитации?
Спасибо, обязательно попробую когда дома буду!!Простейшее решение:
Java:@EventHandler public void onMove(PlayerMoveEvent e) { Player pl = e.getPlayer(); Location f = e.getFrom().clone(); Location t = e.getTo().clone(); //направление вектора движения Vector dir = t.subtract(f).toVector().normalize(); //координаты валидны if(!(Double.isNaN(dir.getX()) && Double.isNaN(dir.getY()) && Double.isNaN(dir.getZ()))) { if(dir.getY() < 0) { if(Math.abs(dir.getBlockY()) > Math.abs(dir.getX()) && Math.abs(dir.getY()) > Math.abs(dir.getZ())) { //более красивое отлавливание падения делайте сами pl.setVelocity(pl.getVelocity().multiply(0.5d));//0.5 - тек. скорость пополам } } } }
Если игрок падает с замедленной скоростью и не может двигатся это для меня вообще идеально!! Главное чтоб когда игрок достиг земли все стало нормально!!И лучше бы изменять скорость только по Y. Я протестировал - персонаж падает вертикально, но в стороны двигаться не может.
На ваше усмотрение, в общем..
Как вам угодно. Экспериментируйте.Врядли, отрицательный эффект (типо левитация силой -1) нельзя же вроде..
Спасибо, обязательно попробую когда дома буду!!
Если игрок падает с замедленной скоростью и не может двигатся это для меня вообще идеально!! Главное чтоб когда игрок достиг земли все стало нормально!!
Ээ... Любой эффект? И чем это поможет?Только эффект игроку какой-нибудь накладывать, иначе в клиенте он будет рывками падать, так как клиент думает что игрок падает с обычной скоростью.
Попробую, но читать плагины для меня сложнее чем писать...Автор, посмотрите плагины Lift и SkyDiver, там это есть, ля буду гарантирую
Не, не минигейм - в обычном мире надо (эх, протестил бы сейчас, да глаза сливаются уже..)Можешь дать feather falling на ботинки, если это минигейм
Попробую, но читать плагины для меня сложнее чем писать...
private Vector getVector() {
double rotation = (double) ((this.player.getLocation().getYaw() - 90.0F) % 360.0F);
if (rotation < 0.0D) {
rotation += 360.0D;
}
return !this.isSlowDescending ? new Vector(-(this.ForwardSpeed * Math.cos(Math.toRadians(rotation))), this.FastDescend, -(this.ForwardSpeed * Math.sin(Math.toRadians(rotation)))) : new Vector(-(this.ForwardSpeed * Math.cos(Math.toRadians(rotation))), this.SlowDescend, -(this.ForwardSpeed * Math.sin(Math.toRadians(rotation))));
}
Окееей, попытаюсь, главное сразу выключить полет по приземлению, и "тащение" вниз, мне не нужны халявщики которые будут себе флай получать xDВключаем игроку полёт чтобы не "дёргался" и силойгравитациивектора тащим его вниз
Посмотреть вложение 40252
Java:private Vector getVector() { double rotation = (double) ((this.player.getLocation().getYaw() - 90.0F) % 360.0F); if (rotation < 0.0D) { rotation += 360.0D; } return !this.isSlowDescending ? new Vector(-(this.ForwardSpeed * Math.cos(Math.toRadians(rotation))), this.FastDescend, -(this.ForwardSpeed * Math.sin(Math.toRadians(rotation)))) : new Vector(-(this.ForwardSpeed * Math.cos(Math.toRadians(rotation))), this.SlowDescend, -(this.ForwardSpeed * Math.sin(Math.toRadians(rotation)))); }