血条或进度条的效果(一)

/*血条或进度条的效果(一)

开发工具:Unity3D 4.2、VS2010

脚本语言: C#  */

using UnityEngine;
using System.Collections;

public class BloodBarTest : MonoBehaviour {
	
	public GUISkin theSkin;
	public float bloodValue = 10.0f;
	
	private float tmpValue;
	private Rect rctBloodBar;
	private Rect rctUpButton;
	private Rect rctDownButton;
	private bool onoff;

	// Use this for initialization
	void Start () {
		rctBloodBar = new Rect (20,20,200,20);
		rctUpButton = new Rect (50,40,40,20);
		rctDownButton = new Rect (50,70,40,20);
		
		tmpValue = bloodValue;
	}
	
	
	void OnGUI(){
		GUI.skin = theSkin;
		
		if (GUI.Button (rctUpButton,"加血")){
			tmpValue += 1.0f;
		}
		if (GUI.Button (rctDownButton,"减血")){
			tmpValue -=	1.0f;	
		}		
		
		//血值超过上限,不再增加
		if (bloodValue > 10.0f) tmpValue = 10.0f;
			
		//血值超过下限 ,归零
		if (bloodValue < 0.0f) tmpValue = 0.0f;

        //注解一:
		//在Time.time时间内,从bloodValue渐变到tmpvalue值
		//相当于把值tmpValue赋值给bloodValue
		//bloodValue =tmpValue;
		bloodValue = Mathf.Lerp(bloodValue,tmpValue,Time.time);
		
		//拖动滚动条,第二个参数表示起始位置
		GUI.HorizontalScrollbar(rctBloodBar,0.0f,bloodValue,0.0f,10.0f,GUI.skin.GetStyle("HorizontalScrollbar"));
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}
注解一:lerp表示线性插值,经常用于补充表格中的间隔部分,两值之间的线性插值基本运算在计算机图形学中的应用非常普遍。

Mathf.Lerp(插值)

static function Lerp (from : float, to : float, t : float) : float 
Description(描述)
Interpolates a towards b by t. t is clamped between 0 and 1.
(基于浮点数t返回a到b之间的插值,t限制在0~1之间。)
When t = 0 returns from. When t = 1 return to. When t = 0.5 returns the average of a and b. 
(当t = 0返回from,当t = 1 返回to。当t = 0.5 返回from和to的平均值。)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值