当前位置: 首页 > news >正文

Unity中实现伤害跳字效果(简单好抄)

第一步骤安装并导入Dotween插件(也可以不用导入之后直接下载我的安装包)

官网DOTween - 下载

第二步: 制作跳字预制体

 建议把最佳适应打开,这样就不怕数字太大显示不全了。

第三步:创建一个空对象并编写脚本JumpNumber ,并将脚本拖到空对象上,将跳字预制体也拖上去。

 这个脚本会接受3个参数,位置(世界坐标),伤害多少,是否暴击三个参数。然后在屏幕上生成伤害跳字。

using DG.Tweening;
using UnityEngine;
using UnityEngine.UI;public class JumpNumber : MonoBehaviour
{public GameObject Number; // 跳字预制体private Camera mainCamera;//主摄像机//单例模式public static JumpNumber instance;private void Awake(){// 单例模式的简单实现,确保JumpNumber在场景中为唯一实例if (instance == null){instance = this;}else{Destroy(gameObject);}// 自动获取主摄像机mainCamera = GameObject.FindWithTag("MainCamera").GetComponent<Camera>();}//传入目标物体,跳字数字,是否暴击public void ShowJumpNumber(GameObject behitGameObject, float number, bool crit){if (mainCamera == null){Debug.LogError("Main Camera not found!");return;}// 使用目标物体的位置Vector3 worldPosition = behitGameObject.transform.position;//将x轴左右偏移一点worldPosition.x += Random.Range(-1f, 1f);//世界坐标转屏幕坐标Vector3 screenPosition = mainCamera.WorldToScreenPoint(worldPosition);//实例化预制体GameObject numberInstance = Instantiate(Number, screenPosition, behitGameObject.transform.rotation);numberInstance.transform.position = screenPosition;//查找画布的位置GameObject Canvas = GameObject.Find("Canvas");numberInstance.gameObject.transform.SetParent(Canvas.transform);//将浮点型的number转换为整型number = (int)number;// 设置为最顶层,防止玩家或怪物挡住跳字numberInstance.transform.SetAsLastSibling();numberInstance.GetComponent<Text>().text = number.ToString();//区分是否暴击Color color = Color.white;//设置字体大小Number.GetComponent<Text>().fontSize = 25;if (crit) {//暴击字体颜色color = Color.red;//设置字体大小Number.GetComponent<Text>().fontSize = 50;}numberInstance.GetComponent<Text>().color = color;// 使用 DOTween 让number进行移动从Y=0移动到y=800,然后销毁//设置一个浮动范围//OnComplete()是动画完成后的回调函数int jumpfloat = Random.Range(0, 100);numberInstance.transform.DOMoveY(numberInstance.transform.position.y + 100, 0.5f).OnComplete(() => Destroy(numberInstance));}
}

 

第4步:创建一个2D对象,并编写测试脚本加到这个2D对象上

这个测试脚本会在1——100生成随机数,并且大于50的时候将会是暴击效果。 

using UnityEngine;public class TextJumpNumber : MonoBehaviour
{void Update(){if (Input.GetKeyDown(KeyCode.Space)){int jumpNumbernum = Random.Range(1, 101);//生成随机数字bool crit = jumpNumbernum > 50;//判断是否爆击JumpNumber.instance.ShowJumpNumber(gameObject, jumpNumbernum, crit);}}
}

 第五步:运行游戏,按下空格就会看到生成了伤害跳字。

项目包 https://github.com/laozhupeiqia/JumpNumber.git

 如果这篇文章对你有帮助欢迎点赞支持哦!

http://www.lryc.cn/news/523708.html

相关文章:

  • GaussDB日常维护操作
  • redis实现限流
  • 基于SpringBoot和PostGIS的各国及所属机场信息检索及可视化实现
  • python http server运行Angular 单页面路由时重定向,解决404问题
  • GPT-4o背后的语音技术
  • 微透镜阵列精准全检,白光干涉3D自动量测方案提效70%
  • Spring boot框架下的RocketMQ消息中间件
  • 记录一次 centos 启动失败
  • C++学习第五天
  • openharmony标准系统方案之瑞芯微RK3568移植案例
  • 深入理解 SSH 端口转发:本地 vs 远程 vs 动态转发
  • postman请求参数化
  • 基于 WEB 开发的汽车养护系统设计与实现
  • Nginx正向代理配置
  • 本地仓库管理之当前分支内的操作
  • 《内网穿透:网络拓展与安全防护的平衡艺术》
  • 【python写个可以运行的2048小游戏】
  • 【Flink系列】9. Flink容错机制
  • DETR论文阅读
  • 关于vite+vue3+ts项目中env.d.ts 文件详解
  • 如何优化Elasticsearch大文档查询?
  • Kotlin Bytedeco OpenCV 图像图像54 透视变换 图像矫正
  • Linux中DataX使用第一期
  • [Qt]事件-鼠标事件、键盘事件、定时器事件、窗口改变事件、事件分发器与事件过滤器
  • 关于机器学习的一份总结
  • 推荐一个开源的轻量级任务调度器!TaskScheduler!
  • 【18】Word:明华中学-儿童医保❗
  • 如何用selenium来链接并打开比特浏览器进行自动化操作(1)
  • 基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
  • 读spring官方文档的一些关键知识点介绍