在游戏中,游戏人物的血条可能会因为受伤或吃血瓶而长度变化,所以需要将血条的长度单独提出来作为一个变量,方便直接修改数值。

public float healthBarLength;

改变生命值函数如下:

void AddjustCurrentHealth(int adj){
curHealth += adj;
if (curHealth < ) {
curHealth = ;
} else if (curHealth > maxHealth) {
curHealth = maxHealth;
} if(maxHealth < ){
maxHealth = ;
}
healthBarLength = (Screen.width / * (curHealth / maxHealth));
}

在Update中调用

    void Update () {
AddjustCurrentHealth ();
}

运行后查看效果,当修改CurHealth的值为-1的时候,它自动变为0。

但是当修改CurHealth为50的时候,发现血条长度始终为0,后来发现原来curHealth / maxHealth由于都是整数,所以结果是零,应该在maxHealth前面加float。

healthBarLength = (Screen.width /  * (curHealth / (float)maxHealth));

这样运行再修改CurHealth值,对应的长度就正确了。
完整PlayerHealth.cs

public class PlayerHealth : MonoBehaviour {
public int maxHealth = ;
public int curHealth = ;
public float healthBarLength;
// Use this for initialization
void Start () { } // Update is called once per frame
void Update () {
AddjustCurrentHealth ();
} void OnGUI(){
GUI.Box (new Rect(,,healthBarLength,),curHealth + "/" + maxHealth);
} void AddjustCurrentHealth(int adj){
curHealth += adj;
if (curHealth < ) {
curHealth = ;
} else if (curHealth > maxHealth) {
curHealth = maxHealth;
} if(maxHealth < ){
maxHealth = ;
} healthBarLength = (Screen.width / * (curHealth / (float)maxHealth));
}
}

下面创建敌人的血条脚本:

在Unity编辑器的Assets/Scripts文件夹内,选中PlayerHealth,按键盘ctrl+d,复制一份,重命名为EnemyHealth。

双击打开Enemy,修改类名为EnemyHealth,然后将血条位置离top设为40,拖动它到Hierarchy里的cube上。

GUI.Box (new Rect(,,healthBarLength,),curHealth + "/" + maxHealth);

运行如图

简单3d RPG游戏 之 002 生命条(二)的更多相关文章

  1. 简单3d RPG游戏 之 001 生命条(一)

    1.创建一个新项目,引用如下的包: 2.将asset里的First Person Controller拖入project作为游戏角色,将其命名为Player,将mainCamera删除,这样就是用Pl ...

  2. 简单3d RPG游戏 之 004 攻击(二)

    人物和怪物的攻击都有CD冷却,在PlayerAttack脚本中添加成员 //冷却倒计时 public float attackTimer; //CD冷却时间 public float coolDown ...

  3. 简单3d RPG游戏 之 004 攻击(一)

    功能:实现点击键盘F键,怪物血量条减少,并且假定是近战,需要对距离进行判断,距离小于一定值的时候按F才会减少怪物的血条. 新建c#脚本PlayerAttack,绑定到Player,并在unity里将敌 ...

  4. 简单3d RPG游戏 之 003 怪物AI

    游戏中,怪物会自动的往玩家所在地点走去,那需要创建一个C#脚本EnemyAI,包含两个功能: 1. 怪物旋转自己对准玩家 2. 怪物向前移动,追逐玩家 public class EnemyAI : M ...

  5. 简单3d RPG游戏 之 005 选择敌人

    选择一个敌人,按ctrl+d,复制出3个,调整一下它们的位置,不重叠,修改Tag为Enemy,禁用EnemyAI. 创建Targetting脚本,绑定到Player玩家对象 public class ...

  6. 使用HTML5制作简单的RPG游戏

    很久以前就想着做一个游戏,但什么都不会又不知道从哪里开始,胡乱找来一些书籍和资料结果太深奥看不懂,无奈只能放弃.这一弃就是十多年,倥偬半生,眼看垂垂老矣,还是没能有什么成果. 近年来游戏引擎越来越多, ...

  7. HTML5 RPG游戏引擎 地图实现篇

    一,话说全国年夜事   前没有暂看到lufy的专客上,有一名伴侣念要一个RPG游戏引擎,出于兴趣筹办入手做一做.因为我研讨lufylegend有冶时间了,对它有必然的依赖性,因而便筹办将那个引擎基于 ...

  8. 用webgl打造自己的3D迷宫游戏

    用webgl打造自己的3D迷宫游戏 2016/09/19 · JavaScript · WebGL 原文出处: AlloyTeam    背景:前段时间自己居然迷路了,有感而发就想到写一个可以让人迷路 ...

  9. 3D单机游戏《天鹰教》源码发布(二)

    3D单机游戏<天鹰教>源码发布 作者 作者: 游蓝海 博客: http://blog.csdn.net/you_lan_hai mail:     you_lan_hai@foxmail. ...

随机推荐

  1. javascript-函数进阶

    一.函数定义 1.函数声明 function add(i,j){ return i+j; } 特点:1.函数声明定义函数会被前置.要知道在js代码执行时,会有一个预解析,预解析时会把变量声明.函数声明 ...

  2. 锋利的jQuery第2版学习笔记4、5章

    第4章,jQuery中的事件和动画 注意:使用的jQuery版本为1.7.1 jQuery中的事件 JavaScript中通常使用window.onload方法,jQuery中使用$(document ...

  3. HTML5와 CSS3 적용기

    HTML5의 DTD 선언 <!DOCTYPE html>  HTML5의 인코딩 선언 <meta charset="utf-8">  그리고나서는 새로 ...

  4. java内存被释放的小例子

    先贴代码: StringBuilder dada = null; ; i<; i++){ dada = new StringBuilder(); ; j<; j++){ dada.appe ...

  5. C# 使用Code First迁移更新数据库

    三步完成迁移: 1. 启用迁移: Enable-Migrations Enable-Migrations -ContextTypeName Mvc4WebSite.Models.MvcGuestboo ...

  6. MacBook Pro 的照相机在哪?

    用于拍照 用于录制视频

  7. 【转载】绝对干货!Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载九)如何通过源代码安装软件

    除了使用Linux的包管理机制进行软件的安装.更新和卸载,从源代码进行软件的安装也是非常常见的,开源软件提供了源代码包,开发者可以方便的通过源代码进行安装.从源码安装软件一般经过软件配置.编译软件.执 ...

  8. 暑假集训(4)第六弹——— 组合(poj1067)

    题意概括:上一次,你成功甩掉了fff机械兵.不过,你们也浪费了相当多的时间.fff团已经将你们团团包围,并且逐步 逼近你们的所在地.面对如此危机,你不由得悲观地想:难道这acm之路就要从此中断?虽然走 ...

  9. 用于主题检测的临时日志(594fb726-af0b-400d-b647-8b1d1b477d72 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

    这是一个未删除的临时日志.请手动删除它.(f8322da6-c527-47fb-98d2-f12a7d814d19 - 3bfe001a-32de-4114-a6b4-4005b770f6d7)

  10. iOS开发基础之排序

    Objective-C 有排序的API,省了我们很多事. 主要有以下3种方法. NSComparator NSArray *unsortedArray = @[@5,@3,@8,@1,@7]; NSA ...