[Unity3D]使用OnGUI函数显示状态栏并且使用触发器修改玩家当前信息

在Unity官网上有相关OnGUI函数的讲解,点击查看官网说明文档


将这段代码贴在Unity的脚本中并且拖拽到主摄像机上,便会发现运行时左上角多了一个小按钮:

但是这样显然不能满足正常的需求,
一般来说游戏需要在界面显示当前角色的相关信息,比如剩余血量什么的,下面就来看下如何在Unity中使用OnGUI函数显示Health信息。

将在MonoDevelopment中将代码做如下修改:


运行以下程序,可以看到一个逐渐减少的Health值的动态显示:

这样就可以简单的将数据显示在屏幕上了,具体的相关操作请看说明文档:

查看文档

接下来就是使用触发器来修改玩家的Health信息了。具体需求如下:当玩家进入火焰的区域时Health值减少。

实现过程非常简单,关键步骤是如下代码:

var health:float = 180; // player's health
var damageRate:float = 36; // how fast the player loses health
var startHealth:float; // container for the starting health

function Awake () {
	startHealth = health;
}


function Update () {
	if (health < 0) {
		Reset();
	}
	
	if (this.transform.position.y < 0) { // falling through level
		Reset();
	}	
}

function OnGUI () {
	GUI.Box (Rect (100,100,150,30), "Player Health: " + Mathf.Round(health));
}

function Reset () { //this reset health and position
	transform.position = Vector3(27.44, 12.62892, 281.0809);
	health = startHealth;
}

function OnTriggerStay (theCollider : Collider) {

	if (theCollider.tag == "fire") { //damage if in fire
		health -= damageRate * Time.deltaTime;
	}	
}



你可能感兴趣的:(Unity3D)