UnityAPI的學習——Transform類

Transform類繼承自Component類,并實現了IEnumberable接口。Transform是GameObject必須擁有得一個組件,用來管理所在GameObject對象的坐標位置、選擇角度、和大小縮放。
Transform實現了IEnumberable接口,因此可以在程序中使用foreach()方法快速遍歷子物體的Transform結構。

Transfrom類實例屬性

在Transform類中,涉及的實例屬性有 eulerAngles 、forwardr 、hasChanged、localPosition、localToWorldMatrix 、parent 和 worldToLocalMatrix屬性

eulerAngles屬性:歐拉角

基本語法

public Vector3 eulerAngles{ get; set; }

功能說明 :此屬性用于返回或設置GameObject對象的歐拉角
1、在Unity引擎中使用四元數Quaternion來存儲和表示GameObject的旋轉角度,無論是在Inspector面板中對Rotation設置了數值,還是在腳本中對transform.eulerAngles賦予了數值,程序在編譯運行時都會把它們轉換成Quaternion類型再計算。
2、只能對transform.eulerAngles進行整體賦值,如transform.eulerAngles=new Vector(1.0f,2.0f,3.0f),不可以對transform.eulerAngles的單獨分量進行賦值。
3、transform.eulerAngles.x返回值的范圍為[0,90]和[270,360);transform.eulerAngles.y和transform.eulerAngles.z返回值的范圍為[0,360)。
4、對transform.eulerAngles進行賦值或獲取transform.eulerAngles的值都是相對世界坐標系而言的,若要相對transform的父物體(如果有的話)進行角度的變換則需要使用屬性localEulerAngles來設置
5、設在腳本中有代碼:transform.eulerAngles=new Vector3(10.0f, 20.0f ,30.0f),則GameObject對象會先沿著z軸旋轉30度,再沿著x軸旋轉10度,最后再沿著y軸旋轉20度。(不同的旋轉執行順序,物體的最終狀態是不同的)

forward屬性:z軸單位向量

基本語法

public Vector3 forward{get ; set;}

功能說明:此屬性用于返回或設置transform自身坐標系中z軸方向的單位向量對應的世界坐標系中的單位向量。transform.forward即為transform.TransformDirection(new Vector3(0.0f , 0.0f ,1.0f))的簡化方式。

hasChanged屬性:transform組件是否被修改

基本語法

public bool hasChanged{ get; set;}

功能說明
此屬性用于判斷GameObject對象從上次將此屬性設為false以來,其transform組件的屬性是否被修改過。
注意:即使transform某個屬性修改后的值與修改前的值相同,hasChanged的返回值仍然為true

localPosition屬性:局部坐標系位置

基本語法

public Vector3 localPosition{ get; set;  }

功能說明
此屬性用于設置或返回GameObject對象在局部坐標系中的位置,若無父級對象則和屬性Transform.position返回值相同。
transform.loaclPosition的值受父級對象屬性影響,當transform.localPosition的值增加1時,transform.position值的贈量不一定是1,而是在相對父級坐標系中增加父級對象的值。

localToWorldMatrix屬性:轉換矩陣

基本語法

public Matrix4x4 localToWorldMatrix{ get;	}

功能說明
此屬性用于返回從transform局部坐標系向世界坐標系轉換的Matrix4x4矩陣

parent屬性:父物體Transform實例

基本語法

public Transform parent{get;set;}

功能說明
此屬性用于返回父物體的Transform實例。
transform.parent只能返回父一級對象的Transform,若要返回父物體的父物體,可以使用transform.parent.parent,更多級父物體以此類推。
若父物體不存在,則返回null。
若想返回transform的最頂層的父物體,可以使用transform.rooot屬性

worldToLocalMatrix屬性:轉換矩陣

基本語法

public Matrix4x4 worldToLocalMatrix{ get; }

功能說明
此屬性用于返回物體從世界坐標系向transform自身坐標系轉換的Matrix4x4矩陣

Transform類實例方法

DetachChildren方法:分離物體層級關系

基本語法

public void DetachChildren();

