2017-08-08 53 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

在整个游戏过程中,你是否会改变相机的平截头体?我认为你通过获得平截头体高度而使得事情变得非常复杂。截止日期是相机如何处理世界,我不认为你应该做任何与游戏大小有关的事情。 –