Unity遊戲開發——3D坐標轉換UGUI坐標

2021-01-12 Unity3D遊戲開發精華教程乾貨


0.前言

實際開發中,我們經常會遇到需要3D與2D坐標轉換的問題,比如血條同步跟隨人物移動、傷害數字在人物頭上出現、從2D背包中拖動一個UI到3D物體上等情況,這些其實本質上都是3D坐標與UI坐標轉換的問題。

1.核心思想

3D坐標轉成UI坐標其實就是先轉成屏幕坐標,再由屏幕坐標轉換成UI坐標。

所以坐標轉換分為三個部分

其中Unity的屏幕坐標系規定,左下角是原點,X軸向右是正方向,Y軸向上是正方向。

作為額外補充的一個知識點,GUI的坐標系規定左上角是原點,X軸向右為正方向,Y軸向下為正方向,跟屏幕坐標是不一樣的,但是此篇我們用不到這個知識點。

這裡UI坐標指的是UGUI的坐標,所以我們在計算的時候就需要用的Canvas相關的參數

2.代碼示例

在此以血條跟隨人物移動為需求,完成坐標轉換的核心代碼

using UnityEngine;
public class HPFollow : MonoBehaviour{ public Transform heroHeadTrans; public Camera mainCamera;
public RectTransform hpTrans;
public RectTransform canvasTrans;
void Update() { Vector2 screenPoint = RectTransformUtility.WorldToScreenPoint(mainCamera, heroHeadTrans.position);
Vector2 localPoint;
if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasTrans, screenPoint, mainCamera, out localPoint)) { hpTrans.anchoredPosition = localPoint; } }}



別忘了修改Canvas的RenderMode

血條跟隨人物移動效果如下

聲明:發布此文是出於傳遞更多知識以供交流學習之目的。若有來源標註錯誤或侵犯了您的合法權益,請作者持權屬證明與我們聯繫,我們將及時更正、刪除,謝謝。

作者:StarryFun


來源:https://zhuanlan.zhihu.com/p/82921419

More:【微信公眾號】 u3dnotes