功能說明
此方法的功能是使GameObject對象的所有子物體和自身分離層級關系,當子物體的行為不再依賴父物體時可以用此方法使父子關系分離。
若子物體仍有子物體,分離后的子物體將保留子物體的子物體的層級關系

GetChild方法:獲取GameObject對象子類

基本語法

public Transform GetChild(int index);

功能說明
此方法用于返回transform的索引值為index的子類Transform實例。
參數index的值要小于transform的childCount值

InverseTransformDirection方法:坐標系轉換

基本語法

1public Vector3 InverseTransformDirection(Vector3 direction);
其中參數direction為待轉換的向量
2public Vector3 InverseTransformDirection(float x,float y,float z);

功能說明:
此方法用于將參數direction從世界坐標系轉換到GameObject對象的局部坐標系。

InverseTransformPoint方法:點的相對坐標向量

基本語法

1public Vector3 InverseTransformPoint(Vector3 position);
2public Vector3 InverseTransformPoint(float x, float y, float z);

功能說明
此方法用于返回參數position向量相對于GameObject對象局部坐標系的差向量,即返回向量position和向量transform.position的差值。

IsChildOf方法:是否為子物體

基本語法

public bool IsChildOf(Transform parent);
其中參數parent為父物體的Transform實例

功能說明
此方法用于判斷transform對應的GameObject對象是否為參數parent的子物體

LookAt方法:物體朝向

基本語法

1public void LookAt(Transform target);
2public void LookAt(Vector3 worldPosition);
3public void LookAt(Transform target,Vector3 worldUp);
4public void LookAt(Vector3 worldPosition , Vector3 worldUp);
其中參數target為transform自身坐標系中z軸指向的目標,參數worldUp為transform自身坐標系中y軸最大限度指向的方向

功能說明
此方法的功能是使得GameObject對象自身坐標系中的z軸指向target,y軸方向最大限度地指向worldUp方向。

Rotate方法:繞坐標軸旋轉

基本語法

1public void Rotate(Vector3 eulerAngles);
2public void Rotate(Vector3 eulerAngles , Space relativeTo);
3public void Rotate(float xAngle , float yAngle ,float zAngle);
4public void Rotate(flaot xAngle , float yAngle ,float zAngle ,Space relativeTo);
其中參數eulerAngles為transform要旋轉的歐拉角,參數relativeTo為transform旋轉時參考的坐標系,默認為Space.Self。

功能說明
此方法的功能是使得transform實例在相對參數relativeTo的坐標系中旋轉歐拉角eulerAngles。

Rotate方法:繞某個向量旋轉

基本語法

1public void Rotate(Vector3 axis ,float angle);
2public void Rotate(Vector3 axis ,float angle ,Space relativeTo);
其中參數axis為旋轉軸方向,參數angle為旋轉角度,參數relativeTo為參考坐標系,默認為Space.self。

功能說明
此方法的功能是使得GameObject對象在relativeTo坐標系中繞軸向量axis旋轉angle度。

RotateAround方法:繞軸點旋轉

基本語法

1public void RotateAround(Vector3 axis ,float angle);
2public void RotateAround(Vector3 point,Vector3 axis ,float angle);
其中參數point為參考點坐標,參數axis為旋轉軸方向,參數angle為旋轉角度

功能說明
此方法的功能是使得GameObject對象繞著point點的axis方向旋轉angle度

TransformDirection方法:坐標系轉換

基本語法

1public Vector3 TransformDirection(Vector3 direction);
其中參數direction為待轉換的Vector3實例向量。
2public Vector3 TransformDirection(float x ,float y ,float z);

功能說明
此方法用于將向量direction從transform局部坐標系轉換到世界坐標系

TransformPoint方法:點的世界坐標位置

基本語法

1public Vector3 TransformPoint(Vector3 position);
其中參數position為transform局部坐標系的向量
2public Vector3 TransformPoint(float x,float y,float z);

功能說明
此方法用于返回GameObject對象局部坐標系中向量position在世界坐標系中的位置

Translate方法:相對坐標系移動

基本語法

