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);

}

下图是在立方体上加的脚本 文章来自【狗刨学习网】