Unity中如何制作血条或头顶名称

目录

一.目的

1.想知道:Unity中如何制作血条或头顶名称

二.参考

1.Unity3d制作血条的三种方法

三.操作:一:效果不好(因为我的飞机是不断飞行的):头顶名称

1.运行结果:效果不好

1.代码

1.Unity设置

三.操作:二:完成(不使用代码):头顶名称

1.运行效果

1.创建2DObject的Sprite


一.目的

1.想知道:Unity中如何制作血条或头顶名称

 

二.参考

1.Unity3d制作血条的三种方法

https://gameinstitute.qq.com/community/detail/120938

  1. 总结:待检测

 

三.操作:一:效果不好(因为我的飞机是不断飞行的):头顶名称

1.运行结果:效果不好

运行结果

 

1.代码

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

using UnityEngine.UI;

/// <summary>
/// 功能:显示敌人的名字条
/// </summary>
public class MyEnemy_name_bar : MonoBehaviour
{
    /// <summary>obj:姓名条预制件</summary>
    [Tooltip("obj:姓名条预制件")]
    [Header("obj:姓名条预制件")]
    public GameObject obj_name_bar;

    /// <summary>obj:姓名条实例化</summary>
    private GameObject obj_name_bar_Instantiate;

    /// <summary>Vector3:敌人的屏幕坐标</summary>
    private Vector3 EnemySceenPosition;

    /// <summary>Vector3:姓名条和敌人屏幕坐标的偏移</summary>
    [Tooltip("Vector3:姓名条和敌人屏幕坐标的偏移")]
    [Header("Vector3:姓名条和敌人屏幕坐标的偏移")]
    public Vector3 vec3_nameBarAndEnemy_offset;

    /// <summary>float:SmoothDamp的时间</summary>
    [Tooltip("float:SmoothDamp的时间")]
    [Header("float:SmoothDamp的时间")]
    [Range(0,0.1f)]
    public float fSmoothTime=0.001f;

    void Start()
    {
        //把游戏物体的世界坐标转换为屏幕坐标  
        EnemySceenPosition = Camera.main.WorldToScreenPoint(transform.position);

        //创建一个姓名条
        obj_name_bar_Instantiate = Instantiate(obj_name_bar, EnemySceenPosition, Quaternion.identity);

        //设置姓名条的父物体  
        GameObject obj_Canvas_nameBar = GameObject.Find("Canvas_nameBar");
        if (obj_Canvas_nameBar)
        {
            obj_name_bar_Instantiate.transform.SetParent(obj_Canvas_nameBar.transform);
        }
        else
        {
            Debug.LogError("姓名条Canvas_nameBar没有找到!");
        }

        switch (this.tag)
        {
            case "Enemy_f22":
                SetSetName("美军F22");
                break;
            default:
                break;
        }

    }

    void Update()
    {
        //没帧都去执行使血条跟随物体  
        SetNameBarFollowEnemy();
    }

    /// <summary>
    /// 功能:通过敌人标签修改Text的内容,也就是修改姓名条的内容
    /// </summary>
    void SetSetName(string _strName)
    {
        obj_name_bar_Instantiate.GetComponent<Text>().text = _strName;
    }

    /// <summary>
    /// 功能:设置姓名条跟随敌人移动
    /// </summary>
    void SetNameBarFollowEnemy()
    {
        //测试:1:完成(but:太抖了):姓名条跟随敌人移动
        EnemySceenPosition = Camera.main.WorldToScreenPoint(transform.position) + vec3_nameBarAndEnemy_offset;//把物体坐标转换为屏幕坐标,修改偏移量
        obj_name_bar_Instantiate.transform.position = EnemySceenPosition;

        测试:2:待检测:姓名条跟随敌人移动+解决太抖的事情
        //EnemySceenPosition = Camera.main.WorldToScreenPoint(transform.position) + vec3_nameBarAndEnemy_offset;//把物体坐标转换为屏幕坐标,修改偏移量

        //Vector3 currentVelocity = new Vector3(0, 0, 0);
        //Vector3 cameraVelocity = Vector3.zero;

        //obj_name_bar_Instantiate.transform.position=Vector3.SmoothDamp(obj_name_bar_Instantiate.transform.position, EnemySceenPosition, ref cameraVelocity, fSmoothTime);

    }

}

 

1.Unity设置

 

三.操作:二:完成(不使用代码):头顶名称

1.运行效果

  1. 总结:如果要优化,可以将Sprite一直垂直于相机,这样能看到最完整的图片。

运行效果

 

1.创建2DObject的Sprite

  1. 创建2DObject的Sprite
  2. 制作好图片,然后将图片拖到内部,

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值