Unity中UI跟隨3D物體 即HUD效果

2021-08-21 21:56:28 字數 854 閱讀 6392

今天簡單的測試了unity中ui跟隨3d物體,使用unity版本:5.6.4。

首先想到的有兩種思路:

1、第一種方法基於recttransformutility.screenpointtoworldpointinrectangle和 camera.main.worldtoscreenpoint這兩個方法

首先把3d物體座標轉換到螢幕座標,然後在從螢幕座標轉換到ui座標:

public transform target;   //3d物體

public recttransform image;    //跟隨3d物體的ui

public canvas canvas;   //ui所在的canvas

private vector2 screenpos;

private vector3 mousepos;

void update()

}此時 ui就實現了3d物體。

2、當我們實現了第乙個方法,此時在想我們基於camera.main.worldtoscreenpoint方法,獲取到螢幕座標,然後根據螢幕座標和ui座標不同計算出ui座標。

螢幕空間以畫素定義,螢幕左下為0,0,ui座標0,0點在螢幕正中間,如果加上x和y軸偏移量,我們可以使用一下方法實現:

public recttransform rectbloodpos;

public int offstex = 0;

public int offsety = 60;

private vector2 screenpoint;

private vector2 currpos = new vector2();

void update()

次方法也實現了hud效果。

unity3D回顧1 物體跟隨滑鼠旋轉

二 測試效果 這是本人玩unity的回顧,一些指令碼分享 考慮到有三種不同型別的旋轉行為 水平轉 垂直轉 水平 垂直 就相當於旋轉包括這三類,於是用列舉定義三者 列舉型別是一種值型別,它用於宣告一組命名的常數 public enum rorationaxes 定義列舉資料結構,將名稱和設定結合起來 ...

VR開發中3D物體遮擋UI的解決方法

2 匯入unity中或新建指令碼 3 使用 新建乙個material,直接把shader託給material,完成賦值 4 使用環境和使用效果效果 在製作vr內容時,通常使用的都是ugui,一般會將canvas的render mode設定為world space,但是這樣設定過後,因為ui是直接放在...

Unity 點選滑鼠右鍵實現3D物體拖拽移動

要想通過滑鼠拖拽物體需要拿到物體的世界座標以及螢幕座標.其次獲取滑鼠在螢幕中移動的偏移量 private vector3 aotiscreen 用來獲取物體在螢幕的座標 private vector3 mousestartscreen 用來獲取滑鼠按下時在螢幕的位置 private vector3 ...