1. 程式人生 > >UGUI 將2DUI和場景中的3d物體關聯,跟隨物體移動

UGUI 將2DUI和場景中的3d物體關聯,跟隨物體移動

專案中經常會用到 UI 和場景的物體關聯,之前的做法是將UI做成3D的,即將Canvas畫布的屬性 RenderMode 設定位WorldSpace。
但是這有一個缺點 攝像機移動或者攝像機縮放場景 ,導致UI字型會看不清。為了解決這個問題,就用到了遊戲裡的人物頭頂血條。
主要的關鍵點是:
1.將3D物體的世界位置轉換位螢幕座標位置 Camera.main.WorldToScreenPoint
2.將UI的RectTransform 設定轉換後的螢幕座標,可以這轉換後螢幕座標基礎上新增x,y的偏移量

public class HealthBar : MonoBehaviour {

    public
float xOffset; public float yOffset; public RectTransform recTransform; void Update() { if (recTransform==null) { return; } Vector2 player2DPosition = Camera.main.WorldToScreenPoint(transform.position); recTransform.position = player2DPosition + new
Vector2(xOffset, yOffset); //血條超出螢幕就不顯示 if (player2DPosition.x > Screen.width || player2DPosition.x < 0 || player2DPosition.y > Screen.height || player2DPosition.y < 0) { recTransform.gameObject.SetActive(false); } else { recTransform.gameObject.SetActive(true
); } } }

相關推薦

UGUI 2DUI場景3d物體關聯跟隨物體移動

專案中經常會用到 UI 和場景的物體關聯,之前的做法是將UI做成3D的,即將Canvas畫布的屬性 RenderMode 設定位WorldSpace。 但是這有一個缺點 攝像機移動或者攝像機縮放場景

Unity3D2DUI跟隨場景3D物體

平面UI跟隨場景中的3D物體類似於血條的跟隨效果。 經過幾種方案的對比發現把3D物體的座標轉化為平面座標的方案是最行之有效的方法。 下面直接上程式碼 public class FollwScript

使用pscp命令Windowslinux檔案互相拷貝

window—>linux  首先,下載putty軟體,並可以在目錄中,找到pscp.exe檔案,我們可以通過這個軟體實現Windows和linux之間拷貝檔案。  將pscp.exe的路徑加入到系統環境變數Path中,這樣我們就可以在Windows的命令列

如何EclipseMyEclipseWeb專案打成war包

 war包即Web歸檔檔案,將Web專案打成war包可以直接拷貝到Web伺服器釋出目錄(例如Tomcat伺服器webapps目錄 ),當Tomcat啟動後該壓縮檔案自動解壓,war包方便了web工程的釋出,那麼在Eclipse中如何將Web專案打成war包呢?  

LR的引數設定場景虛擬使用者的關聯(sequential+Each occurrence)

  sequentral + each occurrence:引數每取值一次,按順序更新,取值超出記錄條數時,回表引數的頭位置再次取值 指令碼:lr_eval_string({newparam});

LR的引數設定場景虛擬使用者的關聯(Random + each iteration|each occurrence|once)

指令碼(lr_eval_string({"newparam"}))迭代4次,虛擬使用者為4個,引數設定為16個,引數取值設為 : Random + each iteration: 每開始迭代一次,引數

LR的引數設定場景虛擬使用者的關聯(Same line as + 各種取值設定選項)

指令碼:lr_eval_string("{PamNew});            lr_eval_string("{pwd}"); 指令碼迭代4次,場景設定4個虛擬使用者: 在  parameter

LR的引數設定場景虛擬使用者的關聯(Unique+each iteration)

在LR中有:16個引數,迭代4次,有4個虛擬使用者:  如:lr_eveal_string({Newparam}):         引數取值:張一,張二,張三,張四,張五,張六,張七,張八,張九,張

設計一個演算法刪除遞增有序連結串列值大於mink且小於maxk的所有元素(minkmaxk是給定的兩個引數其值可以的元素相同也可以不同)。

語言:C++ #include <iostream> using namespace std; typedef struct LNode { int data; LNode *next; }LNode,*LinkList; //建立連結串列 int CreateList(Li

獲取場景的所有按鈕並新增點選事件

void Start() {//初始化時 獲取 所有按鈕新增監聽 Addlisteningevent(); } public void Addlisteningevent() {//查詢所有按鈕 Button[] allObj =

使用sqoop資料從hdfs匯入mysql時卡在INFO mapreduce.Job: map 100% reduce 0%的解決辦法

最近在將hdfs中已經處理好的資料匯入到mysql的時候遇到這麼一個現象,當任務執行到 INFO mapreduce.Job: map 100% reduce 0% mapreduce任務卡在map100% ,任何reduce不繼續執行。 總結了以下解決辦法: 一,如果沒

詳解htmlthymeleaf的相對路徑解決springboot前臺頁面的相對路徑問題

一.問題 最近在使用springboot框架,眾所周知,該框架可以直接以jar的方式執行,在該方式執行的情況下,預設contextPath是/。在前臺頁面引用的時候,我是這樣寫相對路徑的: 後臺Req

eclipse本地專案svn的專案關聯

首先要確定eclipse中安裝了svn外掛。 然後在“svn資源庫研究”透檢視中新增上專案的svn地址,也可以新增到專案在svn的上一級目錄。 在專案上點選右鍵 Team——》Share Project,選擇svn,下一步, 然後你就會驚奇的發現svn外掛已經找到並

python例項物件新增方法的方式新增類方法靜態方法的方式

import types class Person(object): def __init__(self, newName, newAge): self.name = newName self.age = newAge def

給出一個2D板字典的單詞列表找到棋盤上的所有單詞。每個單詞必須由順序相鄰單元格的字母構成。不能重複使用

本題源自leetcode   212 ----------------------------------------------------------------------- 思路: 構造一個Trie單詞查詢樹。然後用遞迴遍歷棋盤。找到所有的單詞。 程式碼: c

讀取深度快取的深度值其螢幕2D座標轉化為場景3D座標

mouse_x=LOWORD(lParam);//滑鼠的x座標    mouse_y=HIWORD(lParam);//滑鼠的y座標    glGetDoublev(GL_MODELVIEW_MATRIX, modelview);//檢視矩陣    glGetDoublev(GL_PROJECTION_MAT

使用SharedPreferences姓名年齡信息保存在文件並讀取信息

new sta text str @override this ket make and 第一個是XML文件: 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:androi

10.16輸入一個字符串內有數字非數字字符如: a123x456 17960? 302tab5876 其中連續的數字作為一個整數依次存放到一數組num。例如123放在num[0]中,456放在num[1]……統計共有多少個整數並輸出這些數。

tab lnp zip sm2 cuc ycm rds qt5 tft 10.16輸入一個字符串,內有數字和非數字字符,如: a123x456 17960? 302tab5876 將其中連續的數字作為一個整數,依次存放到一數組num中。例

golang 如何imagemagick golang 打包到docker 環境

upd 項目 free rec build ack 綜合 工作目錄 出現 公司最近開發了個項目,用到了imagemagick 和golang 環境,在我本地機上開發妥妥的,結果準備部署到線上環境的時候,出現了大坑,嘗試了無數次後,最後還是解決了,官方說有問題也不說清楚點,一