我在這方面遇到了一些問題,所以我想我會在這里問。我寫了一個代碼來實(shí)例化一個健康欄(一個簡單的滑塊)和一個敵人。然后將那個敵人(剛剛生成的)設(shè)置為該生命條的目標(biāo),并且生命條更新其位置以始終保持在敵人頭頂上方。這是健康欄的腳本(canvasRect 是畫布的矩形變換,myRect 是健康欄的矩形變換):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ùn)行良好,但存在一個問題:如您所見,我在 y 坐標(biāo)中添加了一個偏移量。這是為了將生命條放在敵人上方,而不是里面。然而,當(dāng)我移動相機(jī)時,問題就來了。如果我放大,它會旋轉(zhuǎn)一點(diǎn)(如 RTS 攝像機(jī)),這意味著偏移量是錯誤的。我放大得越多,健康欄就越低(因?yàn)?15f 的偏移量已經(jīng)不夠了)。然后當(dāng)我將相機(jī)移近敵人時,它再次將健康條推向他。有沒有辦法在屏幕大小中獲得敵人的“邊界”,這樣我就可以知道有什么偏移量?或者還有其他解決方案嗎?
1 回答

Helenr
TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個贊
解決方法很簡單。不要將偏移量添加到屏幕位置。相反,將其添加到敵人的世界位置(target.position + offset)。
除此之外,您可以使用 MeshRenderer.bounds 獲取網(wǎng)格的邊界。
- 1 回答
- 0 關(guān)注
- 214 瀏覽
添加回答
舉報
0/150
提交
取消