CFrame

非推奨を表示

*このコンテンツは、ベータ版のAI(人工知能)を使用して翻訳されており、エラーが含まれている可能性があります。このページを英語で表示するには、 こちら をクリックしてください。

CFrame データタイプは、 座標フレーム の略入力で、3Dの位置と方向を記述します。それは 位置 コンポーネントと 回転 コンポーネントから構成され、Roblox で 3D データを処理するための必須の算術操作を含みます。


-- 特定の位置で CFrame を作成し、ユーラー回転
local cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)

For an introduction to the CFrame データタイプの紹介は、CFrames を参照してください。

位置コンポーネント

位置コンポーネントは Vector3 として利用可能です。さらに、CFrame オブジェクトの位置のコンポーネントも、XY、およびZのようなプロパティとして、Vector3のように利用可能です。

旋回コンポーネント

CFrame は、3×3の 回転マトリックス に3D回転データを保存します。これらの値は、xy、およびzの位置値の後、CFrame:GetComponents()機能によって返されます。このマトリックスは、回転を含む計算を行うときに内部で使用され、 ラディアン を単位として使用します (1つからもう1つに変換するときは、math.rad() または math.deg() を使用します)。Roblox エンジンが回転を行う方法に関する詳細情報は、Enum.RotationOrder を参照してください。

以下の表は、CFrame オブジェクトの回転マトリックスの構成と、LookVectorRightVector などのベクトルプロパティとの関係を示しています。回転マトリックスの個々のコンポーネントは、自体ではほとんど役に立たないものの、それらから派生するベクトルプロパティは、はるかに有用です。


<th>Yベクトル、上ベクトル</th>
<th>ZVector、-LookVector <sup>†</sup></th>
</tr>
</thead>
<tbody>
<tr>
<td>R00</td>
<td>R01</td>
<td>R02</td>
</tr>
<tr>
<td>R10</td>
<td>R11</td>
<td>R12</td>
</tr>
<tr>
<td>R20</td>
<td>R21</td>
<td>R22</td>
</tr>
</tbody>
Xベクトル、Rightベクトル
他のものとは異なり、LookVector は否定された列コンポーネントを表します。LookVector は、Instances のように、CameraAttachments など、多くのベクトルをインスタンスが指している方向として扱うため、有用です。

概要

コンストラクタ

プロパティ

方法

演算機能

コンストラクタ

new

空白のIDを作成します CFrame

new

提供された Vector3 の位置で回転なしの CFrame を返します。

パラメータ

pos: Vector3

new

新しい CFrame を返し、pos に位置し、lookAt に向かっていると仮定し、(0, 1, 0) が世界空間で「上」と考えられます。

このコンストラクタオーバーロードは、CFrame.lookAt() に置き換えられ、同様の目標を達成しました。後方互換性のために残されています。

高いピッチ角(約 82 度)では、数値安定性が低下する可能性があります。これが問題であるか、または異なる「上」ベクトルが必要な場合は、CFrame.fromMatrix() を使用して、CFrame をより正確に構築します。さらに、if lookAt が直接上にある pos (ピッチ角 90 度) の場合、「上」ベクトルは X 軸に切り替わります。

パラメータ

pos: Vector3
lookAt: Vector3

new

提供された CFramexyz コンポーネントで構成される位置を返します。

パラメータ

new

位置 ( x , y , z ) と四角数 ( qX , qY , qZ , qW ) から CFrame を返し、四角数 ( > , > , > , > ) を返します。クアターニオンは、有効な回転を表現するための単位長さであると期待されます。そうでない場合、クアドランは正常化されます。

パラメータ

new

回転マトリックスによって指定された方向性で CFrame をポジションから作成し、xyz から回転マトリックスによって指定された方向性を作成します。

[[R00 R01 R02] [R10 R11 R12] [R20 R21 R22]]

パラメータ

R00: number
R01: number
R02: number
R10: number
R11: number
R12: number
R20: number
R21: number
R22: number

lookAt

新しい CFrame を返し、位置は at 、向かって lookAt 、オプションで上向き方向 ( up ) をデフォルトの (0, 1, 0) で指定します。

パラメータ

lookAt: Vector3
既定値: Vector3.yAxis

lookAlong

