Java 让minecraft玩家看问题
我试图让球员看在特定的点。我所看到的只是这一点,但前提是它在它的视野中。我希望它也能上下看Java 让minecraft玩家看问题,java,math,minecraft,Java,Math,Minecraft,我试图让球员看在特定的点。我所看到的只是这一点,但前提是它在它的视野中。我希望它也能上下看 public static void lookAt(double x, double y, double z) { double l; double w; double c; l = x - playerX; w = z - playerZ; c = Math.sqrt(l * l + w + w); double alpha1 = -Math.a
public static void lookAt(double x, double y, double z) {
double l;
double w;
double c;
l = x - playerX;
w = z - playerZ;
c = Math.sqrt(l * l + w + w);
double alpha1 = -Math.asin(l / c) / Math.PI * 180;
double alpha2 = Math.acos(w / c) / Math.PI * 180;
if (alpha2 > 180) {
playerYaw = 180 - (float) alpha1;
} else {
playerYaw = (float) alpha1;
}
}
我找了一个俯仰算法,但似乎没有一个有效。回答晚了,但哦,如果你能得到一个单位向量,表示从你的位置到你想看的点的方向,你可以用简单的三角法计算俯仰和偏航 首先,你需要用点减去你的位置,然后对结果进行归一化,这将得到我们需要的方向向量(单位向量) 现在我们可以计算角度,Y的正弦弧将给出俯仰角,X和Z的tan弧将给出偏航角 要了解原因: 现在你应该有了俯仰和偏航,别忘了把它们转换成度 下面是一些代码:
public static void LookAt(double px, double py, double pz , EntityPlayer me)
{
double dirx = me.getPosition(0f).X - px;
double diry = me.getPosition(0f).Y - py;
double dirz = me.getPosition(0f).Z - pz;
double len = Math.sqrt(dirx*dirx + diry*diry + dirz*dirz);
dirx /= len
diry /= len;
dirz /= len;
double pitch = Math.asin(dir.y);
double yaw = Math.atan2(dir.z, dir.x);
//to degree
pitch = pitch * 180.0 / Math.PI;
yaw = yaw * 180.0 / Math.PI;
yaw += 90f;
me.rotationPitch = (float)pitch;
me.rotationYaw = (float)yaw;
}
回答晚了,但是,如果你能得到一个单位向量,表示从你的位置到你想看的点的方向,你可以用简单的三角法计算俯仰和偏航 首先,你需要用点减去你的位置,然后对结果进行归一化,这将得到我们需要的方向向量(单位向量) 现在我们可以计算角度,Y的正弦弧将给出俯仰角,X和Z的tan弧将给出偏航角 要了解原因: 现在你应该有了俯仰和偏航,别忘了把它们转换成度 下面是一些代码:
public static void LookAt(double px, double py, double pz , EntityPlayer me)
{
double dirx = me.getPosition(0f).X - px;
double diry = me.getPosition(0f).Y - py;
double dirz = me.getPosition(0f).Z - pz;
double len = Math.sqrt(dirx*dirx + diry*diry + dirz*dirz);
dirx /= len
diry /= len;
dirz /= len;
double pitch = Math.asin(dir.y);
double yaw = Math.atan2(dir.z, dir.x);
//to degree
pitch = pitch * 180.0 / Math.PI;
yaw = yaw * 180.0 / Math.PI;
yaw += 90f;
me.rotationPitch = (float)pitch;
me.rotationYaw = (float)yaw;
}
回答晚了,但是,如果你能得到一个单位向量,表示从你的位置到你想看的点的方向,你可以用简单的三角法计算俯仰和偏航 首先,你需要用点减去你的位置,然后对结果进行归一化,这将得到我们需要的方向向量(单位向量) 现在我们可以计算角度,Y的正弦弧将给出俯仰角,X和Z的tan弧将给出偏航角 要了解原因: 现在你应该有了俯仰和偏航,别忘了把它们转换成度 下面是一些代码:
public static void LookAt(double px, double py, double pz , EntityPlayer me)
{
double dirx = me.getPosition(0f).X - px;
double diry = me.getPosition(0f).Y - py;
double dirz = me.getPosition(0f).Z - pz;
double len = Math.sqrt(dirx*dirx + diry*diry + dirz*dirz);
dirx /= len
diry /= len;
dirz /= len;
double pitch = Math.asin(dir.y);
double yaw = Math.atan2(dir.z, dir.x);
//to degree
pitch = pitch * 180.0 / Math.PI;
yaw = yaw * 180.0 / Math.PI;
yaw += 90f;
me.rotationPitch = (float)pitch;
me.rotationYaw = (float)yaw;
}
回答晚了,但是,如果你能得到一个单位向量,表示从你的位置到你想看的点的方向,你可以用简单的三角法计算俯仰和偏航 首先,你需要用点减去你的位置,然后对结果进行归一化,这将得到我们需要的方向向量(单位向量) 现在我们可以计算角度,Y的正弦弧将给出俯仰角,X和Z的tan弧将给出偏航角 要了解原因: 现在你应该有了俯仰和偏航,别忘了把它们转换成度 下面是一些代码:
public static void LookAt(double px, double py, double pz , EntityPlayer me)
{
double dirx = me.getPosition(0f).X - px;
double diry = me.getPosition(0f).Y - py;
double dirz = me.getPosition(0f).Z - pz;
double len = Math.sqrt(dirx*dirx + diry*diry + dirz*dirz);
dirx /= len
diry /= len;
dirz /= len;
double pitch = Math.asin(dir.y);
double yaw = Math.atan2(dir.z, dir.x);
//to degree
pitch = pitch * 180.0 / Math.PI;
yaw = yaw * 180.0 / Math.PI;
yaw += 90f;
me.rotationPitch = (float)pitch;
me.rotationYaw = (float)yaw;
}
我会先给lwc起个更好的名字。l对任何东西来说都是一个非常糟糕的名字,因为它看起来像头号。我会先给lwc起个更好的名字。l对任何东西来说都是一个非常糟糕的名字,因为它看起来像头号。我会先给lwc起个更好的名字。l对任何东西来说都是一个非常糟糕的名字,因为它看起来像头号。我会先给lwc起个更好的名字。对于任何东西来说,l都是一个非常糟糕的名字,因为它看起来像是头号的。谢谢,这是可行的,但它让玩家看到的是实体所站的块,而不是实体的高度。(虽然这很简单,可以更改)谢谢,这很有效,但它让玩家看到实体所站的块,而不是实体高度。(虽然这很简单,可以更改)谢谢,这很有效,但它让玩家看到实体所站的块,而不是实体高度。(虽然这很简单,可以更改)谢谢,这很有效,但它让玩家看到实体所站的块,而不是实体高度。(尽管这很简单,可以改变)