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

Помогите Дальность полета стрелы

Discussion in 'Разработка плагинов для новичков' started by konfyciu98, Jul 16, 2014.

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

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

    Trophy Points:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Делаю вот так
    Code:
    event.getEntity().setVelocity(event.getEntity().getVelocity().multiply(3));
    
    Но из-за такого стрела отклоняется от курса. Как можно увеличить дальность стрельбы без отклонения?
     
  2. Хостинг MineCraft
    <
  3. serega6531

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

    Trophy Points:
    173
    Skype:
    shkurovs
    Увеличивать только одну характеристику.
     
  4. Автор темы
    konfyciu98

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

    Trophy Points:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Ладно[DOUBLEPOST=1405494191,1405464672][/DOUBLEPOST]Сделал вот такую штуку
    Code:
              Location locBlock = player.getTargetBlock(null, 1).getLocation();
               
               if(locBlock != null) {
                 
                 if(locBlock.getBlockX() - player.getLocation().getBlockX() != 0) {
                   if(locBlock.getBlockX() > player.getLocation().getBlockX()) {
                     event.getEntity().setVelocity(event.getEntity().getVelocity().setX(event.getEntity().getVelocity().getBlockX() + 3));
                     System.out.println("1###############" + event.getEntity().getVelocity().toString());
                   }else {
                     event.getEntity().setVelocity(event.getEntity().getVelocity().setX(event.getEntity().getVelocity().getBlockX() - 3));
                     System.out.println("1###############" + event.getEntity().getVelocity().toString());
                   }
                 }
                 if(locBlock.getBlockZ() - player.getLocation().getBlockZ() != 0) {
                   if(locBlock.getBlockZ() > player.getLocation().getBlockZ()) {
                     event.getEntity().setVelocity(event.getEntity().getVelocity().setZ(event.getEntity().getVelocity().getBlockZ() + 3));
                     System.out.println("2###############" + event.getEntity().getVelocity().toString());
                   }else {
                     event.getEntity().setVelocity(event.getEntity().getVelocity().setZ(event.getEntity().getVelocity().getBlockZ() - 3));
                     System.out.println("2###############" + event.getEntity().getVelocity().toString());
                   }
                 }
                 
               }
               System.out.println("3###############" + event.getEntity().getVelocity().toString());
    
    Но стрела все равно слетает, если игрок стреляет по диагонали, а не прямо по осям.
     
  5. serega6531

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

    Trophy Points:
    173
    Skype:
    shkurovs
    Как-то запутанно у вас все.
    Vector v = event.getEntity().getVelocity();
    if(v.getX() > v.getZ())
    v.add(20, 0, 0);
    else
    v.add(0, 0,0 20);
    Вот примерный код.
     
  6. Автор темы
    konfyciu98

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

    Trophy Points:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Когда смотрел, то вектора были еще и отрицательными, поэтому так и сделал.
     
  7. Reality_SC

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

    Trophy Points:
    123
    Имя в Minecraft:
    Reality_SC
    Мне кажется, что надо умножить X и Z на одно и тоже число И/ИЛИ прибавить константу/умножить на коэффициент скорость по Y.
     
  8. Автор темы
    konfyciu98

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

    Trophy Points:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    Аппа
     

Share This Page