新しい CFrame を返し、位置 at と沿って direction 、オプションで上向き方向 ( up ) を指定し、デフォルトで (0, 1, 0) とします。

このコンストラクタは CFrame.lookAt(at, at + direction) と同等です。

パラメータ

direction: Vector3
既定値: Vector3.yAxis

fromRotationBetweenVectors

返す CFrame は、最初の Vector3 から二次へ回転するために必要な方向を表し、位置はゼロに設定されます。

パラメータ

from: Vector3

「から」方向を表すベクトル。

「へ」方向を表すベクトル。

fromEulerAngles

回転した CFrame を角度 rxryrz でラジアンで返します。回転は、デフォルトで Enum.RotationOrder と同等のオプションの XYZ に適用されます:


CFrame.fromEulerAngles(rx, 0, 0) * -- X
CFrame.fromEulerAngles(0, ry, 0) * -- Y
CFrame.fromEulerAngles(0, 0, rz) -- Z

パラメータ

rx: number
ry: number
rz: number
既定値: Enum.RotationOrder.XYZ

fromEulerAnglesXYZ

回転した を角度 、 、および でラジアン使用して返し、等しくなります:


CFrame.fromEulerAngles(rx, 0, 0) * -- X
CFrame.fromEulerAngles(0, ry, 0) * -- Y
CFrame.fromEulerAngles(0, 0, rz) -- Z

パラメータ

rx: number
ry: number
rz: number

fromEulerAnglesYXZ

回転した を角度 、 、および でラジアン使用して返し、等しくなります:


CFrame.fromEulerAngles(0, ry, 0) * -- Y
CFrame.fromEulerAngles(rx, 0, 0) * -- X
CFrame.fromEulerAngles(0, 0, rz) -- Z

パラメータ

rx: number
ry: number
rz: number

Angles

等しい fromEulerAnglesXYZ()

パラメータ

rx: number
ry: number
rz: number

fromOrientation

等しい fromEulerAnglesYXZ()

パラメータ

rx: number
ry: number
rz: number

fromAxisAngle

ユニット Vector3 から回転した CFrame を返し、ラジアンで回転します。

パラメータ

fromMatrix

翻訳から CFrame と回転マトリックスの列を返します。if vZ が除外されると、3番目の列は vX:Cross(vY).Unit と計算されます。

パラメータ

pos: Vector3

3D 位置の CFrame

等しい RightVector

等しい UpVector

等しい - LookVector

プロパティ

identity

翻訳または回転なしの身分 CFrame 。このプロパティは 定数 であり、個々の CFrame オブジェクトを介してアクセスするのではなく、グローバルにアクセスする必要があります。

Position

3D 位置の CFrame

Rotation

翻訳なしの CFrame のコピー。

位置の X 座標。

位置の Y 座標。

位置の Z 座標。

LookVector

CFrame オブジェクトの前方向コンポーネントのオリエンテーション、否定された ZVector または回転マトリックスの否定された第 3 列と同等


local cf = CFrame.new(0, 0, 0)
local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()
print(cf.LookVector) --> (-0, -0, -1)
print(-cf.ZVector) --> (-0, -0, -1)
print(-R02, -R12, -R22) --> (-0 -0 -1)

オブジェクトの を自分自身に追加すると、向きを 1 ユニット前進させて移動します。

RightVector

CFrame オブジェクトの右向きコンポーネントのオリエンテーション。XVector または回転マトリックスの最初の列と同等


local cf = CFrame.new(0, 0, 0)
local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()
print(cf.RightVector) --> (1, 0, 0)
print(cf.XVector) --> (1, 0, 0)
print(R00, R10, R20) --> (1 0 0)

UpVector

CFrame オブジェクトの上向きコンポーネントのオリエンテーション。YVector または回転マトリックスの2番目の列と同等。


local cf = CFrame.new(0, 0, 0)
local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()
print(cf.UpVector) --> (0, 1, 0)
print(cf.YVector) --> (0, 1, 0)
print(R01, R11, R21) --> (0 1 0)

XVector

CFrame オブジェクトのオリエンテーションの X コンポーネント。RightVector または回転マトリックスの最初の列と同等。


local cf = CFrame.new(0, 0, 0)
local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()
print(cf.XVector) --> (1, 0, 0)
print(cf.RightVector) --> (1, 0, 0)
print(R00, R10, R20) --> (1 0 0)

