Угол полета стрелы

Версия Minecraft
1.7.10
173
1
3
День добрый, намучился я с этими векторами, не понимаю я их и все тут -_-

Подскажите, как можно правильно заспавнить три стрелы, чтобы они летели трезубцем, то есть первая ровно прямо, другие отклоняются от нее на 45 градусов влево и вправо. Вот что только не перепробовал, ересь получается.

Пробовал вот так: 
Код:
if(!w.isRemote) {
            EntityArrow entityArrow = new EntityArrow(w, player, 1.5F);
            w.spawnEntityInWorld(entityArrow);

           Vec3 vec = player.getLookVec();

            EntityArrow entityArrow1 = new EntityArrow(w, player, 1.5F);
            entityArrow1.addVelocity(vec.xCoord + 0.5f,0.0f, vec.zCoord + 0.5f);
            w.spawnEntityInWorld(entityArrow1);

            EntityArrow entityArrow2 = new EntityArrow(w, player, 1.5F);
            entityArrow2.addVelocity(vec.xCoord - 0.5f,0.0f, vec.zCoord - 0.5f);
            w.spawnEntityInWorld(entityArrow2);

 
Что-то я намудрил. Не понимаю как работает LookVec :(
 
173
1
3
Что, никто не знает?
 
173
1
3
Попробовал декомпильнуть мод, там у автора в луке такая же проблема как у меня видимо :D
Стрелы летят в зависимости от координаты вектора взгляда игрока 
вот код combo arrows (Стремно, да? На самом деле очень похож на мой)
Код:
EntityTechArrow var8 = new EntityTechArrow(par2World, player, var7 * 2.0F);
                EntityTechArrow arrow2 = new EntityTechArrow(par2World, player, var7 * 2.0F);
                arrow2.func_70107_b(arrow2.field_70165_t, arrow2.field_70163_u + 0.5D, arrow2.field_70161_v);
                arrow2.field_70251_a = 2;
                EntityTechArrow arrow3 = new EntityTechArrow(par2World, player, var7 * 2.0F);
                arrow3.func_70107_b(arrow3.field_70165_t, arrow3.field_70163_u + 0.25D, arrow3.field_70161_v);
                arrow3.field_70251_a = 2;
                EntityTechArrow arrow4 = new EntityTechArrow(par2World, player, var7 * 2.0F);
                arrow4.func_70107_b(arrow4.field_70165_t, arrow4.field_70163_u - 0.25D, arrow4.field_70161_v);
                arrow4.field_70251_a = 2;
                EntityTechArrow arrow5 = new EntityTechArrow(par2World, player, var7 * 2.0F);
                arrow5.func_70107_b(arrow5.field_70165_t, arrow5.field_70163_u - 0.5D, arrow5.field_70161_v);
                arrow5.field_70251_a = 2;
 
173
1
3
svk2140 написал(а):
Я как-бэ ответил :|
Вращаешь вектор, спавнишь энтити, вращаешь обратно (что-бы взгляд игрока не вращался).

Все равно как-то туго понимаю. Попробовал вот так, не робит:
Код:
EntityArrow entityArrow1 = new EntityArrow(w, player, 1.5F);
            player.getLookVec().rotateAroundX(2.5f);
            w.spawnEntityInWorld(entityArrow1);
            player.getLookVec().rotateAroundX(-2.5f);
            w.spawnEntityInWorld(entityArrow1);
            player.getLookVec().rotateAroundX(-2.5f);
            w.spawnEntityInWorld(entityArrow1);
            player.getLookVec().rotateAroundX(2.5f);
 
608
5
15
Потому что вектор достаётся в конструкторе...

Код:
EntityArrow entityArrow1 = new EntityArrow(w, player, 1.5F);
          player.getLookVec().rotateAroundX(2.5f);
          entityArrow1..monionX/Y/Z = player.getLookVec().x/y/z * speed;
          w.spawnEntityInWorld(entityArrow1);
          player.getLookVec().rotateAroundX(-2.5f);
          entityArrow1..monionX/Y/Z = player.getLookVec().x/y/z * speed;
          w.spawnEntityInWorld(entityArrow1);
          player.getLookVec().rotateAroundX(-2.5f);
          entityArrow1..monionX/Y/Z = player.getLookVec().x/y/z * speed;
          w.spawnEntityInWorld(entityArrow1);
          player.getLookVec().rotateAroundX(2.5f);
 
2,505
81
397
svk2140 написал(а):
Потому что вектор достаётся в конструкторе...

Код:
EntityArrow entityArrow1 = new EntityArrow(w, player, 1.5F);
          player.getLookVec().rotateAroundX(2.5f);
          entityArrow1..monionX/Y/Z = player.getLookVec().x/y/z * speed;
          w.spawnEntityInWorld(entityArrow1);
          player.getLookVec().rotateAroundX(-2.5f);
          entityArrow1..monionX/Y/Z = player.getLookVec().x/y/z * speed;
          w.spawnEntityInWorld(entityArrow1);
          player.getLookVec().rotateAroundX(-2.5f);
          entityArrow1..monionX/Y/Z = player.getLookVec().x/y/z * speed;
          w.spawnEntityInWorld(entityArrow1);
          player.getLookVec().rotateAroundX(2.5f);

И это не будет работать так, как задумывалось.
 
173
1
3
svk2140 написал(а):
Потому что вектор достаётся в конструкторе...
Все равно до меня не доходит -_-
Вот таким образом они по-началу летят в разные стороны, а потом сразу же перестраиваются в одну линию:
Код:
EntityArrow entityArrow1 = new EntityArrow(w, player, 1.5F);
        player.getLookVec().rotateAroundX(2.5f);
        float speed = 1.0f;
        entityArrow1.motionX= player.getLookVec().xCoord * speed;
        w.spawnEntityInWorld(entityArrow1);
        player.getLookVec().rotateAroundX(-2.5f);
        entityArrow1.motionY = player.getLookVec().yCoord * speed;
        w.spawnEntityInWorld(entityArrow1);
        player.getLookVec().rotateAroundX(-2.5f);
        entityArrow1.motionZ = player.getLookVec().zCoord * speed;
        w.spawnEntityInWorld(entityArrow1);
        player.getLookVec().rotateAroundX(2.5f);
 
608
5
15
Lobotino написал(а):
svk2140 написал(а):
Потому что вектор достаётся в конструкторе...
Все равно до меня не доходит -_-
Вот таким образом они по-началу летят в разные стороны, а потом сразу же перестраиваются в одну линию:
Код:
EntityArrow entityArrow1 = new EntityArrow(w, player, 1.5F);
        player.getLookVec().rotateAroundX(2.5f);
        float speed = 1.0f;
        entityArrow1.motionX= player.getLookVec().xCoord * speed;
        w.spawnEntityInWorld(entityArrow1);
        player.getLookVec().rotateAroundX(-2.5f);
        entityArrow1.motionY = player.getLookVec().yCoord * speed;
        w.spawnEntityInWorld(entityArrow1);
        player.getLookVec().rotateAroundX(-2.5f);
        entityArrow1.motionZ = player.getLookVec().zCoord * speed;
        w.spawnEntityInWorld(entityArrow1);
        player.getLookVec().rotateAroundX(2.5f);

Задолбал ;D
Вот кусок кода из моего мода:

Код:
for(int i = -5; i <= 5; i += 5)
 {
 float prevRotationYaw = player.rotationYaw;
 player.rotationYaw += i;
 Vec3 movingobjectposition = player.getLookVec();
 EntityBullet bullet = (EntityBullet) new EntityFireball(world, player);
 bullet.bulletMotionX = movingobjectposition.xCoord;
 bullet.bulletMotionY = movingobjectposition.yCoord;
 bullet.bulletMotionZ = movingobjectposition.zCoord;
 bullet.damage = 20 + data.getEffect(Effect.spellDamage).power;
 bullet.speed = 4;

 world.spawnEntityInWorld(bullet);
 player.rotationYaw = prevRotationYaw;
 }
 
173
1
3
Воооот, вот это уже работает, спасибо большое добрый ты человек  :p

 а вот это уже проблема концепции этого форума. Все считают друг друга либо конкурентами, либо дятлами и поэтому не хотят помогать, дают информацию кусочками, причем без какого-либо направления движения. Приходится долбать и это печально :(
 
Сверху