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

Помогите Как выстрельнуть стрелу? Подробнее в теме

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

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

    EnderBro3D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    EnderBro3D
    Всем привет, сегодня решил сделать так чтобы при взаимодействии с каким либо предметом (оружеем) вылетала стрела, как у лука, только дальше, сильнее и без натяжки предмета (титевы)
    Физику не проходили, можете не объяснять.
     
  2. kirill2011s

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

    Баллы:
    103
  3. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Запустить стрелу можно так(для примера взял алмазный меч):
    Код:
    if (event.getItem().getType() == Material.DIAMOND_SWORD)
        player.launchProjectile(Arrow.class);
     
  4. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    EnderBro3D
    Сделал я как-то так

    Код:
        @EventHandler
        public void PlayerInteract(PlayerInteractEvent event) {
            if(event.getMaterial() == Material.GOLD_HOE) {
                Player p = event.getPlayer();
                Arrow proj = p.launchProjectile(Arrow.class, p.getEyeLocation().getDirection());
                proj.setCustomName(ChatColor.DARK_GRAY + "Пуля");
                proj.setCustomNameVisible(true);
            }
        }
    Как мне теперь сделать чтобы стрела летела не вниз а всегда прямо?
     
  5. xDark

    xDark Активный участник Пользователь

    Баллы:
    96
    setVelsoity
     
  6. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    EnderBro3D
     
  7. alexandrage

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

    Баллы:
    173
    Без физики не полетит.
     
  8. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    EnderBro3D
    Но вы же - знаете физику. Просто напишите код, или что вставлять в 1 2 3 - new Vector(1,2,3); чтобы стрела летела постоянно прямо
     
  9. alexandrage

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

    Баллы:
    173
    Я тебе не школьный учитель физики. Так что сам думай.
     
  10. Автор темы
    EnderBro3D

    EnderBro3D Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    EnderBro3D
    Вы ничего не будете объяснять, просто напишите какой код нужно вставить, без объяснения, я сам пойму потом
     
  11. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Как плохой вариант, можно каждый тик обновлять координату стрелы(y) на некоторое значение, получится что стрела двигается по прямой:)
    Так же, можешь попробовать такой вариант(вечно прямо она лететь не будет, но намного дальше чем обычно):
    Код:
        @EventHandler
        public void OnInteract(PlayerInteractEvent event) {
            if(event.getPlayer().getItemInHand().getType() == Material.ARROW) {
                Arrow p = event.getPlayer().launchProjectile(Arrow.class);
                p.setVelocity(event.getPlayer().getLocation().getDirection().multiply(1000));
            }
        }

    Только что провёл эксперимент, при значении параметра метода multiply в 1000(как в примере выше) потерь в высоте при дистанции стрельбы в 200 блоков не наблюдается.Думаю, этого хватит.
     

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