溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

U3D局部坐標(biāo)和全局坐標(biāo)的示例分析

發(fā)布時間:2021-12-28 11:26:25 來源:億速云 閱讀:128 作者:小新 欄目:開發(fā)技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)U3D局部坐標(biāo)和全局坐標(biāo)的示例分析,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

父子化(摘自官文原文說明)

父子化 (Parenting) 是使用 Unity 時需要理解的最重要的概念之一。當(dāng)某個游戲?qū)ο?(GameObject) 是另一個游戲?qū)ο?(GameObject) 的父級 (Parent) 時,子級 (Child) 游戲?qū)ο?(GameObject) 會像其父級 (Parent) 一樣移動、旋轉(zhuǎn)和縮放。正如您的手臂與軀干相連,轉(zhuǎn)動軀干時,手臂因?yàn)榕c其相連也會移動。任何對象都可以有多個子級,但卻只能有一個父級。

您可以通過將層級視圖 (Hierarchy View) 的任何游戲?qū)ο?(GameObject) 拖到另一個游戲?qū)ο笊蟻韯?chuàng)建一個父級 (Parent)。此操作會在兩個游戲?qū)ο?(GameObject) 之間創(chuàng)建一種父子關(guān)系。

U3D局部坐標(biāo)和全局坐標(biāo)的示例分析
父子層級視圖 (hierarchy) 示例。名稱左側(cè)有折疊箭頭的游戲?qū)ο?(GameObjects) 是父級。

上述示例中,我們認(rèn)為軀干是手臂的父級而手臂是手的父級。您在 Unity 中制作的場景將包含這些變換層級 (Transform hierarchy)的集合。最上層的父級對象被稱為根對象 (Root object)。當(dāng)您移動、縮放或旋轉(zhuǎn)某個父級對象時,其變換 (Transform) 中的所有變化都會被應(yīng)用于其子級對象。

值得指出的是任何子級游戲?qū)ο?(Child GameObject) 的檢視器 (Inspector) 中的變換 (Transform) 值都會相對于父級 (Parent) 的變換 (Transform) 值而顯示。這些值又被稱局部坐標(biāo) (Local Coordinate) 。您可以通過腳本處理訪問全局坐標(biāo) (Global Coordinate) 和局部坐標(biāo) (local coordinate)。

例如:

U3D局部坐標(biāo)和全局坐標(biāo)的示例分析

此時Cube1坐標(biāo)視為全局部坐標(biāo)或世界坐標(biāo)

gameObject.transform.position=new Vector(2,2,0);就可以實(shí)現(xiàn)

也可以使用

Vector3 thePosition = transform.TransformPoint(newVector3(2,2,0));

gameObject.transform.position = thePosition;

Transform.TransformPoint 變換位置:變換位置從自身坐標(biāo)到世界坐標(biāo)(原文:Transforms position from local space to world space.)

現(xiàn)在給Cube1加個子對象Cube2并使Cube2移動到如圖位置

U3D局部坐標(biāo)和全局坐標(biāo)的示例分析

使用gameObject.transform.position=new Vector(2,2,0);將無法如愿;

問題解析:根據(jù)紅色字內(nèi)容說明,此時Cube2中的檢視器 (Inspector) 的坐標(biāo)顯示的是相對父級Cube1的坐標(biāo),所以只能先把自身坐標(biāo)使用transform.TransformPoint方法轉(zhuǎn)為世界坐標(biāo)

Vector3 thePosition = transform.TransformPoint(newVector3(2,2.5,0));

gameObject.transform.position = thePosition;

坐標(biāo)系的轉(zhuǎn)換:

TransformDirection 將一個方向從局部坐標(biāo)系轉(zhuǎn)換到世界坐標(biāo)系

InverseTransformDirection 將一個方向從世界坐標(biāo)系轉(zhuǎn)換到局部坐標(biāo)系

TransformPoint 將一個點(diǎn)從局部坐標(biāo)系轉(zhuǎn)換到世界坐標(biāo)系

InverseTransformPoint 將一個點(diǎn)從世界坐標(biāo)系轉(zhuǎn)換到局部坐標(biāo)系

關(guān)于“U3D局部坐標(biāo)和全局坐標(biāo)的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

u3d
AI