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

Помогите Двойной прыжок

Тема в разделе "Разработка плагинов для новичков", создана пользователем serega6531, 25 янв 2014.

Статус темы:
Закрыта.
  1. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Почитал. И что теперь делать? Как узнать, направлен ли он вверх?
     
  2. ptnk

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

    Баллы:
    173
    продолжай дальше читать.
     
  3. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Прочитал уже. Что делать?
    А может быть использовать:
    Код:
    if(event.getTo().getY() > event.getFrom().getY()){
      ///
    }
    ?
     
  4. ptnk

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

    Баллы:
    173
    Я понимаю, что тебе хочется по-быстрому написать плагин и закрыть форум - но эти вещи слишком элементарны, чтобы не понимать, как определить по вектору спускается объект или поднимается.

    Я дам тебе подсказку: у тебя есть вектор у него есть точка начала и точка конца, этот вектор как-то в пространстве расположен, как же ты на глаз определишь, что вектор наклонён вниз и как ты это покажешь на бумаге?

    Это школьная математика\геометрия для 8-10 классов.

    ---
    Можешь использовать метод, который ты предложил, он тяжеловесный.
     
  5. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Да, сделал. Всем спасибо.
    Нет, не сделал. Определение, в какую сторону смотрит игрок работает через... раз. Иногда он определяет правильно, перед игроков, а иногда определяет блок справа него. В чем дело? Вот код:
    Код:
            Player player = event.getPlayer();
            if(Players.isGamePlayer(player)){
                Location loc = player.getEyeLocation();
                int direction = (int)(((loc.getYaw() * 4F) / 360F) + 0.5D) & 3;
                switch(direction)
                {
                  case 0:
                  {
                      loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY(), (int)loc.getZ()+1);
                        break;
                  }
                  case 1:
                  {
                      loc = new Location(loc.getWorld(), (int)loc.getX()-1, (int)loc.getY(), (int)loc.getZ());
                        break;
                  }
                  case 2:
                  {
                      loc = new Location(loc.getWorld(), (int)loc.getX(), (int)loc.getY(), (int)loc.getZ()-1);
                        break;
                  }
                  case 3:
                  {
                      loc = new Location(loc.getWorld(), (int)loc.getX()+1, (int)loc.getY(), (int)loc.getZ());
                        break;
                  }
                }
                if(!(((Entity)player).isOnGround()) && (player.getGameMode() != GameMode.CREATIVE) && !(loc.getBlock().getType().equals(Material.AIR)) && (event.getTo().getY() > event.getFrom().getY()) && !(player.isSneaking())){
                    player.setVelocity(player.getVelocity().add(new Vector(0, 0.09, 0)));
                }
            }
     
    ПриветОтЛайки нравится это.
  6. ptnk

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

    Баллы:
    173
    Выполни дебаг, и погляди как тут direction реагирует - и исходя из найденного недочёт - устрани.
     
  7. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Реагирует нормально, совпадает с клиентом.
     
    MieBluck нравится это.
  8. ptnk

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

    Баллы:
    173
    Как-то не состыкуется это.

    Крайне маловероятно, что кто-то здесь от скуки глядя полезет отлаживать твой код и выяснять, почему там что-то не так.

    У тебя там ещё есть отличное условие - его отлаживай.
     
  9. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Проверил еще раз, и правда не совпадает. Пофиксил, но проблему это не решило.
    Думаю, дело в неправильном определении взгляда. Как сделать правильно?
     
  10. ptnk

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

    Баллы:
    173
    В чем сложность? Делай отладочную печать - выводи нужную информацию в консоль, смотри, при каких данных происходит какая-то фигня, пытайся исходя из данных найти проблему.
     
  11. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Фигня происходит, когда направление определяется неправильно. Как определять его по Yaw правильно?
     
  12. ptnk

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

    Баллы:
    173
    Я не понимаю, в чем проблема тебе разобраться, что же это за такая величина Yaw, что он показывает для игрока и как из него получить сторону света?

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

    Страдай, изучай.
     
  13. Автор темы
    serega6531

    serega6531 Старожил Девелопер Пользователь

    Баллы:
    173
    Skype:
    shkurovs
    Изучаю.
    Вот:

    Код:
    int yaw = (int) Math.abs(loc.getYaw());
    if(yaw > 315 && yaw < 45){
           direction = 0;
    } else if (yaw > 45 && yaw < 135){
           direction = 1;
    } else if (yaw > 135 && yaw < 225){
            direction = 2;
    } else if (yaw > 225 && yaw < 315){
             direction = 3;
    }
     
Статус темы:
Закрыта.

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