我如何对部件进行 CFrame(坐标框架)操作?

我听说你可以使用 .CFrame 属性以精确的角度倾斜一个零件。然而,我不清楚如何使用它。以下代码并不起作用:

Workspace.Part.CFrame = CFrame.new(90,0,45)

它没有将零件旋转 90 度和 45 度。我做错了什么?

原文链接 https://stackoverflow.com/questions/3336857

点赞
stackoverflow用户1491
stackoverflow用户1491

文档说明一个带有 3 个参数的 Coordinate Frame (CFrame) 构造函数定义了一个位置偏移。因此,您的示例代码将沿 x 轴移动 90,沿 z 轴移动 45。如果要执行您尝试的旋转,请查看 CFrame.fromEulerAnglesXYZ 函数。

2010-07-26 18:35:37
stackoverflow用户356778
stackoverflow用户356778

首先,使用 CFrame.fromEulerAnglesXYZ 函数创建一个朝向你所需方向的新 CFrame。然后,使用 Vector3 数学计算将 CFrame 移动到所需位置。 例如:

local cframe = CFrame.fromEulerAnglesXYZ(XRADIANS, YRADIANS, ZRADIANS)
cframe = (cframe - cframe.p) + Vector3.new(XPOS,YPOS,ZPOS)
2010-08-03 18:03:49
stackoverflow用户102441
stackoverflow用户102441

arguments 中提供的是位置信息,而非旋转信息。

2010-09-10 21:13:33
stackoverflow用户1870451
stackoverflow用户1870451

我在刚开始使用 CFraming 时也遇到了这个问题。它们是弧度制而不是角度制。我在 ROBLOX 上写了一个快速的 CFraming 指南,在这里

如果你在弧度制上有困难,你应该查看 ROBLOX 维基页面上的弧度制,以获得基本的了解:wiki.roblox.com/index.php/Radians

谢谢!

-pighead10

2010-11-22 19:51:14
stackoverflow用户3369079
stackoverflow用户3369079
- 将部件旋转 90 度。如果您想更改旋转轴,请使用不同的放置方式,比如 CFrame.Angles(math.rad(90),0,0)。
Workspace.Part.CFrame = Workspace.Part.CFrame * CFrame.Angles(0, math.rad(90), 0)
2014-03-01 19:13:29