Minecraft modding逐渐改变玩家的方向

时间:2016-06-20 09:09:07

标签: java minecraft direction mod

对于一个Minecraft项目,我想让玩家逐渐面对(0,60,0)。到目前为止,当玩家移动超过720°(0,60,0)时,我所尝试的一切似乎都失败了。

任何人都知道如何让相机无缝移动到(0,60,0)?

谢谢!

这是我到目前为止的代码(在切换时循环运行):

int x = 0;
int y = 60;
int z = 0;

player = Minecraft.getMinecraft().thePlayer;

double dirx = player.posX - 0;
double diry = player.posY - 60;
double dirz = player.posZ - 0;

double len = Math.sqrt(dirx*dirx + diry*diry + dirz*dirz);

dirx /= len;
diry /= len;
dirz /= len;

double pitch = Math.asin(diry);
double yaw = Math.atan2(dirz, dirx);

//to degree
pitch = pitch * 180.0 / Math.PI;
yaw = yaw * 180.0 / Math.PI;

yaw += 90f;

if(yaw > player.rotationYaw) {
    player.rotationYaw++;
} else if(yaw < player.rotationYaw) {
    player.rotationYaw--;
}

编辑:

没有if语句的代码可以正常工作。偏航和俯仰变量以度为单位。

我所拥有的是这样一个事实,即每当我转身(0,60,0)几次时,屏幕突然转了360°,没有明显的原因。

1 个答案:

答案 0 :(得分:1)

这是一个常见问题。或者更确切地说,人们普遍存在的问题是他们想要做的事情是跨越时间的事情。并且不知道如何随着时间的推移而去。&#34;

你需要lerp相机一小段距离每个嘀嗒,直到达到所需的方向。你要么:

a)创建一个事件处理程序并订阅其中一个TickEvents(选择一个适当的,然后确保选择一个阶段,Phase.START或Phase.END,否则您的代码将在一帧中运行多次)

b)你的代码已经存在的任何方法(注意:这个代码必须在勾选时调用一次)并在那里执行。

不知道如何计算lerp? Stack Overflow already has that answered