You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取玩家朝向(北、东、西、南)?我的Mod冲刺功能代码失效

解决Minecraft Mod玩家朝向冲刺问题

你的代码核心问题有两个:一是朝向判断的区间没覆盖边界值(比如yaw=-45、45等情况会导致pdir为空,无法触发冲刺);二是可以用更高效的方式直接计算冲刺速度,不用先转换为字符串方向。

修正原代码(保留四方向判断)

把区间判断改成包含边界,确保所有yaw值都能匹配到方向:

String pdir = "";
Minecraft mc = Minecraft.getMinecraft();
float yaw = mc.player.getRotationYawHead();
// 覆盖所有边界值,避免pdir为空
if (yaw >= 135 || yaw <= -135) {
    pdir = "north";
} else if (yaw <= -45) {
    pdir = "east";
} else if (yaw >= 45) {
    pdir = "west";
} else {
    pdir = "south";
}

// 应用冲刺速度
if (pdir.equalsIgnoreCase("north")) {
    mc.player.motionZ -= Speed;
} else if (pdir.equalsIgnoreCase("east")) {
    mc.player.motionX += Speed;
} else if (pdir.equalsIgnoreCase("west")) {
    mc.player.motionX -= Speed;
} else if (pdir.equalsIgnoreCase("south")) {
    mc.player.motionZ += Speed;
}

更优方案(支持全方向冲刺)

如果想让玩家朝任意方向(比如东北、西北)都能正确冲刺,不用局限于四个正方向,可以用三角函数直接计算速度分量,更准确高效:

Minecraft mc = Minecraft.getMinecraft();
float yaw = mc.player.getRotationYawHead();
double speed = Speed;

// 将角度转换为弧度
double yawRadians = Math.toRadians(yaw);
// 根据朝向计算X、Z轴的速度
mc.player.motionX -= Math.sin(yawRadians) * speed;
mc.player.motionZ += Math.cos(yawRadians) * speed;

原理:Minecraft中yaw值对应绕垂直轴的旋转,通过三角函数可以直接算出朝向对应的X/Z轴速度分量,这样不管玩家朝哪个方向,冲刺都会精准对应。

内容的提问来源于stack exchange,提问作者VanProBRO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:40:33