Unity受击及血量显示

大部分游戏都会有攻击和显示血量等操作,在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().Attacked(damage);
                tempTime = Time.time;
            }
            
        }

        if (other.gameObject.tag == "Player")
        {
            if (Time.time - tempTime > cd)
            {
                other.gameObject.GetComponent().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推荐

你可能感兴趣的:(Unity受击及血量显示)