CFrame

Visualizza obsoleti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Il tipo di dati CFrame , breve per quadro di coordinamento 3D , descrive una posizione e un'orientazione 3D.Si compone di un componente posizionale e di un componente rotante e include operazioni aritmetiche essenziali per lavorare con dati 3D su Roblox.


-- Crea un CFrame a una certa posizione e rotazione di Euler
local cf = CFrame.new(0, 5, 0) * CFrame.fromEulerAngles(math.rad(45), 0, 0)

Per un'introduzione al tipo di dati CFrame , vedi CFrames .

Componente posizionale

La componente posizionale è disponibile come Vector3 .Inoltre, le posizioni dei componenti di un oggetto CFrame sono disponibili anche nelle proprietà X , Y e Z come un Vector3 .

Componente rotazionale

memorizza i dati di rotazione 3D in una matrice di rotazione 3×3 .Questi valori vengono restituiti dalla funzione CFrame:GetComponents() dopo i valori posizionali x , y e z.Questa matrice viene utilizzata internamente quando si effettuano calcoli che coinvolgono rotazioni, usando radiani come loro unità (per la conversione da una all'altra, usa math.rad() o math.deg() ).Per maggiori informazioni su come il motore Roblox esegue le rotazioni, vedi Enum.RotationOrder .

La tabella seguente rappresenta la matrice di rotazione di un oggetto CFrame e la loro relazione con le proprietà vector disponibili come LookVector e RightVector.Sebbene le singole componenti della matrice di rotazione raramente siano utili da sole, le proprietà vectoriali che ne derivano sono molto più utili.


<th>YVector, UpVector</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>
XVector, RightVector
A differenza degli altri, LookVector rappresenta i componenti della colonna negata.Il LookVector è utile perché molti Instances come il Camera e Attachments trattano quel vector come la direzione in cui l'istanza punta.

Sommario

Costruttori

Proprietà

Metodi

Operazioni Matematiche

Costruttori

new

Crea un'identità vuota CFrame .

new

Restituisce un CFrame senza rotazione con la posizione del fornito Vector3 .

Parametri

pos: Vector3

new

Restituisce un nuovo CFrame situato a pos e rivolto verso lookAt , supponendo che (0, 1, 0) sia considerato "in alto" nello spazio del mondo.

Questo sovraccarico del costruttore è stato sostituito da CFrame.lookAt(), che realizza uno scopo simile. Rimane a fin di salvaguardia della compatibilità retrospettiva.

A angoli di alta pendenza (circa 82 gradi), potresti sperimentare instabilità numerica.Se questo è un problema, o se richiedi un diverso vector "up", usa CFrame.fromMatrix() per costruire più accuratamente il CFrame.Inoltre, se lookAt è direttamente sopra pos (angolo di inclinazione di 90 gradi), il veicolo "up" passa all'asse X.

Parametri

pos: Vector3
lookAt: Vector3

new

Restituisce un CFrame con una posizione composta dai componenti x , y e z forniti.

Parametri

new

Restituisce un CFrame dalla posizione ( x , y , z ) e un quaternione ( qX , qY , qZ , qW ).Si prevede che il quarterno sia di lunghezza unitaria per rappresentare una rotazione valida.Se questo non è il caso, il quaternione verrà normalizzato.

Parametri

new

Crea un CFrame da posizione ( x , y , z ) con un orientamento specificato dalla matrice di rotazione.

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

Parametri

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

lookAt

Restituisce un nuovo CFrame con la posizione di at e rivolto verso lookAt , opzionalmente specificando la direzione verso l'alto ( up ) con un predefinito di (0, 1, 0) .

Parametri

lookAt: Vector3
Valore predefinito: Vector3.yAxis

lookAlong

Restituisce un nuovo CFrame con la posizione di at e affacciandosi lungo direction , opzionalmente specificando la direzione verso l'alto ( up ) con un predefinito di (0, 1, 0) .

Questo costruttore è equivalente a CFrame.lookAt(at, at + direction) .

Parametri

direction: Vector3
Valore predefinito: Vector3.yAxis

fromRotationBetweenVectors

Restituisce un CFrame che rappresenta l'orientamento necessario per ruotare dal primo Vector3 al secondo, con la posizione impostata a zero.

Parametri

from: Vector3

Vettore che rappresenta la direzione "da".

Vettore che rappresenta la direzione "to".

fromEulerAngles

Restituisce un rotto CFrame da angoli rx , ry e rz in radianti.Le rotazioni vengono applicate nell'opzionale Enum.RotationOrder con un predefinito di XYZ , equivalente a:


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

Parametri

rx: number
ry: number
rz: number
Valore predefinito: Enum.RotationOrder.XYZ

fromEulerAnglesXYZ

Restituisce un rotto CFrame da angoli rx , ry e rz in gradi usando Enum.RotationOrder.XYZ , equivalente a:


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

Parametri

rx: number
ry: number
rz: number

fromEulerAnglesYXZ

Restituisce un rotto CFrame da angoli rx , ry e rz in gradi usando Enum.RotationOrder.YXZ , equivalente a:


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

Parametri

rx: number
ry: number
rz: number

Angles

Equivalente a fromEulerAnglesXYZ() .

Parametri

rx: number
ry: number
rz: number

fromOrientation

Equivalente a fromEulerAnglesYXZ() .

Parametri

rx: number
ry: number
rz: number

fromAxisAngle

Restituisce una rotazione di CFrame da un'unità Vector3 e una rotazione in gradi.

Parametri

fromMatrix

Restituisce un CFrame da una traduzione e le colonne di una matrice di rotazione.Se vZ è escluso, la terza colonna viene calcolata come vX:Cross(vY).Unit .

Parametri

pos: Vector3

La posizione 3D del CFrame .

Equivalente a RightVector .

Equivalente a UpVector .

Equivalente a - LookVector .

Proprietà

identity

Un'identità CFrame senza traduzione o rotazione.Questa proprietà è una costante e deve essere accessibile globalmente rispetto a attraverso un singolo oggetto CFrame.

Position

La posizione 3D del CFrame .

Rotation

Una copia del CFrame senza traduzione.

La coordinata X della posizione.

La coordinata Y della posizione.

La coordinata Z della posizione.

LookVector

La componente di direzione in avanti dell'orientamento dell'oggetto CFrame , equivalente alla negata ZVector o alla terza colonna negata della matrice di rotazione.


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)

