当前位置:   article > 正文

Unity中如何制作血条或头顶名称_unity 3d血条跟随

unity 3d血条跟随

目录

一.目的

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.代码

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. /// <summary>
  6. /// 功能:显示敌人的名字条
  7. /// </summary>
  8. public class MyEnemy_name_bar : MonoBehaviour
  9. {
  10. /// <summary>obj:姓名条预制件</summary>
  11. [Tooltip("obj:姓名条预制件")]
  12. [Header("obj:姓名条预制件")]
  13. public GameObject obj_name_bar;
  14. /// <summary>obj:姓名条实例化</summary>
  15. private GameObject obj_name_bar_Instantiate;
  16. /// <summary>Vector3:敌人的屏幕坐标</summary>
  17. private Vector3 EnemySceenPosition;
  18. /// <summary>Vector3:姓名条和敌人屏幕坐标的偏移</summary>
  19. [Tooltip("Vector3:姓名条和敌人屏幕坐标的偏移")]
  20. [Header("Vector3:姓名条和敌人屏幕坐标的偏移")]
  21. public Vector3 vec3_nameBarAndEnemy_offset;
  22. /// <summary>float:SmoothDamp的时间</summary>
  23. [Tooltip("float:SmoothDamp的时间")]
  24. [Header("float:SmoothDamp的时间")]
  25. [Range(0,0.1f)]
  26. public float fSmoothTime=0.001f;
  27. void Start()
  28. {
  29. //把游戏物体的世界坐标转换为屏幕坐标
  30. EnemySceenPosition = Camera.main.WorldToScreenPoint(transform.position);
  31. //创建一个姓名条
  32. obj_name_bar_Instantiate = Instantiate(obj_name_bar, EnemySceenPosition, Quaternion.identity);
  33. //设置姓名条的父物体
  34. GameObject obj_Canvas_nameBar = GameObject.Find("Canvas_nameBar");
  35. if (obj_Canvas_nameBar)
  36. {
  37. obj_name_bar_Instantiate.transform.SetParent(obj_Canvas_nameBar.transform);
  38. }
  39. else
  40. {
  41. Debug.LogError("姓名条Canvas_nameBar没有找到!");
  42. }
  43. switch (this.tag)
  44. {
  45. case "Enemy_f22":
  46. SetSetName("美军F22");
  47. break;
  48. default:
  49. break;
  50. }
  51. }
  52. void Update()
  53. {
  54. //没帧都去执行使血条跟随物体
  55. SetNameBarFollowEnemy();
  56. }
  57. /// <summary>
  58. /// 功能:通过敌人标签修改Text的内容,也就是修改姓名条的内容
  59. /// </summary>
  60. void SetSetName(string _strName)
  61. {
  62. obj_name_bar_Instantiate.GetComponent<Text>().text = _strName;
  63. }
  64. /// <summary>
  65. /// 功能:设置姓名条跟随敌人移动
  66. /// </summary>
  67. void SetNameBarFollowEnemy()
  68. {
  69. //测试:1:完成(but:太抖了):姓名条跟随敌人移动
  70. EnemySceenPosition = Camera.main.WorldToScreenPoint(transform.position) + vec3_nameBarAndEnemy_offset;//把物体坐标转换为屏幕坐标,修改偏移量
  71. obj_name_bar_Instantiate.transform.position = EnemySceenPosition;
  72. 测试:2:待检测:姓名条跟随敌人移动+解决太抖的事情
  73. //EnemySceenPosition = Camera.main.WorldToScreenPoint(transform.position) + vec3_nameBarAndEnemy_offset;//把物体坐标转换为屏幕坐标,修改偏移量
  74. //Vector3 currentVelocity = new Vector3(0, 0, 0);
  75. //Vector3 cameraVelocity = Vector3.zero;
  76. //obj_name_bar_Instantiate.transform.position=Vector3.SmoothDamp(obj_name_bar_Instantiate.transform.position, EnemySceenPosition, ref cameraVelocity, fSmoothTime);
  77. }
  78. }

 

1.Unity设置

 

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

1.运行效果

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

运行效果

 

1.创建2DObject的Sprite

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/895360
推荐阅读
相关标签
  

闽ICP备14008679号