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

如何将Godot中这段2D移动代码转换为3D实现?

2D转3D:move_and_slide 适配实现方法

你的2D代码通过三角函数基于角色旋转生成平面移动方向,转换到3D时核心思路一致,只需适配3D坐标系的方向向量,具体实现如下:

核心逻辑转换

2D中rotation是绕Z轴的角度,对应3D里地面角色通常绕Y轴(垂直向上轴)旋转,移动方向需生成Vector3类型的平面向量(Y轴分量设为0,保持在地面移动)。

实现代码

方法1:手动计算三角函数(对应原2D逻辑)

直接将2D的Y分量替换为Z分量,Y轴设为0:

# 适用于Godot 3/4,KinematicBody3D(或KinematicBody)节点
move_and_slide(Vector3(cos(rotation.y), 0, sin(rotation.y)) * 50, Vector3.UP)
  • rotation.y是角色绕Y轴的旋转角度
  • Vector3.UP是3Dmove_and_slide的必填参数(指定向上方向,用于处理地面碰撞)

方法2:使用Transform获取方向(更推荐)

手动计算三角函数易因坐标系差异出错,直接用角色的transform.basis获取面向方向更可靠:

# 沿角色正面方向移动(Godot默认Z轴为正面)
move_and_slide(transform.basis.z * 50, Vector3.UP)

# 若你的模型正面朝向与默认Z轴相反,改用负方向
# move_and_slide(-transform.basis.z * 50, Vector3.UP)

关于你尝试的tangent参数

3D版move_and_slide的tangent是用于自定义滑动方向的可选参数,常规地面移动不需要手动设置,仅在特殊场景(如沿斜面滑动)才需调整,你的问题中无需额外添加该参数。

内容的提问来源于stack exchange,提问作者No-one in particular

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:27:22