Aggiungere un oggetto CFrame di LookVector a se stesso produce un oggetto CFrame spostato in avanti in qualsiasi direzione a cui è rivolto di 1 unità.

RightVector

La componente di orientamento a destra dell'oggetto CFrame dell'orientamento. Equivalente a XVector o alla prima colonna della matrice di rotazione.


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

La componente direzione up dell'orientamento dell'oggetto CFrame . Equivalente a YVector o alla seconda colonna della matrice di rotazione.


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

La componente X dell'orientamento dell'oggetto CFrame . Equivalente a RightVector o alla prima colonna della matrice di rotazione.


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

La componente Y dell'orientamento dell'oggetto CFrame . Equivalente a UpVector o alla seconda colonna della matrice di rotazione.


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

La componente Z dell'orientamento dell'oggetto CFrame . Equivalente al negato LookVector o alla terza colonna della matrice di rotazione.


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)

Metodi

Inverse

Restituisce l'inverso del CFrame .

Restituzioni

Lerp

Restituisce un CFrame interpolato tra sé e goal da parte della frazione alpha .

Parametri

goal: CFrame
alpha: number

Restituzioni

Orthonormalize

Restituisce una copia ortonormalizzata del CFrame .La proprietà BasePart.CFrame applica automaticamente l'ortonormalizzazione, ma le altre API che prendono CFrames non lo fanno, quindi questo metodo è necessario occasionalmente quando si aggiorna incrementalmente un CFrame e lo si utilizza con loro.

