我在游戏中的NPC上有GUI标签,标签上面显示了他们的名字。但是当我走开去别的地方时,他们的名字就像它的镜像一样停留在屏幕上?
这就是我所说的:
这是它通常的样子
当我走出视野时会发生这种情况。
守则:
using UnityEngine;
using System.Collections;
public class NPC : MonoBehaviour {
private float left;
private float top;
public float leftModifier;
public float topModifier;
private Vector3 NPCScreenPosition;
//FIX THE MIRRORING ISSUE
void Start () {
}
void Update () {
Vector3 NPCNameWorldPosition = (transform.position + new Vector3(0.0f, transform.lossyScale.y, 0.0f));
NPCScreenPosition = Camera.main.WorldToScreenPoint(NPCNameWorldPosition);
left = NPCScreenPosition.x + leftModifier;
top = Screen.height - (NPCScreenPosition.y + topModifier);
}
void OnGUI() {
GUI.Label(new Rect(left, top, 150, 25), gameObject.name.ToString());
}
}
答案 0 :(得分:1)
解决问题的最简单方法是检查屏幕坐标的深度(z值),看看物体是否在相机前面,即它是否可见。如果是,则该值为正。
如上所述,改变你的绘制调用如下所示:
void OnGUI
{
if(NPCScreenPosition.z >= Camera.main.nearClipPlane)
GUI.Label(new Rect(left, top, 150, 25), gameObject.name.ToString());
}