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

人物血条的制作

  • 场景创建
  • 导入素材
  • 血条制作
  • 血量控制代码部分

场景创建

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

人物血条的制作_unity基础开发教程_第1张图片

导入素材

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

血条制作

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

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


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

血量控制代码部分

  1. 在资源窗口创见一个Script文件夹(管理代码文件,养成良好的归纳习惯);
    创建一个C#脚本文件,命名Blood Manager
    人物血条的制作_unity基础开发教程_第19张图片
  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. 将Blood Manager代码文件,挂载到healthFill
    人物血条的制作_unity基础开发教程_第20张图片
    你可能好奇另一个代码文件是啥,这是另一篇文章里讲的,想了解的话请移步我的另一篇文章
    AI Navigation导航系统_unity基础开发教程

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

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


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

人物血条的制作_unity基础开发教程_第21张图片

你可能感兴趣的:(Unity开发,unity,游戏引擎,unity开发,游戏,游戏开发)