tox1cozZ
aka Agravaine
- 8,455
- 598
- 2,892
Нужно двигать энтити с определенной скорость от одних координат до других.
Ну и рассчитать rotationYaw и rotationPitch, чтобы он двигался "лицом".
Познания в матане очень скудные, по-этому прошу не смеяться)
Где-то нагуглил, где-то выдрал с исходников... Вобщем, не работает как надо:
Ну и рассчитать rotationYaw и rotationPitch, чтобы он двигался "лицом".
Познания в матане очень скудные, по-этому прошу не смеяться)
Где-то нагуглил, где-то выдрал с исходников... Вобщем, не работает как надо:
Java:
public void setMovePath(Vec3 start, Vec3 end){
double x = end.xCoord - start.xCoord;
double y = end.yCoord - start.yCoord;
double z = end.zCoord - start.zCoord;
double len = MathHelper.sqrt_double(x * x + z * z);
if(len >= 1.0E-7D){
double pitch = -(Math.atan2(y, MathHelper.sqrt_double(x * x + z * z)));
double yaw = Math.atan2(z, x) - 90.0;
//to degree
pitch = pitch * 180.0 / Math.PI;
yaw = yaw * 180.0 / Math.PI;
prevRotationPitch = rotationPitch = (float)pitch;
prevRotationYaw = rotationYaw = (float)yaw;
motionX = (double)(-MathHelper.sin(rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float)Math.PI));
motionZ = (double)(MathHelper.cos(rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(rotationPitch / 180.0F * (float)Math.PI));
motionY = (double)(-MathHelper.sin(rotationPitch / 180.0F * (float)Math.PI));
setLocationAndAngles(start.xCoord, start.yCoord, start.zCoord, rotationYaw, rotationPitch);
}
}