Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Нужное velocity

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

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

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

    Баллы:
    173
    Skype:
    shkurovs
    Как задать игроку velocity, чтобы он подлетел на нужное мне количество блоков? Если подбирать, то при нормальном подлёте на одно количество блоков, он подлетает мало на другое. Вот мой код сейчас:

    Код:
               if(b.getType() == Material.WOOL && b.getData() == 14){
                    Location blocation = b.getLocation();
                    if(blocation.add(0,1,0).getBlock().getType() == Material.FENCE){
                        int power = 0;
                        while(true){
                            blocation = blocation.add(0, 1, 0);
                            if(blocation.getBlock().getType() == Material.FENCE){
                                power++;
                            } else {
                                break;
                            }
                        }
                        e.getPlayer().setVelocity(new Vector(0, 0.21 * power, 0));
                    }
                }
     
    Последнее редактирование: 5 фев 2014
  2. Хостинг MineCraft
    <
  3. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
  4. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Что-то я ничего не понял. Как по этим формулам узнать нужное ускорение?[DOUBLEPOST=1391618973,1391618663][/DOUBLEPOST]
    Просто мне надо, чтобы velocity высчитывалось само.
     
  5. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Так какие формулы надо использовать и как?[DOUBLEPOST=1391620253,1391619111][/DOUBLEPOST]
    ??
     
  6. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Спасибо, попробую.[DOUBLEPOST=1391621601,1391621399][/DOUBLEPOST]Но что, если я сам не знаю время, за которое мне нужно пролететь эти блоки?
     
    ПриветОтЛайки нравится это.
  7. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    А вот так можно:

    Код:
        private double getNewVelocity(int power){
            final int blocksInSec = 3;
            final int timeForFly = (power / blocksInSec) * 20;
            final int blocksInTime = (int) (3.92 * (99 - 49.50 * (0.98* timeForFly + 1) - timeForFly));
            return (power + blocksInTime)/timeForFly;
        }
    ?
    blocksInSec - сколько пролететь блоков в секунду
    power - количество блоков
     
  8. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Ты так человека к ГИА/ЕГЭ подготовишь
     
    ПриветОтЛайки нравится это.
  9. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Сделал. Velocity 180 - многовато.[DOUBLEPOST=1391623038,1391622936][/DOUBLEPOST]А в каком порядке в уравнении действия?
     
  10. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    Попробуй:
    Vector v = e.getPlayer().getLocation().getDirection();
    e.getPlayer().setVelocity(v.add(new Vector(0,0.8,0)));
    То что красным - то и изменяй.
     
  11. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    А то я не так делаю!
     
  12. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
    В чём проблема? =)
    У меня всё работает.
     
  13. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Я так и делаю.
     
  14. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Вот только это не работает. Дает огромную отрицательную velocity.
     
  15. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Столько, сколько блоков надо пролететь.[DOUBLEPOST=1391658860,1391627494][/DOUBLEPOST]Up![DOUBLEPOST=1391679958][/DOUBLEPOST]@fromgate ??[DOUBLEPOST=1391685222][/DOUBLEPOST]Up!
     
  16. Hilgert

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

    Баллы:
    123
    Skype:
    mixa2258
    Имя в Minecraft:
    Hilgert
  17. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Уже смотрел. Не знаю, как применить.[DOUBLEPOST=1391693191,1391692978][/DOUBLEPOST]Есть
    Код:
    Vector vector = second_location.toVector().subtract(first_location.toVector());
    Но каждый тик ускорение уменьшается.
     
  18. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Подумал. Не получилось. Я, конечно, не хочу мешать, но если сможете, попробуйте сами проделать такое.[DOUBLEPOST=1391710207,1391699008][/DOUBLEPOST]@fromgate Не пробовали ещё?
     
  19. Автор темы
    serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Ну ладно. Я пытался сам вычислять реальную velocity, но ничего не получилось. Как попробуете, скажите.[DOUBLEPOST=1391773071,1391744544][/DOUBLEPOST]Up!
     

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