还剩2页未读,继续阅读
文本内容:
游戏开发之人物和怪物头顶的标签显示Unity3D今天我们需要完善项目,我就做了人物头顶顶名称,怪物头顶顶名称和血条,我们就暂时俗称它为人物的标签吧虽然只是做了一点点,但是我还是觉得蛮有意思的做成的效果如图所示:@Unity-Level.Lunrty-KillingEndless-PC.MACUnuxStandalone*«DX11—gGUIFileEdit GameObjeetComponentUtilrte^VisualStudoToolsWindowHelp我们就以老鼠来当例子吧代码如下:
1.using UnityEngine;
2.using System.Collections;
3.
4.public classMouseHeader:MonoBehaviour{
5.
6.〃主摄像机对象
7.private Cameracamera;
8.〃怪物名称
9.private stringname二〃老鼠〃;
10.〃主角对象
11.GameObject hero;
12.〃怪物模型高度
13.float mouseHeight;
14.〃红色血条贴图
15.public Texture2D blood_red;
16.〃黑色血条贴图
17.public Texture2D bloodblack;
19.void Start
20.
21.〃根据Tag得到主角对象
22.hero GameObject.FindGameObjectWithTag,,Player,z;
23.〃得到摄像机对象
24.camera Camera,main;
25.〃得到模型原始高度
18.
26.float size_y=collider,bounds,size,y+
0.3f;〃
27.得到模型缩放比例
28.float scal_y transform.localScale.y+
0.3f;
29.〃它们的乘积就是高度
30.mouseHeight二size_y*scal_y;
31.
32.void Update
33.
34.〃保持NPC一直面朝主角
35.transform.LookAthero,transform;
36.
37.void OnGUI
38.
39.〃得到NPC头顶在3D世界中的坐标
40.〃默认NPC坐标点在脚底下,所以这里加上npcHeight它模型的高度即可
41.Vector3worldPosition=newVector3transform,position,x,transform,position,y+mouseHeight,transform,position,z;
42.〃根据怪物头顶的3D坐标换算成它在2D屏幕中的坐标
43.Vector2position二camera.WorldToScreenPointworldPosition;
44.〃得到真实怪物头顶的2D坐标
45.position=new Vector2position,x,Screen.height一position.y;
46.〃计算出血条的宽高
47.Vector2bloodSize=GUI.skin,label.CalcSizenewGUIContentbloodred/2;
48.〃通过血值计算红色血条显示区域
49.float blood width=blood red.width*Stone.mouseHP/10;
50.〃先绘制黑色血条
51.GUI.DrawTexturenew Rectposition,x-bloodSize.x/2,position.y bloodSize.y,bloodSize.x,bloodSize.y,bloodblack;一
52.〃在绘制红色血条
53.GUI.DrawTexturenew Rectposition,x-bloodSize.x/2,position.y-bloodSize.y,bloodwidth,bloodSize.y,blood red;
54.〃计算怪物名称的宽高
55.Vector2nameSize=GUI.skin,label.CalcSizenewGUIContentname;
56.〃设置显示颜色为黄色
57.GUI.skin.label.fontSize=15;
58.GUI.color=Color,yellow;
59.〃绘制怪物名称
60.GUI.Labelnew Rectposition.x-nameSize.x/2,position,y-nameSize.y-bloodSize.y,nameSize.x,nameSize.y,name;
61.}
62.这样就做出了老鼠的标签和血条,主角和NPC的是一样的哦!。
个人认证
优秀文档
获得点赞 0