Как правильно задавать угол вектора полета стрелы

11
0
1)p.setVelocity(velocity.setX(+10));(использовал но в итоге сам летал, лучше стрел);
2)Vector vector = new Vector();
Vector angleVector = new Vector();
vector.angle(angleVector); (вообще не работает)
Java:
 @EventHandler
    public void BowShoot(EntityShootBowEvent e) {

        Entity en = e.getEntity();
        Player player = (Player) en;
        if (player.getInventory().getItemInMainHand().getItemMeta().getDisplayName().equals(ChatColor.DARK_AQUA +"Multi Bow"));   
        if (!(en instanceof  Player)) {
            return;
        }
        Vector velocity = e.getProjectile().getVelocity();
        e.setCancelled(true);
            Vector vector = new Vector(30,20,10);
            Vector angleVector = new Vector(20,10,30);
            vector.angle(angleVector);
        for (int i = 0; i < 3; i++) {
            player.launchProjectile(Arrow.class).setVelocity(velocity);
        }
    }
}
но так и не понял, как поменять направление стрелы(надо чтоб она летела под другим углом), просьба написать метод и как его использовать
 
возможно надо использовать velocity.angle(velocity);
но как задать ему градус?
если вы скажите вписать в скобки, то это не смешная шутка
 
EntityArrow имеет метод shoot, который принимает направление взгляда игрока, вызывай его для запуска
 
ты не понял, они летят куда надо, но надо первую и последнюю отклонить от вектора выстрела
 
Мультивыстерл делаешь?
 
мне другое надо, я нашарил кое что
---
Взгляд игрока можешь получить через Player#getLocation.getYaw();
К нему прибавляй 45 и переводи через Math.toRadians() в радианы.
После этого создавай новый вектор, где x = синусу твоего угла, y = игрику направления (direction) локации твоего игрока и z = косинусу
Движение идет против часовой стрелки, т.е если прибавляешь попрет влево, убавляешь - вправо.
В зависимости от номера твоей стрелы, просто прибавляй/отнимай угол (а если серединная, то вовсе не трогай) и лаунчи проджектил.
--
 
но как это к моей фигне привязать не понятно
Java:
    @EventHandler
    public void BowShoot(EntityShootBowEvent e) {
   
        Entity ent = e.getEntity();
        if (!(ent instanceof Player)) {
            return;
        }
        Player pl = (Player) ent;
        if (pl.getInventory().getItemInMainHand().getItemMeta().getDisplayName().equals(ChatColor.DARK_AQUA +"Multi Bow"));


   
        Vector velocity = e.getProjectile().getVelocity();
        e.setCancelled(true);
        Vector v = new Vector();
        pl.getLocation().getYaw();
        for (int i = 0; i < 3; i++) {
             v.setX(i+30);
             v.setZ(i+30);
             v.angle(v);
            pl.launchProjectile(Arrow.class).setVelocity(velocity);
        }
    }
}
 
В зависимости от номера твоей стрелы, просто прибавляй/отнимай угол (а если серединная, то вовсе не трогай) и лаунчи проджектил.
Здорово. А между тем в CoFH Core тоже самое, только для начальной скорости
Почему бы не просто скопипастить и изменяемость параметра поменять с speed на yaw?
 
весело, я чекнул, но ничего не нашел, была ток такая фигня с луками, мб я где то не там смотрю1587783403927.png
 
а тупанул, нет это не то, что надо, там совсем не то, что я хотел сделать
 
Назад
Сверху