Unity3D 人物头顶名称显示

在屏幕上写字很简单,但是要把字写到自己想要的位置就比较困难了,

而在游戏中人物名称会跟随着人物进行移动

在unity中游戏物体的坐标和UI是两个不同的坐标系

他们之间的坐标转换就是关键

Vector2 pos = Camera.main.WorldToScreenPoint(objPos);

可以将世界坐标(也就是物体在场景中的坐标)转换成屏幕坐标

//此处是人物名称需要显示的世界坐标位置 
Vector3 worldPos = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y+height, this.gameObject.transform.position.z);
	//坐标转换
        Vector2 pos = Camera.main.WorldToScreenPoint(worldPos);
	//由于坐标体系不同,他们的Y轴方向相反,需要转换一下
pos = new Vector2(pos.x,Screen.height-pos.y);
 
  
	//获取名称的宽高
        Vector2 nameSize = GUI.skin.label.CalcSize(new GUIContent(name));
	//
        GUI.Label(new Rect(pos.x - nameSize.x / 2, pos.y, nameSize.x, nameSize.y), name);


这样就可以在屏幕需要的位置进行文字的显示

你可能感兴趣的:(unity学习)