当前位置:   article > 正文

人物血条的制作_unity基础开发教程_unity 角色血条

unity 角色血条

场景创建

随便创建一个地板一个胶囊体,搭建一个简易的场景,我这里就继续使用前面文章创建的场景

在这里插入图片描述

导入素材

  1. 在unity编辑器中选择Window,点击Asset Store
    在这里插入图片描述
  2. 点击Search online
    在这里插入图片描述
  3. 在搜索栏FREE UI
    选择Simple Free Pixel art style…
    点击添加到我的资源
    (弹出窗口点击接收)
    在这里插入图片描述
  4. 添加完成之后,这里有两种方式,先说一下第一种方式:
    1.在unity编辑器中,选择Window,点击Package Manager;
    这里用第二种方法,比较简单;
    2.在弹出的对话框直接点击在Unity中打开
    在这里插入图片描述
    然后点击打开
    在这里插入图片描述
  5. 两种方式调出Package Manager窗口之后
    在搜索框搜索Simple
    选择Simple Free Pixel art styled UI pack
    点击Download
    在这里插入图片描述
    点击Import
    在这里插入图片描述
    点击Import
    在这里插入图片描述
    然后素材就导入完成了
    在这里插入图片描述

血条制作

  1. 在Hierarchy窗口右键,选择UI,点击Image,并命名healthBar
    并将Canvas命名为Health
    在这里插入图片描述
    然后再选中Health,再创建一个Image,并命名healthFill
    在这里插入图片描述
    整体
    在这里插入图片描述
  2. 选中Health,并将Inspector窗口中的Render Mode属性更改为World Space
    在这里插入图片描述
    并将摄像机Main Camera挂载到Event Camera
    在这里插入图片描述
  3. 选中healthBar和healthFill,将两者的Anchor Presets都改为stretch,
    (注意:按住Alt键的同时,那个九宫格的东西会变化,然后在变化的状态下点击最右下角的那个图标)
    在这里插入图片描述
  4. 选中Health,拖到Player里,成为Player的子物体;
    并且按照下面的图片修改Health的大小和位置(这里我已经调试好了,也可自行调整)
    PosX:0 PosY:2 PosZ:0
    Width:1 Health:0.1
    在这里插入图片描述
  5. 同时选中healthBar和healthFill;
    将前面素材里面的health_bar图片拖到两个物体的Source Image属性栏
    在这里插入图片描述
  6. 选中healthFill;
    将Inspector监视器窗口中的Color改为红色;
    Image Type改为Filled
    Fill Method改为Horizontal
    Fill Origin改为Left(默认就是Left)
    在这里插入图片描述
    到这里血条就制作好了,

下面就是代码部分,由于篇幅问题,这里只做简单的血量增加和减少的效果,不做受到攻击和恢复的实际场景;


实际游戏场景中的血量增加与恢复涉及到的物体代码相对复杂,后续文章会讲解

血量控制代码部分

  1. 在资源窗口创见一个Script文件夹(管理代码文件,养成良好的归纳习惯);
    创建一个C#脚本文件,命名Blood Manager
    在这里插入图片描述
  2. 双击打开代码文件,键入下面代码,然后保存
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class BloodManager : MonoBehaviour
{
    Image image;
    [SerializeField]float currentBlood = 1f;
    [SerializeField] float targetBlood = 1f;
    [SerializeField] Color bloodColor = Color.red;
    [SerializeField] float bloodMoveSpeed;
    // Start is called before the first frame update
    void Start()
    {
        image = GetComponent<Image>();
        image.color = bloodColor;
        image.fillAmount = currentBlood;
    }

    // Update is called once per frame
    void Update()
    {
        checkedKey();
        if (currentBlood != targetBlood)
        {
            currentBlood = Mathf.Lerp(currentBlood,targetBlood,bloodMoveSpeed*Time.deltaTime);
            image.fillAmount = currentBlood;
        }
    }

    private void checkedKey()
    {
        if (Input.anyKeyDown)
        {
            if (Input.GetKeyDown(KeyCode.J))
            {
                targetBlood = 0.2f;
            }
            else
            {
                if (Input.GetKeyDown(KeyCode.K))
                {
                    targetBlood = 0.8f;
                }
            }
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  1. 将Blood Manager代码文件,挂载到healthFill
    在这里插入图片描述
    你可能好奇另一个代码文件是啥,这是另一篇文章里讲的,想了解的话请移步我的另一篇文章
    AI Navigation导航系统_unity基础开发教程

到这里就完成了,可以运行看看效果,

J键是减血;
K键是加血;


需要注意
运行前别忘了修改Bolld Move Speed的值(不然按键是没有反应的),这里建议改为2,也可以根据自己的需求自行修改

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/895361
推荐阅读
相关标签
  

闽ICP备14008679号