Restituzioni

ToWorldSpace

Riceve uno o più oggetti CFrame e li restituisce trasformati dall'oggetto allo spazio del mondo. Equivalente a:

CFrame * cf

Parametri

Restituzioni

ToObjectSpace

Riceve uno o più oggetti CFrame e li restituisce trasformati dallo spazio mondiale allo spazio oggetto. Equivalente a:

CFrame:Inverse() * cf

Parametri

Restituzioni

PointToWorldSpace

Riceve uno o più oggetti Vector3 e li restituisce trasformati dall'oggetto allo spazio del mondo. Equivalente a:

CFrame * v3

Parametri

Restituzioni

PointToObjectSpace

Riceve uno o più oggetti Vector3 e li restituisce trasformati dallo spazio mondiale allo spazio oggetto. Equivalente a:

CFrame:Inverse() * v3

Parametri

Restituzioni

VectorToWorldSpace

Riceve uno o più oggetti Vector3 e li restituisce ruotati dall'oggetto allo spazio mondiale. Equivalente a:

(CFrame - CFrame.Position) * v3

Parametri

Restituzioni

VectorToObjectSpace

Riceve uno o più oggetti Vector3 e li restituisce ruotati dallo spazio del mondo allo spazio dell'oggetto. Equivalente a:

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

Parametri

Restituzioni

GetComponents

Restituisce i valori x , y , z , R00 , R01 , R02 , R10 , R11 , R12 , R20 , R21 , e R22 , dove x``y``z rappresenta la posizione della matrice di rotazione CFrame e R00 - R22 rappresenta la sua matrice di rotazione 3×3.

Restituzioni

ToEulerAngles

Restituisce angoli approssimativi che potrebbero essere utilizzati per generare il CFrame utilizzando l'opzionale Enum.RotationOrder.Se non fornisci order, il metodo utilizza Enum.RotationOrder.XYZ.

Parametri

Valore predefinito: Enum.RotationOrder.XYZ

Restituzioni

ToEulerAnglesXYZ

Restituisce angoli approssimativi che potrebbero essere utilizzati per generare il CFrame utilizzando Enum.RotationOrder.XYZ .

Restituzioni

ToEulerAnglesYXZ

Restituisce angoli approssimativi che potrebbero essere utilizzati per generare il CFrame utilizzando Enum.RotationOrder.YXZ .

Restituzioni

ToOrientation

Restituzioni

ToAxisAngle

Restituisce una tuple di un Vector3 e un numero che rappresenta la rotazione del CFrame nell'espressione dell'angolo dell'asse.

Restituzioni

components

Equivalente a CFrame:GetComponents() .

Restituzioni

FuzzyEq

Restituisce true se l'altro CFrame è sufficientemente vicino a questo CFrame in posizione e rotazione.Il valore epsilon viene utilizzato per controllare la tolleranza per questa somiglianza; questo valore è opzionale e dovrebbe essere un piccolo valore positivo se fornito.La somiglianza per la posizione è component-wise mentre la rotazione utilizza un'approssimazione rapida della differenza di angolo.

Parametri

other: CFrame
epsilon: number
Valore predefinito: 0.00001 (1e-5)

Restituzioni

AngleBetween

Restituisce l'angolo, in radiani, tra l'orientamento di uno CFrame e un altro.Questa funzione non tiene conto della posizione di CFrame e guarda solo all'orientamento relativo.

Parametri

other: CFrame

Restituzioni

Operazioni Matematiche


Produce un nuovo CFrame che rappresenta la composizione dei due CFrames .


Produce un Vector3 trasformato da oggetto a coordinate mondiali.


Produce un CFrame tradotto nello spazio mondiale dal Vector3 .


Produce un CFrame tradotto nello spazio del mondo dal negativo Vector3 .