相關焦點

  • Unity 3d遊戲開發難嗎?怎麼學好,跟著做就可以!
    Unity 3d遊戲開發難嗎?怎麼學好?入門到精通,跟著siki學院視頻做就可以了!Unity 一個讓玩家輕鬆創建:諸如農藥、吃雞熱門遊戲的綜合型遊戲開發工具。Unity 3d引擎封裝了大部分的功能,讓開發者能用比較直觀的方式開發遊戲,甚至提供了PlayerMaker這種免程序的開發方式,意味著部分開發者可以脫離程序,可視化地編輯自己的遊戲。在編程方面,支持C#和Java兩種語言。而C#開發佔主要地位。推薦學習C#面向對象語言,而且入門簡單。我們通過一個經典小案例坦克大戰2D遊戲讓讀者了解下遊戲開發全過程。
  • WGS84坐標和HK80坐標之間的相互轉換
    不過,生態學研究中最常用的坐標係為WGS84(EPSG:4326),例如GPS一般就是直接給出WGS84的經緯度,Google Earth等也用WGS84坐標系。那麼HK80坐標如何轉換為WGS84坐標呢?
  • HALCON高級篇:3D坐標之剛性轉換和齊次轉換矩陣
    事實上,一個剛性轉換已經是一個鏈了,因為其實由平移和旋轉組成的:如果旋轉是由多次繞軸旋轉組成的,則單獨的旋轉也可以被寫成如下的齊次轉換矩陣:從右向左讀這條鏈,你可以遵循點的轉換:首先,其繞著z軸旋轉,然後繞著(舊)y軸旋轉,最後其被平移。坐標系統的剛性轉換坐標系統的剛性轉換與單獨平移和旋轉所描述的工作方向一樣。
  • 坐標轉換的計算公式
    參心大地坐標與參心空間直角坐標轉換1名詞解釋:A:參心空間直角坐標系:a)以參心0為坐標原點;b)Z軸與參考橢球的短軸(旋轉軸)相重合;c)X軸與起始子午面和赤道的交線重合;d)Y軸在赤道面上與X軸垂直,構成右手直角坐標系0-XYZ;e)地面點P的點位用(X,Y,Z)表示;B:參心大地坐標系:a)以參考橢球的中心為坐標原點,橢球的短軸與參考橢球旋轉軸重合;b)大地緯度B:以過地面點的橢球法線與橢球赤道面的夾角為大地緯度
  • ArcGIS坐標轉換及投影詳解
    地理數據的坐標主要分為兩種方式:地理坐標和投影坐標。地理坐標是球面坐標,簡單來說就是使用經緯度來表示位置坐標,投影是按照一定的數學模型將球面坐標投影到幾何體後,用平面坐標(x和y)來表示位置信息。工作中我們經常會用到地理坐標與投影坐標的轉換。
  • 如何將傳感器坐標系下的數據轉換到自車坐標系?
    如何將傳感器坐標系下的數據轉換到自車坐標系?本文將會集中在如何將傳感器坐標系下的數據轉換到自車坐標系下。有關無人駕駛技術中傳感器到車體坐標系的坐標轉換原理及數學推導,該原理不僅用在無人車領域,同時在機器人、無人機、三維建模等領域也得到了廣泛使用。 無人車上擁有各種各樣的傳感器,每個傳感器的安裝位置和角度又不盡相同。對於傳感器的提供商,開始並不知道傳感器會以什麼角度,安裝在什麼位置,因此只能根據傳感器自身建立坐標系。
  • 坐標轉換模塊及光源模塊簡介Transform & Lighting
    從以往只有在CAD/CAM等高端繪圖的特定領域才需要3D繪圖晶片,演變到今天人人都在玩3D遊戲,隨著3D繪圖需求和應用的增加,也使得繪圖晶片廠商進入一個無止境的性能競賽中來。     日前矽統科技發表了最新的SiS315繪圖晶片,其具備256位的高效率3D繪圖引擎;同時支持硬體加速T&L功能。
  • 坐標轉換
    進行GPS,北京54,西安80的經緯度和平面坐標之間的轉換,可以計算帶號
  • 工程測量坐標系入門——怎麼計算坐標正算反算、坐標轉換詳細演示
    對於一個剛剛從學校畢業沒有真正從事過工程測量工作的人員,或者以前從事其他工作現在剛剛轉行從事工程測量工作的初學者來說,對於「認識工程測量坐標系」中的計算常常難以理解,於是今天東英時代培訓就用一個房間軸線交點坐標計算為例,專門給大家演示一下,坐標正算、反算、坐標轉換等工程測量中的入門計算
  • 利用Civil 3D/Map 3D跨坐標系傳遞CAD對象
    我們想把TAIWAN1967-TM2-119坐標系下的對象,全部傳遞到TAIWAN1997-TM2-119坐標系下。我們看看Civil 3D能不能幫我們順利的完成這個轉換。準備工作:我們打開圖紙2,也就是作用於目標坐標系的圖紙,因為要用到Map 3d的功能,因此我們調用出Map 工作空間,可以用MAPWSPACE命令,來調用Map工作空間,並且切換到地圖管理器選項卡附著源圖紙在地圖管理器裡右鍵圖形
  • 關於坐標轉換的一些基本概念
    每個項目收集到的資料並不一定都是一致的,如坐標類型不同:大地經緯度坐標,平面坐標等,也有可能採用的橢球體不同(坐標系不同)或投影方式不同等等。所以坐標系的相互轉換在項目中使用非常普遍,如大地坐標轉平面坐標,平面坐標轉空間直角坐標,平面坐標轉大地坐標等等。下面是關於坐標轉換的一些基本概念。
  • 理解Unity3D中的四種坐標體系
    其實如果僅僅只有 3D 坐標系還是很簡單的,就目前來說我們所見過的三維建模軟體或者遊戲開發軟體所用的坐標系分兩種:左手坐標系和右手坐標系。怎麼區別呢?除了 3D 世界中的坐標系,還有其他的幾個坐標系也非常常用,比如我們經常要把世界三維坐標系轉換成我們最終屏幕中的二維坐標系,或者把手機屏幕的二維坐標系轉化成遊戲世界中的三維坐標系等,各個坐標系各有特別,不能混用,為了更好的學習 Unity 遊戲開發,自己在此總結一下 Unity 當中的坐標系和相關用法,以作備忘和學習。
  • 從地方坐標繫到2000國家大地坐標系的轉換
    但是, 在兩個橢球所指的同一區域內, 由於橢球面彎曲度較小, 該區域同名點在不同的橢球系上存在一定的曲面數學關係, 因此可以通過區域轉換模型進行坐標轉換。一般常用的轉換方法是四參數轉換法和七參數轉換法。
  • 博主營地 | Unity3D 實用技巧 - 理論知識庫(一)
    原生GUI:http://unity3d.9ria.com/?p=2587  NGUI:http://blog.csdn.net/mfc11/article/details/17681429  為什麼dynamic font在unicode環境下優於static font。
  • CAD如何切換圖紙之間的坐標? CAD圖紙坐標轉換圖文教程
    CAD如何切換圖紙之間的坐標? CAD圖紙坐標轉換圖文教程時間:2017-08-05 13:26   來源:三聯   責任編輯:沫朵 川北在線核心提示:原標題:CAD如何切換圖紙之間的坐標? CAD圖紙坐標轉換圖文教程 拿到別人給我們的設計圖紙,有一些圖紙是會帶著坐標關係的,有些是沒有的。
  • 「2000坐標」成了標配,你還不懂坐標系定義和轉換嗎?
    國土空間規劃明確要求「統一採用2000國家大地坐標系」和「1985年國家高程基準」作為空間定位基礎,可是很多時候我們拿到的數據坐標並不是「2000國家大地坐標系」,需要進行坐標轉換,這可就犯了難?本課,我們來學習下ArcGIS中坐標定義與轉換的相關知識。
  • 大地測量控制點坐標轉換技術規程
    2000國家大地坐標系時控制點選取、坐標轉換模型、轉換方法、精度評價等方面應遵循的原則、適用範圍和精度要求。坐標轉換過程就是轉換參數的求解過程。3.13 坐標系變換同一橢球基準下,空間點的不同坐標表示形式間進行變換。包括大地坐標系和空間直角坐標系的互相轉換、空間直角坐標系與站心坐標系間的轉換和高斯投影坐標正反算。
  • 前端小知識——地圖坐標轉換
    >那麼接下來,我們就來了解一下,關於當前用到的一些網際網路地圖的基礎坐標轉換知識~1、首先給大家出一個題>地圖上的經緯度轉換到平面坐標時,和平面坐標的XY的對應關係是什麼,就是經度(longitude)和維度(latitude)分別給對應X,Y中的誰?
  • 坐標轉換流程與公式,七參數、四參數
    7參數轉換整體流程(不同橢球之間):平面直角坐標系-->大地坐標系-->空間直角坐標系 轉換(To) 空間直角坐標系-
  • 關於坐標轉換的一些基本概念 - 土木智庫
    每個項目收集到的資料並不一定都是一致的,如坐標類型不同:大地經緯度坐標,平面坐標等,也有可能採用的橢球體不同(坐標系不同)或投影方式不同等等。所以坐標系的相互轉換在項目中使用非常普遍,如大地坐標轉平面坐標,平面坐標轉空間直角坐標,平面坐標轉大地坐標等等。下面是關於坐標轉換的一些基本概念。