人物血条的制作
- 场景创建
- 导入素材
- 血条制作
- 血量控制代码部分
场景创建
随便创建一个地板、一个胶囊体,搭建一个简易的场景,我这里就继续使用前面文章创建的场景
导入素材
- 在unity编辑器中选择Window,点击Asset Store
- 点击Search online
- 在搜索栏
FREE UI
,
选择Simple Free Pixel art style…
点击添加到我的资源
(弹出窗口点击接收)
- 添加完成之后,这里有两种方式,先说一下第一种方式:
1.在unity编辑器中,选择Window,点击Package Manager;
这里用第二种方法,比较简单;
2.在弹出的对话框直接点击在Unity中打开
然后点击打开
- 两种方式调出Package Manager窗口之后
在搜索框搜索Simple
选择Simple Free Pixel art styled UI pack
点击Download
点击Import
点击Import
然后素材就导入完成了
血条制作
- 在Hierarchy窗口右键,选择UI,点击Image,并命名healthBar
并将Canvas命名为Health
然后再选中Health,再创建一个Image,并命名healthFill
整体
- 选中Health,并将Inspector窗口中的Render Mode属性更改为World Space
并将摄像机Main Camera挂载到Event Camera
- 选中healthBar和healthFill,将两者的Anchor Presets都改为stretch,
(注意:按住Alt键的同时,那个九宫格的东西会变化,然后在变化的状态下点击最右下角的那个图标)
- 选中Health,拖到Player里,成为Player的子物体;
并且按照下面的图片修改Health的大小和位置(这里我已经调试好了,也可自行调整)
PosX:0 PosY:2 PosZ:0
Width:1 Health:0.1
- 同时选中healthBar和healthFill;
将前面素材里面的health_bar图片拖到两个物体的Source Image属性栏
- 选中healthFill;
将Inspector监视器窗口中的Color改为红色;
Image Type改为Filled
Fill Method改为Horizontal
Fill Origin改为Left
(默认就是Left)
到这里血条就制作好了,
下面就是代码部分,由于篇幅问题,这里只做简单的血量增加和减少的效果,不做受到攻击和恢复的实际场景;
实际游戏场景中的血量增加与恢复涉及到的物体代码相对复杂,后续文章会讲解
血量控制代码部分
- 在资源窗口创见一个Script文件夹(管理代码文件,养成良好的归纳习惯);
创建一个C#脚本文件,命名Blood Manager
- 双击打开代码文件,键入下面代码,然后保存
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;
}
}
}
}
}
- 将Blood Manager代码文件,挂载到healthFill
你可能好奇另一个代码文件是啥,这是另一篇文章里讲的,想了解的话请移步我的另一篇文章
AI Navigation导航系统_unity基础开发教程
到这里就完成了,可以运行看看效果,
J键是减血;
K键是加血;
需要注意
运行前别忘了修改Bolld Move Speed的值(不然按键是没有反应的),这里建议改为2
,也可以根据自己的需求自行修改