目录
一.目的
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.代码 using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;/// /// 功能:显示敌人的名字条/// public class MyEnemy_name_bar : MonoBehaviour{ /// obj:姓名条预制件 [Tooltip("obj:姓名条预制件")] [Header("obj:姓名条预制件")] public GameObject obj_name_bar; /// obj:姓名条实例化 private GameObject obj_name_bar_Instantiate; /// Vector3:敌人的屏幕坐标 private Vector3 EnemySceenPosition; /// Vector3:姓名条和敌人屏幕坐标的偏移 [Tooltip("Vector3:姓名条和敌人屏幕坐标的偏移")] [Header("Vector3:姓名条和敌人屏幕坐标的偏移")] public Vector3 vec3_nameBarAndEnemy_offset; /// float:SmoothDamp的时间 [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(); } /// /// 功能:通过敌人标签修改Text的内容,也就是修改姓名条的内容 /// void SetSetName(string _strName) { obj_name_bar_Instantiate.GetComponent().text = _strName; } /// /// 功能:设置姓名条跟随敌人移动 /// 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.运行效果 总结:如果要优化,可以将Sprite一直垂直于相机,这样能看到最完整的图片。
1.创建2DObject的Sprite 创建2DObject的Sprite制作好图片,然后将图片拖到内部,