gpt4 book ai didi

java - Minecraft 模组逐渐改变玩家的方向

转载 作者:行者123 更新时间:2023-11-30 10:43:00 27 4
gpt4 key购买 nike

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

有人知道如何让相机无缝移动到 (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°。

最佳答案

这是一个常见问题。或者更确切地说,人们普遍存在的问题是他们想做“跨越时间的事情”,却不知道如何让它“跨越时间”。

您需要lerp相机每个刻度一小段距离,直到达到所需的方向。您要么需要:

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

b) 无论你的代码已经在什么方法中(注意:这个代码必须已经被调用一次)然后在那里做 lerping。

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

关于java - Minecraft 模组逐渐改变玩家的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37918557/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com