1public void Translate(Vector3 translation);
2public void Translate(Vector3 translation ,Space relativeTo);
3public void Translate(float x ,float y , float z);
4public void Translate(float x ,float y , float z , Space relativeTo);
其中參數transform為移動向量,包括方向和大小,參數relativeTo為參考坐標系空間,默認為Space.Self

功能說明
此方法的功能是使得GameObject對象在參數relativeTo的坐標系空間中移動參數transform指定的向量

Translate方法:相對其他物體移動

基本語法

1public void Translate(Vector3 translation , Transform relativeTo);
2public void Translate(float x ,float y,float z, Transform relativeTo);
其中參數translation為移動向量,包括方向和大小,參數relativeTo為移動參考物體,默認為Space.World。

功能說明
此方法的功能是使得GameObject對象在相對relativeTo的坐標系中移動向量translation。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716413.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

echarts vue 動畫效果的水球圖、波浪圖教程

1、安裝插件 前提是已經安裝了echarts(我的版本是4.2.1) npm install echarts-liquidfill --save 我安裝了3.1.0版本的,結果運行時報錯"TypeError: wave.ensureState is not a function" 原因:echarts版本和echarts-l…

miniconda3徹底刪除虛擬環境

退出虛擬環境:確保您不在要刪除的虛擬環境中。如果在,使用命令 conda deactivate 來退出當前激活的虛擬環境。查看虛擬環境列表:運行命令 conda env list 或 conda info -e 來查看所有存在的虛擬環境及其路徑。刪除虛擬環境:使用命…

在VMware中安裝CentOS 7并配置Docker

VMware安裝CentOS 7 一、介紹 該文章介紹如何使用啟動U盤在虛擬機里面安裝系統,虛擬機版本為VMware Workstation 16 pro,Linux版本為CentOS Linux release 7.9.2009 (Core)。 二、安裝 1、創建虛擬機 點擊創建新的虛擬機 選擇典型就可以了&#xf…

前綴和算法題(區間次方和、小藍平衡和、大石頭的搬運工、最大數組和)

一、前綴和的原理和特點 prefix表示前綴和,前綴和由一個用戶輸入的數組生成。對于一個數組a[](下標從1開始),我們定義一個前綴和數組prefix[],滿足: prefix有一個重要的特性,可以用于快速生成p…

WordPress建站入門教程:如何安裝本地WordPress網站運行環境?

有些站長想要搭建WordPress網站,又擔心自己玩不轉,白白浪費購買域名和主機空間的費用。像這種情況,最好的做法就是在自己電腦上安裝一個WordPress網站運行環境,然后在本地電腦搭建WordPress,等熟悉掌握后再考慮購買域名…

設計模式學習筆記——抽象工廠模式

設計模式(創建型)—— 抽象工廠模式 在工廠模式中,我們為每一個類都設計了一個工廠,以此來獲取該類的對象,但缺點就是一旦類多了,工廠就多了,這時候我們可以考慮這些類間是否有關聯&#xff0c…

多輸入多輸出 | MATLAB實現GWO-Elman灰狼優化循環神經網絡多輸入多輸出預測

多輸入多輸出 | MATLAB實現GWO-Elman灰狼優化循環神經網絡多輸入多輸出預測 目錄 多輸入多輸出 | MATLAB實現GWO-Elman灰狼優化循環神經網絡多輸入多輸出預測預測效果基本介紹程序設計往期精彩參考資料 預測效果 基本介紹 Matlab實現GWO-Elman灰狼優化循環神經網絡多輸入多輸出…

kernel bypass 是什么?

文章目錄 一、kernel bypass 是什么二、Kernel Bypass技術優缺點三、Kernel Bypass技術應用領域四、Kernel Bypass的實現方式 一、kernel bypass 是什么 Kernel Bypass是一種技術,旨在通過繞過操作系統核來提高網絡數據包處理的性能和降低延遲。它的主要優點是高性能…

[LeetBook]【學習日記】有序鏈表合并

21. 合并兩個有序鏈表 將兩個升序鏈表合并為一個新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。 示例 1: 輸入:l1 [1,2,4], l2 [1,3,4] 輸出:[1,1,2,3,4,4] 示例 2: 輸入:l1 [], l2 [] …

