簡體   English   中英

Unity Health Bar在敵人頭上

[英]Unity Health Bar over Enemy Head

我對此有一些問題,所以我想在這里問。

我編寫了一個實例化一個健康欄(一個簡單的滑塊)和一個敵人的代碼。 然后,它將該敵人(剛剛生成的)設置為該生命條的目標,並且該生命條會更新其位置以始終保持在敵人頭上方。

這是運行狀況欄的腳本(canvasRect是畫布的rect轉換,myRect是運行狀況欄的rect轉換):

private void Update() {
        if(target != null) {
            Vector2 targetPosition = Camera.main.WorldToViewportPoint(target.position);

            Vector2 screenPosition = new Vector2(((targetPosition.x * canvasRect.sizeDelta.x) - (canvasRect.sizeDelta.x * 0.5f)),
                ((targetPosition.y * canvasRect.sizeDelta.y) - (canvasRect.sizeDelta.y * 0.5f)));

            screenPosition += new Vector2(0f, 15f);

            myRect.anchoredPosition = screenPosition;
        }
    }

該腳本很好用,但是有一個問題:如您所見,我在y坐標中添加了一個偏移量。 這是將生命條放置在敵人之上 ,而不是內部

問題出在我移動相機時。 如果我放大,它會旋轉一點(就像RTS相機一樣),這意味着偏移是錯誤的。 我放大得越遠,運行狀況條越低(因為15f的偏移量不再足夠)。 然后,當我將相機移近敵人時,它再次將健康欄推入敵人體內。

有沒有辦法讓我的敵人獲得“屏幕尺寸”的“邊界”,這樣我就始終可以知道要獲得的偏移量是多少? 還是有其他解決方案?

提前致謝!

解決方案很簡單。 不要將偏移量添加到屏幕位置。 而是將其添加到敵人的世界位置(target.position +偏移量)。

除此之外,您還可以使用MeshRenderer.bounds獲得網格的邊界。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM