提问人:Neironari 提问时间:11/6/2023 更新时间:11/7/2023 访问量:51
Godot 3D 坐标系独立运动
Godot 3D coordinate system independent movement
问:
我看过很多 3d fps 运动的例子。它们都使用全局 X 和 Z 全局坐标来行走/冲刺,并使用 Y 坐标进行跌倒/跳跃。我有下一个问题:我可以创建局部坐标系,该坐标系将以相同的方式使用根对象坐标,但相对于全局坐标?例如,如果我将根对象围绕 Z 轴旋转 90 度,我的控制器将使用 Z 轴和 Y 轴进行步行/冲刺,使用 X 轴进行跌倒/跳跃?
答:
2赞
Theraot
11/7/2023
#1
是的, 你可以的。
关于变换, Godot 3 的方法已被运算符取代.因此,您将变换相乘以组成它们,或者将变换和向量相乘以变换它。xform
*
我不确定您到底想如何控制它,但这里有一些注意事项:
- 项目设置中有一个默认的重力,您可能需要更改该重力。但是你可以通过用 s 覆盖它来获得动态重力。如果您需要读取施加在身体所在位置的重力,请使用:。
Area3D
PhysicsServer3D.body_get_direct_state(get_rid()).total_gravity
- 在全局基础上有一个定义,用于决定什么是地板、墙壁或天花板。因此,您可能希望动态更改它。
CharacterBody3D
up_direction
- 除了初学者代码之外,通常使控件相对于 .例如,“right”不会朝向全局正 X,而是朝向 的正 X。如果需要对 的引用,可以使用 获取它。
Camera3D
Camera3D
Camera3D
get_viewport().get_camera_3d()
- 的 是全球基础。
velocity
CharacterBody3D
评论
global_transform
Node3D
RigidBody3D
KinematicBody3D
CharacterBody3D