Unity3D 人物头顶名称显示

来源:互联网 发布:焊接工艺软件wisetm 编辑:程序博客网 时间:2024/04/25 12:16

</pre>在屏幕上写字很简单,但是要把字写到自己想要的位置就比较困难了,<p></p><p>而在游戏中人物名称会跟随着人物进行移动</p><p>在unity中游戏物体的坐标和UI是两个不同的坐标系</p><p>他们之间的坐标转换就是关键</p><p>Vector2 pos = Camera.main.WorldToScreenPoint(objPos);</p><p>可以将世界坐标(也就是物体在场景中的坐标)转换成屏幕坐标</p><p></p><p><pre name="code" class="csharp">//此处是人物名称需要显示的世界坐标位置 
Vector3 worldPos = new Vector3(this.gameObject.transform.position.x, this.gameObject.transform.position.y+height, this.gameObject.transform.position.z);
<span style="white-space:pre"></span>//坐标转换        Vector2 pos = Camera.main.WorldToScreenPoint(worldPos);
<pre name="code" class="csharp"><span style="white-space:pre"></span>//由于坐标体系不同,他们的Y轴方向相反,需要转换一下
pos = new Vector2(pos.x,Screen.height-pos.y);
<span style="white-space:pre"></span>//获取名称的宽高        Vector2 nameSize = GUI.skin.label.CalcSize(new GUIContent(name));
<span style="white-space:pre"></span>//        GUI.Label(new Rect(pos.x - nameSize.x / 2, pos.y, nameSize.x, nameSize.y), name);


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

0 0
原创粉丝点击