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

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.kler.cn/a/510371.html

相关文章:

  • opencv_KDTree_搜索介绍及示例
  • 【QT】: 初识 QWidget 控件 | QWidget 核心属性(API) | qrc 文件
  • LINUX 内核设计于实现 阅读记录(2025.01.14)
  • Armv8/Armv9架构从入门到精通-介绍
  • 如何将本地 Node.js 服务部署到宝塔面板:完整的部署指南
  • docker 基础语法学习,K8s基础语法学习,零基础学习
  • springboot基于微信小程序的智慧乡村政务服务系统
  • 大数据治理:提升数据质量与合规性,助力企业数字化转型
  • 【Linux系统编程】—— 深入理解Linux进程优先级与调度机制
  • Python数据分析案例70——基于神经网络的时间序列预测(滞后性的效果,预测中存在的问题)
  • 3D 视觉语言推理中的态势感知
  • “提升大语言模型推理与规划能力的策略:思维链提示与由少至多提示”
  • 数据库基础练习1(创建表,设置外键,检查,不为空,主键等约束)安装mysql详细步骤
  • ROS通信机制全解析
  • 免签支付工具分享
  • Redis延迟队列详解
  • Mysql InnoDB B+Tree是什么?
  • Spring Boot 3.4.x 和 Micrometer 2.0 的结合 案例 以及使用方法
  • Git下载安装
  • C# 中的 HashSet<T>
  • Java调用C/C++那些事(JNI)
  • 【算法】算法基础课模板大全——第二篇
  • 各种获取数据接口
  • 基于python的财务数据分析与可视化设计与实现
  • Python Pyside6 加Sqlite3 写一个 通用 进销存 系统 初型
  • Unity3D BEPUphysicsint定点数3D物理引擎详解