CFrame
*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 Eulerlocal 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 |
---|
Sommario
Costruttori
- new()
Restituisce un'identità vuota CFrame .
Restituisce un CFrame senza rotazione con la posizione del fornito Vector3 .
Restituisce un CFrame con la posizione del primo Vector3 e un orientamento puntato verso il secondo.
Restituisce un CFrame con una posizione composta dai componenti x , y e z forniti.
Restituisce un CFrame dalla posizione ( x , y , z ) e un quaternione ( qX , qY , qZ , qW ).
Restituisce un CFrame da posizione ( x , y , z ) con un orientamento specificato dalla matrice di rotazione.
Restituisce un CFrame con la posizione del primo Vector3 e un orientamento puntato verso il secondo.
Restituisce un CFrame con la posizione del primo Vector3 e un orientamento diretto lungo il secondo.
- fromRotationBetweenVectors(from : Vector3,to : Vector3)
Restituisce un CFrame che rappresenta l'orientamento necessario per ruotare dal primo Vector3 al secondo, con la posizione impostata a zero.
- fromEulerAngles(rx : number,ry : number,rz : number,order : Enum.RotationOrder)
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 .
- fromEulerAnglesXYZ(rx : number,ry : number,rz : number)
Restituisce un rotto CFrame da angoli rx , ry e rz in gradi usando Enum.RotationOrder.XYZ .
- fromEulerAnglesYXZ(rx : number,ry : number,rz : number)
Restituisce un rotto CFrame da angoli rx , ry e rz in gradi usando Enum.RotationOrder.YXZ .
Equivalente a fromEulerAnglesXYZ() .
- fromOrientation(rx : number,ry : number,rz : number)
Equivalente a fromEulerAnglesYXZ() .
- fromAxisAngle(v : Vector3,r : number)
Restituisce una rotazione di CFrame da un'unità Vector3 e una rotazione in gradi.
- fromMatrix(pos : Vector3,vX : Vector3,vY : Vector3,vZ : Vector3)
Restituisce un CFrame da una traduzione e le colonne di una matrice di rotazione.
Proprietà
Un'identità CFrame senza traduzione o rotazione.
La posizione 3D del CFrame .
Una copia del CFrame senza traduzione.
La coordinata X della posizione.
La coordinata Y della posizione.
La coordinata Z della posizione.
La componente di orientamento in direzione avanti dell'oggetto CFrame , equivalente alla forma negata di ZVector .
La componente direzione destra dell'orientamento dell'oggetto CFrame .
La componente di direzione up dell'orientamento dell'oggetto CFrame .
Equivalente a RightVector .
Equivalente a UpVector .
La componente Z dell'orientamento dell'oggetto CFrame . Equivalente alla terza colonna della matrice di rotazione.
Metodi
Restituisce l'inverso del CFrame .
Restituisce un CFrame interpolato tra sé e goal da parte della frazione alpha .
Restituisce una copia ortonormalizzata del CFrame .
Riceve uno o più oggetti CFrame e li restituisce trasformati dall'oggetto allo spazio del mondo.
Riceve uno o più oggetti CFrame e li restituisce trasformati dallo spazio del mondo allo spazio dell'oggetto.
Riceve uno o più oggetti Vector3 e li restituisce trasformati dall'oggetto allo spazio del mondo.
Riceve uno o più oggetti Vector3 e li restituisce trasformati dallo spazio del mondo allo spazio dell'oggetto.
Riceve uno o più oggetti Vector3 e li restituisce ruotati dall'oggetto allo spazio mondiale.
Riceve uno o più oggetti Vector3 e li restituisce ruotati dal mondo allo spazio oggetti.
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.
Restituisce angoli approssimativi che potrebbero essere utilizzati per generare il CFrame utilizzando l'opzionale Enum.RotationOrder.
Restituisce angoli approssimativi che potrebbero essere utilizzati per generare il CFrame utilizzando Enum.RotationOrder.XYZ .
Restituisce angoli approssimativi che potrebbero essere utilizzati per generare il CFrame utilizzando Enum.RotationOrder.YXZ .
Equivalente a CFrame:ToEulerAnglesYXZ() .
Restituisce una tuple di un Vector3 e un numero che rappresenta la rotazione del CFrame nell'espressione dell'angolo dell'asse.
Equivalente a CFrame:GetComponents() .
Restituisce true se l'altro CFrame è sufficientemente vicino a questo CFrame in posizione e rotazione.
Restituisce l'angolo, in radiani, tra l'orientamento di uno CFrame e un altro.
Operazioni Matematiche
Costruttori
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.
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.
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) .
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) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
Parametri
fromEulerAnglesXYZ
Restituisce un rotto CFrame da angoli rx , ry e rz in gradi usando Enum.RotationOrder.XYZ , equivalente a:
CFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(0, 0, rz) -- Z
fromEulerAnglesYXZ
Restituisce un rotto CFrame da angoli rx , ry e rz in gradi usando Enum.RotationOrder.YXZ , equivalente a:
CFrame.fromEulerAngles(0, ry, 0) * -- YCFrame.fromEulerAngles(rx, 0, 0) * -- XCFrame.fromEulerAngles(0, 0, rz) -- Z
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
Equivalente a RightVector .
Equivalente a - LookVector .
Proprietà
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
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
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
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.