【NGUI】头顶血条(2D与3D的实现)

前言
游戏中的头顶血条是一种常见的小功能,一般游戏会要求做2D的头顶血条,这是因为这样能保证UI的大小不变,图片和文字不会产生变形引起的其他效果;反过来,3D的头顶血条会由于透视的原因会有近大远小的效果,看起来会更真实。
实现
资源的制作上,2D血条与3D血条都一样,需要注意的是,实现3D血条时需要将场景camera的CullingMask选中血条所在的图层即可,同时将UI camera的cullingMask血条所在的图层去掉,不然会同时出现两个血条。这里的制作血条的图层名称为HeadBlood.
这里写图片描述

源代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class HeadBlood : MonoBehaviour 
{
    public Camera mainCamera;
    public Camera uiCamera;
    public GameObject headBlood;

    void Update () 
    {
        //3d head blood
        Transform bloodPos = headBlood.transform;                                                                           //血条位置
        Vector3 targetPos = gameObject.transform.position;                                                                  //capsule的位置

        bloodPos.position = targetPos;
        bloodPos.localPosition = new Vector3(bloodPos.localPosition.x, bloodPos.localPosition.y + 600f, bloodPos.localPosition.z);      //600f用来调整高度

        bloodPos.transform.forward = mainCamera.transform.forward;                                                          //使血条朝向摄像机

        //2d head blood
        //Transform bloodPos = headBlood.transform;
        //Vector3 targetPos = gameObject.transform.position;
        //targetPos.y += 2f;                                                                                                //+2f用于调整高度

        //targetPos = mainCamera.WorldToScreenPoint(targetPos);                                                             //主摄像机 从世界坐标转到屏幕坐标
        //if (targetPos.z < 0)                                                                                              //忽略在摄像机后面
        //{
        //    return;
        //}
        //targetPos.z = 0;
        //targetPos = uiCamera.ScreenToWorldPoint(targetPos);                            ,                                   //UI摄像机 从屏幕坐标转到世界坐标
        //bloodPos.position = new Vector3(targetPos.x, targetPos.y, 0f);
    }
}

坐标转换规则,可以参见: Unity 与 NGUI 坐标转换原理
2D血条:
2D血条
可以看到血条的尺寸没有变化

3D血条:
3D血条

猜你喜欢

转载自blog.csdn.net/u010832643/article/details/72582175
今日推荐