我如何 CFrame 零件?

Posted

技术标签:

【中文标题】我如何 CFrame 零件?【英文标题】:How do I CFrame parts? 【发布时间】:2011-03-21 04:39:39 【问题描述】:

我听说您可以使用.CFrame 属性将零件倾斜一个精确的量。但是,我不清楚如何使用它。以下代码不起作用:

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

不是将零件旋转 90 度和 45 度。我做错了什么?

【问题讨论】:

您应该添加更多上下文。如果没有 roblox 标签,我将不知道您在说什么。此外,roblox 是来自不同公司的几种产品的名称。 【参考方案1】:

首先,使用 CFrame.fromEulerAnglesXYZ 函数创建一个指向您希望的方向的新 CFrame。然后,使用 Vector3 数学将 CFrame 移动到所需位置。 例如。

local cframe = CFrame.fromEulerAnglesXYZ(XRADIANS, YRADIANS, ZRADIANS)
cframe = (cframe - cframe.p) + Vector3.new(XPOS,YPOS,ZPOS)

【讨论】:

【参考方案2】:

文档指出,采用 3 个参数的 Coordinate Frame (CFrame) 构造函数定义了位置偏移量。因此,您的示例代码将沿 x 轴移动部件 90,沿 z 轴移动部件 45。要在您尝试时执行轮换,请参阅 CFrame.fromEulerAnglesXYZ 函数。

【讨论】:

【参考方案3】:

参数指定位置,而不是旋转

【讨论】:

【参考方案4】:

当我开始使用 CFrame 时,我也遇到了这个问题。它们是弧度,而不是度数。我写了一份关于 ROBLOX 的快速 CFrameing 指南,here。

如果您对弧度感到困惑,您应该查看关于弧度的 ROBLOX wiki 页面以获得基本了解:wiki.roblox.com/index.php/Radians

谢谢!

-pighead10

【讨论】:

您的指南链接不再有效。你能更新吗?【参考方案5】:
-- Rotates the part by 90 degrees. If you want to change the axis your
-- rotating it on Use a different placement such as CFrame.Angles(math.rad(90),0,0)
Workspace.Part.CFrame = Workspace.Part.CFrame * CFrame.Angles(0, math.rad(90), 0)

【讨论】:

以上是关于我如何 CFrame 零件?的主要内容,如果未能解决你的问题,请参考以下文章

如何基于相机旋转角色? (Roblox)

偏移 CFrame 数学

SQL 难题,如何选择零件的最新日期,但每个零件只有 1 行(唯一)

C++ MFC:将位图绘制到 CFrame 中

AutoCAD如何移动零件和缩放零件图

请问“solidworks 如何将装配体变成单个零件”