Unity中血条的制作

  • 1.先制作血条的雏形:

首先在UI中选择Canvas(画布),在Canvas中创建一个Image(图像),然后在lmage中创建一个GameObject(空对象)。先把Image(图像)拉长放在右下角,选择GameObject(空对象)在位置的选择上选择自适应(如图1)。

然后把GameObject(空对象)放在Canvas(画布)下,把Image(图像)放在GameObject(空对象)下,然后在GameObject(空对象)下再创建一个Image(图像),再把两个Image(图像)都打上位置的自适应。 把Image2(图像)颜色改为红色(或你喜欢的颜色)当血条,Image1(图像)不做改动当做血槽(如图2)。

图1
图1
图2
  • 2. 然后放置血条:

点击Canvas(画布)在渲染模式下选择世界空间,这样就可以移动Canvas(画布)了(如图3),同也可移动GameObject(空对象)做的血条。移动血条放在需要血条的人物或物体上方(如图4)。同时也要把Canvas(血条)放在人物下(如图2操做),这样就可以随着人物或物体的移动而移动。

图3
图4
  • 3.视角跟随:需要血条一直跟随要跟随的视角平行,这样就可以一直看到血条的正面。

首先在Canvas(血条)里创建脚本。然后写代码(如下),再把需要跟随的视角放在Can里。

图5
public class rotate : MonoBehaviour
{
    public Transform Can;
    // Start is called before the first frame update
    private void LateUpdate()
    {
        transform.LookAt(transform.position + Can.forward);
    }
  • 4.血量减少:

你可以如图6.1一样修改血条各部分的名字,这样更好分辨。

首先在GameObject(空对象)上创建slider(滑动条),把Image2(图像,血条)放入填充矩形中。然后创建脚本slid,再把slider(滑动条)放入脚本slid中(如图6)。

然后在人物或物体上创建脚本enmary输入血量和关联脚本slid,再把有slider(滑动条)的脚本放入脚本enmary中(如图7)。这样就基本完成了血条的制作。

图6
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
using UnityEngine.UI;

public class sild : MonoBehaviour
{
    public Slider silder;//定义一个Slider组件的变量名字叫做silder
    public void SetMaxHealth(int health)
    {
        silder.maxValue = health;
        silder.value = health;
    }
    public void SetCurrentHealth(int health)
    {
        silder.value = health;
    }
}//打怪血条掉血
图7
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
using UnityEngine.UI;

public class enmary : MonoBehaviour
{
    public int hp=5;
    public Text Xlinag;
    public sild a;
    void Start()
    {
        a.SetMaxHealth(hp);
        a.SetCurrentHealth(hp);     
    }
    // Update is called once per frame
    void Update()
    {      
    }
    private void OnTriggerEnter(Collider other)
    {
        if (other.tag =="bullet")
        {
            hp--;
            a.SetCurrentHealth(hp);
            if (hp == 0)
            {
                Destroy(gameObject);
            }
            Xlinag.text = "血量:" +hp;
        } 
    }
}//血量
  • 感言: 我本人也是个新手,如果有哪里不正确的,请大家多多指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值