如何在電腦上中恢復已刪除的視頻

您可以在電腦中恢復已刪除的視頻,無需任何繁瑣的工作。您所需要做的就是閱讀本文,了解恢復已刪除視頻的最佳方法。 一次錯誤的點擊可能會奪走您以視頻形式存儲的寶貴記憶。嗯,有些視頻不適合刪除,您希望永遠保留它們。失去這些寶…

如何使用Docker搭建StackEdit編輯器并結合內網穿透實現遠程辦公

文章目錄 前言1. ubuntu安裝VNC2. 設置vnc開機啟動3. windows 安裝VNC viewer連接工具4. 內網穿透4.1 安裝cpolar【支持使用一鍵腳本命令安裝】4.2 創建隧道映射4.3 測試公網遠程訪問 5. 配置固定TCP地址5.1 保留一個固定的公網TCP端口地址5.2 配置固定公網TCP端口地址5.3 測試…

優選算法|【雙指針】|1089.復寫零

目錄 題目描述 題目解析 算法原理講解 代碼 題目描述 1089. 復寫零 給你一個長度固定的整數數組 arr ,請你將該數組中出現的每個零都復寫一遍,并將其余的元素向右平移。 注意:請不要在超過該數組長度的位置寫入元素。請對輸入的數組 就…

LeetCode受限條件下可到達節點的數目

題目描述 現有一棵由 n 個節點組成的無向樹,節點編號從 0 到 n - 1 ,共有 n - 1 條邊。 給你一個二維整數數組 edges ,長度為 n - 1 ,其中 edges[i] [ai, bi] 表示樹中節點 ai 和 bi 之間存在一條邊。另給你一個整數數組 restr…

OJ:移除鏈表元素

203. 移除鏈表元素 - 力扣(LeetCode) 思路:這個題可以直接在原鏈表上進行修改,但是修改鏈表的指向是有點麻煩的,所以我們給兩個指針,phead和ptail,這是新鏈表的兩個指針,再給一個指針pcur來遍歷…

Java和JavaScript區別

1. Java和javaScript都是面向對象語言 2. 他兩除了名字相似之外沒有任何關系 3. Java是一種真正的面向對象語言,不管開發什么程序都要設計對象;而JavaScript是種腳本語言,主要實現前端頁面的交互,比如驗證表單,彈窗提…

Sqli-labs靶場第12關詳解[Sqli-labs-less-12]

Sqli-labs-Less-12 #手工注入 post傳參了 根據題目看,像一個登錄頁面,嘗試使用布爾型盲注測試能否登錄網站 1. Username輸入a a" 測試是否會有報錯,burp抓包 報錯:syntax to use near "a"") and passw…

消息中間件之RocketMQ源碼分析(二十七)

Broker提交或回滾事務消息 當生產者本地事務處理完成并且Broker回查事務消息后,不管執行Commit還是Rollback,都會根據用戶本地事務的執行結果發送一個End_transaction的RPC請求給Broker,Broker端處理該請求的類是EndTransactionProcessor 第一步&…

volatile 關鍵字 (一)

volatile 關鍵字 (一) 文章目錄 volatile 關鍵字 (一)如何保證變量的可見性?如何禁止指令重排序? 文章來自Java Guide 用于學習如有侵權,立即刪除 如何保證變量的可見性? 在 Java 中…

【Linux安裝軟件命令及vim、gcc使用說明】

安裝軟件命令 Linux安裝軟件的命令首先要進入管理員權限 首先在終端輸入sudo su切換到管理員界面 輸入對應的密碼,注意這里的密碼不會顯示出來,輸完密碼之后回車即可。當出現root就代表已經是管理員界面了。 如果相應退出管理員界面輸入exit即可。 注…

django-paramiko遠程服務器和文件管理(五)

一、paramiko簡介 1.paramiko是一個基于SSHv2協議的純Python庫。需要單獨安裝。 2.它提供了客戶端和服務器的功能。 3.可以實現SSH2遠程安全連接,支持用戶名、密碼連接,也支持密鑰連接 4.一般用于執行遠程命令、傳輸文件、中間SSH代理等 安裝 pip3 in…