Как задать такую траекторию?

Как?
[merge_posts_bbcode]Добавлено: 13.08.2015 18:20:40[/merge_posts_bbcode]

Начнём с того, что я не знаю что такое векторы в коддинге.
 
Вектор - направленный отрезок прямой

Код:
public EntityThrowable(World p_i1777_1_, EntityLivingBase p_i1777_2_)
    {
        super(p_i1777_1_);
        this.thrower = p_i1777_2_;
        this.setSize(0.25F, 0.25F);
        this.setLocationAndAngles(p_i1777_2_.posX, p_i1777_2_.posY + (double)p_i1777_2_.getEyeHeight(), p_i1777_2_.posZ, p_i1777_2_.rotationYaw, p_i1777_2_.rotationPitch);
        this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
        this.posY -= 0.10000000149011612D;
        this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F);
        this.setPosition(this.posX, this.posY, this.posZ);
        this.yOffset = 0.0F;
        float f = 0.4F;
        this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
        this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f);
        this.motionY = (double)(-MathHelper.sin((this.rotationPitch + this.func_70183_g()) / 180.0F * (float)Math.PI) * f);
        this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, this.func_70182_d(), 1.0F);
    }
>>setLocationAndAngles
Позицию задавай через супер-координаты,а углы меняй(ну я надеюсь ты сможешь изменить угол).Например,
Код:
for(int i=0;i<5;++i){
int baseAngle=45;
rotationYaw+=(i*baseAngle);
}
Каждая пуля будет на 45 градусов дальше другой. Поэкспериментируй
[merge_posts_bbcode]Добавлено: 13.08.2015 20:27:01[/merge_posts_bbcode]

А хотя можно просто менять yaw/pitch
2000px-Yaw_Axis_Corrected.svg.png
 
Да я знаю что такое вектор, просто не знал как его менять используя градусы.

Спасибо
[merge_posts_bbcode]Добавлено: 13.08.2015 19:24:41[/merge_posts_bbcode]

Не работает чего-то(
 
Добавил это в onUpdate - результата ноль
Код:
        this.rotationPitch += 45;
 
Я в конструкторе делаю - работает.Если ты хочешь делать в onUpdate,тогда придётся шаманить с другими переменными и/или разбираться поточнее.
[merge_posts_bbcode]Добавлено: 13.08.2015 21:30:53[/merge_posts_bbcode]

И ты делай в конструкторе.У тебя же на рисунке 3 вектора с разным изначальным углом.Менять надо 1 раз в конструкторе
 
Всеравно не работает :(
[merge_posts_bbcode]Добавлено: 13.08.2015 19:32:17[/merge_posts_bbcode]

Можно-ли как-то повернуть, и получить чистst motion`ы?
 
спауни три энтити и указывай каждой ротейт
 
Я создаю энтити так:
Код:
    Vec3 movingobjectposition = player.getLookVec();
    EntityBullet bullet = (EntityBullet) new EntityFireball(world, player);
    bullet.setPosition(bullet.posX, bullet.posY, bullet.posZ);
    bullet.bulletMotionX = movingobjectposition.xCoord;
    bullet.bulletMotionY = movingobjectposition.yCoord;
    bullet.bulletMotionZ = movingobjectposition.zCoord;
    bullet.damage = 5;
    bullet.speed = 4;
    bullet.rotationyaw = значение;
    world.spawnEntityInWorld(bullet);

rotationyaw абсолютно не влияет на пулю.

Тоже самое пробовал в конструкторе, тоже ничего.
 
Ты у пули-то нахрена меняешь? motion задаётся исходя из направления взгляда переданной сущности, у неё и меняй.
Код:
    //сохраяем текущий rotataionYaw игрока
    player.rotationYaw = yourYaw; //сам поймёшь
    Vec3 movingobjectposition = player.getLookVec(); //преобразует yaw pitch roll в единичный вектор (направление)
    EntityBullet bullet = (EntityBullet) new EntityFireball(world, player);
    bullet.setPosition(bullet.posX, bullet.posY, bullet.posZ);
    bullet.bulletMotionX = movingobjectposition.xCoord;
    bullet.bulletMotionY = movingobjectposition.yCoord;
    bullet.bulletMotionZ = movingobjectposition.zCoord;
    bullet.damage = 5;
    bullet.speed = 4;
    world.spawnEntityInWorld(bullet);
    //верни player.rotationYaw сохранённое значение, чтобы не поломать ничего
 
Oldestkon написал(а):
Ты у пули-то нахрена меняешь? motion задаётся исходя из направления взгляда переданной сущности, у неё и меняй.
Код:
    //сохраяем текущий rotataionYaw игрока
    player.rotationYaw = yourYaw; //сам поймёшь
    Vec3 movingobjectposition = player.getLookVec(); //преобразует yaw pitch roll в единичный вектор (направление)
    EntityBullet bullet = (EntityBullet) new EntityFireball(world, player);
    bullet.setPosition(bullet.posX, bullet.posY, bullet.posZ);
    bullet.bulletMotionX = movingobjectposition.xCoord;
    bullet.bulletMotionY = movingobjectposition.yCoord;
    bullet.bulletMotionZ = movingobjectposition.zCoord;
    bullet.damage = 5;
    bullet.speed = 4;
    world.spawnEntityInWorld(bullet);
    //верни player.rotationYaw сохранённое значение, чтобы не поломать ничего
Спасибо большое!
 
Назад
Сверху