2017-08-08 257 views
0

下面的腳本應該擴大在世界空間UI Canvas菜單,使用戶得到遠,菜單生長在大小和規模,以及當用戶接近它,它按比例縮小。調整畫布菜單的尺寸和比例在HoloWorld

實際上,我們試圖更新菜單將相機的視錐高度的高度,從而使菜單總是佔據了完全攝影機視圖的垂直高度。

這是朝着解決的辦法嗎?我們做錯了新尺寸與凸輪的平截頭體高度不匹配的是什麼?我們已將這個腳本放在HoloLensCamera的應用場景中...

public class Adjuster : MonoBehaviour 
{ 
    public RectTransform _rectTransform; 
    private float _ratio; 
    private float _pixPerUnit = 100f; 
    private Vector3 _gazeOrigin; 
    private Vector3 _uiOrigin; 
    private float _frustumHeight; 
    private float _distance; 
    public bool _reSizeCanvas; 
    private Camera _camera; 
    private float _canvasWidth; 
    private float _canvasHeight; 

    private void Start() 
    { 
     if (_reSizeCanvas) 
     {   
      Vector2 initialSize = _rectTransform.sizeDelta; 
      _ratio = _rectTransform.rect.width/_rectTransform.rect.height; 
     } 
    }  

    private void LateUpdate() 
    { 
     _gazeOrigin = transform.position; 
     _uiOrigin = _rectTransform.position; 
     _distance = Vector3.Distance(_gazeOrigin, _uiOrigin); 
     _frustumHeight = 2.0f * _distance * Mathf.Tan(this.GetComponent<Camera>().fieldOfView * 0.5f * Mathf.Deg2Rad);  
     _rectTransform.sizeDelta = new Vector2(_ratio * _frustumHeight * _pixPerUnit, _frustumHeight * _pixPerUnit); 
    } 
} 
+1

如果妳不保持原有的距離u開始在和畫布如何ü做一個比原來的規模和應用它,然後呢? –

+0

@JeroenDeClercq我使用holocam和菜單畫布之間的'_distance'來計算平截頭體的高度,所以隨着距離的變化,平截頭體的高度發生變化,所以畫布應該適應這一點。我不希望兩者之間的距離保持不變。我的意思是我不希望菜單在用戶之後行走。如果用戶離開,我只希望它的大小增加。你是這個意思嗎? – Joshua

+1

我在問什麼是因爲你比例縮放比你需要基線來比較它。因爲你是距離的縮放u需要基線距離來比較它。你在做那個嗎? –

回答

0

將某個比率應用於某事物時。這個比例是根據兩件事的比較來計算的。在這種情況下,您將u和菜單之間的距離與u和菜單之間的基線距離進行比較。所以你需要固定的距離來比較你的實際距離。

平截頭體是字面上狀的錐體即(開始與尖端在相機)相機產卵,它會呈現什麼,它是此錐內。如果你不弄亂相機,它的尺寸將一直是相同的。如果你想要得到平截頭體高度,你需要找出物體在那個錐體中的位置。然後找出錐體切片的尺寸。

最簡單的解決方案; 離開這個錐臺高度,你的解決方案是非常簡單的;玩家的距離越來越近。反之亦然

+1

您是否對此解決方案有任何運氣,或仍然沒有達到預期效果? –

+0

我想到了你的建議。我認爲,由於「_distance」常用於計算和更新截錐體高度,因此其變化已被考慮爲基線。平截頭體calc開始於最初的距離,並且隨着凸輪越來越遠而不斷更新...由於我不是試圖標記或者收費,我不確定是否需要這種基線比較。如果你同意,請告訴我。另外,我的帖子中還有一個小問題,如果你能告訴我你對此的看法,那麼請。乾杯 – Joshua

+1

在整個遊戲過程中,你是否會改變相機的平截頭體?我認爲你通過獲得平截頭體高度而使得事情變得非常複雜。截止日期是相機如何處理世界,我不認爲你應該做任何與遊戲大小有關的事情。 –