2024年5月25日发(作者:)
Unity开发之3D游戏之怪物头上血条制作
今天我们又重新改了一下我们的项目,并且信添加了一些新的功能。
Unity游戏中血条在npc的的头顶上,并且上面写着npc的名字
//主摄像机对象
private Camera camera;
//NPC名称
private string name = "老鼠";
//NPC模型高度
float npcHeight;
//红色血条贴图
public Texture2D blood_red;
//黑色血条贴图
public Texture2D blood_black;
//默认NPC血值
private int HP = 100;
void Start ()
{
//得到摄像机对象
camera = ;
//注解1
//得到模型原始高度
float size_y = .y;
//得到模型缩放比例
float scal_y = cale.y;
//它们的乘积就是高度
npcHeight = (size_y *scal_y) ;
}
void OnGUI()
{
//得到NPC头顶在3D世界中的坐标
//默认NPC坐标点在脚底下,所以这里加上npcHeight它模型的高度
即可
Vector3 worldPosition = new Vector3 (on.x ,
on.y + npcHeight,on.z);
//根据NPC头顶的3D坐标换算成它在2D屏幕中的坐标
Vector2 position = oScreenPoint (worldPosition);
//得到真实NPC头顶的2D坐标
position = new Vector2 (position.x, - position.y);
//注解2
//计算出血条的宽高
Vector2 bloodSize = ze (new
GUIContent(blood_red));
//通过血值计算红色血条显示区域
int blood_width = blood_ * HP/100;
//先绘制黑色血条
xture(new Rect(position.x - (bloodSize.x/2),position.y
- bloodSize.y ,bloodSize.x,bloodSize.y),blood_black);
//在绘制红色血条
xture(new Rect(position.x - (bloodSize.x/2),position.y
- bloodSize.y ,blood_width,bloodSize.y),blood_red);
//注解3
//计算NPC名称的宽高
Vector2 nameSize = ze (new
GUIContent(name));
//设置显示颜色为黄色
= ;
//绘制NPC名称
(new Rect(position.x - (nameSize.x/2),position.y -
nameSize.y - bloodSize.y ,nameSize.x,nameSize.y), name);
}
下图是在立方体上加的脚本 文章来自【狗刨学习网】
发布评论