YVector

オブジェクトのオリエンテーションの Y コンポーネント。旋回マトリックスの 2番目の列または同等のものと同等です。


local cf = CFrame.new(0, 0, 0)
local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()
print(cf.YVector) --> (0, 1, 0)
print(cf.UpVector) --> (0, 1, 0)
print(R01, R11, R21) --> (0 1 0)

ZVector

CFrame オブジェクトのオリエンテーションの Z コンポーネント。否定された LookVector または回転マトリックスの第 3 列と同等。


local cf = CFrame.new(0, 0, 0)
local x, y, z, R00, R01, R02, R10, R11, R12, R20, R21, R22 = cf:GetComponents()
print(cf.ZVector) --> (0, 0, 1)
print(-cf.LookVector) --> (0, 0, 1)
print(R02, R12, R22) --> (0 0 1)

方法

Inverse

CFrame の逆を返します。

戻り値

Lerp

自身と goal によって間に挿入された CFrame を用いて、alpha によって返されます。

パラメータ

goal: CFrame
alpha: number

戻り値

Orthonormalize

CFrame の正方形化されたコピーを返します。BasePart.CFrame プロパティは自動的に正方形化を適用しますが、CFrames を受け取る他の API はそうしませんので、この方法は時折 CFrame をインクリメントアップデートし、それらと一緒に使用するときに必要になります

戻り値

ToWorldSpace

1つまたは複数の CFrame オブジェクトを受け取り、オブジェクトからワールドスペースに変換して返します。同等:

CFrame * cf

パラメータ

戻り値

ToObjectSpace

1つまたは複数の CFrame オブジェクトを受け取り、世界からオブジェクトスペースに変換して返します。同等:

CFrame:Inverse() * cf

パラメータ

戻り値

PointToWorldSpace

1つまたは複数の Vector3 オブジェクトを受け取り、オブジェクトからワールドスペースに変換して返します。同等:

CFrame * v3

パラメータ

戻り値

PointToObjectSpace

1つまたは複数の Vector3 オブジェクトを受け取り、世界からオブジェクトスペースに変換して返します。同等:

CFrame:Inverse() * v3

パラメータ

戻り値

VectorToWorldSpace

1つまたは複数の Vector3 オブジェクトを受け取り、それらをオブジェクトからワールドスペースに回転させて返します。同等の:

(CFrame - CFrame.Position) * v3

パラメータ

戻り値

VectorToObjectSpace

1つまたは複数の Vector3 オブジェクトを受け取り、世界からオブジェクトスペースに回転して返します。同等:

(CFrame:Inverse() - CFrame:Inverse().Position) * v3

パラメータ

戻り値

GetComponents

返す値 , , , , , , , , , , , , , , ‑ ‑ が と の位置を表す 3×3回転マトリックスを表す。

戻り値

ToEulerAngles

オプションの Enum.RotationOrder を使用して生成できる約角を返します。CFrameorder を提供しない場合、メソッドは Enum.RotationOrder.XYZ を使用します。

パラメータ

既定値: Enum.RotationOrder.XYZ

ToEulerAnglesXYZ

返す約似した角度は、CFrame を使用して生成できる Enum.RotationOrder.XYZ

ToEulerAnglesYXZ

返す約似した角度は、CFrame を使用して生成できる Enum.RotationOrder.YXZ

ToOrientation

ToAxisAngle

と の回転を表す数を含むトゥプルを返し、軸-角表現で の回転を表す数を返します。

戻り値

components

戻り値

FuzzyEq

返す true は、他の CFrame がこの CFrame に位置と回転の両方で十分に近い場合。epsilon 値は、この類似性の許容度を制御するために使用されます;この値はオプションであり、提供された場合は小さな正の値であるべきです。位置の似似性は、コンポーネントごとであり、回転は角差の速い推定を使用します。

パラメータ

other: CFrame
epsilon: number
既定値: 0.00001 (1e-5)

戻り値

演算機能


2つの CFrames の構成を表す新しい CFrame を生成します。


オブジェクトから世界座標へ変換された Vector3 を生成します。


CFrame によって世界スペースで翻訳された Vector3 を生成します。


世界空間に翻訳された CFrame をネガティブ Vector3 によって生成します。