美文网首页
Unity受击及血量显示

Unity受击及血量显示

作者: JayMeWangGL | 来源:发表于2019-08-07 16:23 被阅读0次

    大部分游戏都会有攻击和显示血量等操作,在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推荐

    相关文章

      网友评论

          本文标题:Unity受击及血量显示

          本文链接:https://www.haomeiwen.com/subject/erzodctx.html