大部分游戏都会有攻击和显示血量等操作,在Unity中也可以很简单的实现。
攻击及受击
首先
要找到武器模型,在它的身上要添加Collider,如果素材没有Mesh也可以用其他的Collier代替,然后勾选Is Trigger。
Mesh Collier
Box Collier
人物的身上最好也添加上Rigid Body和Collier。
第二步
创建一个Weapon的脚本,先定义一个武器伤害的变量。并将它挂载到武器上。
判断受到攻击的方法:
1)利用触发器函数OnTriggerEnter、OnTriggerExit、OnTriggerStay来实现
2)为玩家和敌人添加Tag,通过检测Tag的信息来判断哪一方收到伤害。
相应的实现为:
private void OnTriggerEnter(Collider other)//此处有三种选择
{
if (other.gameObject.tag =="Enemy")
{
if (Time.time - tempTime > cd)//控制受击
{
other.gameObject.GetComponent<AI>().Attacked(damage);
tempTime = Time.time;
}
}
if (other.gameObject.tag == "Player")
{
if (Time.time - tempTime > cd)
{
other.gameObject.GetComponent<PlayerController>().Attacked(damage);
tempTime = Time.time;
}
}
}
Attacked()方法写在对应脚本中,为了方便扣除血量及UI血量显示。
currentHealth 在Start函数中初始化等于MaxHealth;
public void Attacked(float damage)
{
currentHealth -= damage;
}
至此受击减血功能完成
血量UI
我们将怪物的血量放在它的头顶
在Hierarchy选中怪物,右键UI->Image,并调整位置到怪物头顶。
创建Image
选取图像(最好为白色方形),修改想要的血条颜色,将Image Type修改为Filled,Fill Method修改为Horizontal(横向),Fill Origin修改为Right(这样的效果是从右向左消除填充)。
调节Image
获取血量:
public Image HP;
HP.fillAmount = currentHealth / MaxHealth;
每次受到攻击后,调用Attacked扣除血量后,可用此方法将血条填充做改变
public void Attacked(float damage)
{
currentHealth -= damage;
HP.fillAmount = currentHealth / MaxHealth;
}
人物同理,不过是将人物的血量放在画面的左上角
这个资源包的血条效果不错,有兴趣的可以试试
血量UI推荐
网友评论