第一步骤安装并导入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
如果这篇文章对你有帮助欢迎点赞支持哦!