unity 伤害值显示(飘字)效果
一:创建伤害预制件
①导入TextMeshPro插件,如果是第一次导入,以下两个都需要导入
②将TextMeshPro中的Canvas调整为世界模式,并将主摄像机推入
伤害预制件内部结构为:
③调整TMP(text)为合适的大小
调整好后可以放到物体上面的坐标看看大小
④将伤害拖入Assets中变成预制件
二:制作伤害动画
①打开动画面板
②点击伤害预制件中的TMP(Text)后添加动画
③保存动画位置
④录制动画
点击录制按钮,开启录制,为红色是表示正在录制
⑤在30帧时操作,修改Text(TMP)Y轴坐标,也就是向上移动了,修改缩放比例为1.5
⑥60帧时操作,将Y轴修改为10,缩放比例修改为2
然后结束录制即可,当然你也可以自由发挥想象力
再点一下红色按钮即可结束录制
查看效果
如果显示出来位置有点高,则调整动画中的Y轴0 30 60帧率的高度即可
三:代码调用
using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; public class test : MonoBehaviour { Transform cam; public GameObject damagePrefab;//伤害预制件 TextMeshProUGUI tmp;//伤害显示文本对象 public Transform damageHitPos;//显示伤害对象的位置 public Transform damageClone; void Start() { //找组件 cam = Camera.main.transform; tmp = damagePrefab.transform.GetChild(0).GetChild(0).GetComponent<TextMeshProUGUI>(); } void Update() { System.Random ran = new System.Random(); int ranNum = ran.Next(1, 99); if (Input.GetMouseButtonDown(0)) ShowDamageOnClicked(ranNum); } public void ShowDamageOnClicked(int damage) { damageClone = Instantiate(damagePrefab, damageHitPos).transform;//生成预制件 if(damageClone!=null){ Destroy(damageClone.gameObject,1f);//删除生成的伤害克隆体 } tmp.text = $"- {damage}";//为显示的文本赋值 } private void LateUpdate() { if(damageClone!=null){ damageClone.position = damageHitPos.position;//位置跟随 damageClone.forward = cam.forward;//让生成的伤害永远面对屏幕,不然是反方向显示 } } }
时间若流水,恍惚间逝去
分类:
Unity3D
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