Unity 游戏飘字(伤害、状态等)

3d游戏中,角色或敌人受到伤害或者BUFF等处理需要特效,还需要飘字。下面将使用Unity预设来做飘字效果。

1、创建prefab(可以创建多种),以伤害为例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、飘字管理器:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;

public class FloatTextManager : MonoBehaviour
{
    private static FloatTextManager instance = null;
    private FloatTextManager() { }
    public static FloatTextManager GetInstance()
    {
        return instance;
    }

    /// <summary>
    /// 飘字时间
    /// </summary>
    float _floatTime = 1;

    /// <summary>
    /// 上漂幅度
    /// </summary>
    const float _up = 2.7f;

    /// <summary>
    /// 飘字
    /// </summary>
    /// <param name="str">文字</param>
    /// <param name="parent">挂点</param>
    public void Swpan(string str, Transform parent)
    {
        GameObject obj = GameObject.Instantiate(Resources.Load<GameObject>("FloatText/Word_hurt"));//优化-使用管理池创建
        Transform word = obj.transform;//设置字体挂点
        
        word.SetParent(parent);
        word.GetComponentInChildren<TextMesh>().text = str;

        Vector3 pos = new Vector3(BXRandomUtil.Range(-1.5f, 1.5f), BXRandomUtil.Range(0, 1), 0);
        word.localPosition = pos;

        Vector3 point = new Vector3(Screen.width / 2, 0, Screen.height / 2);
        word.LookAt(Camera.main.ScreenToWorldPoint(point));//字体和屏幕平行

        float posY = pos.y + _up;
        word.DOMoveY(posY, _floatTime).OnComplete(()=>{ GameObject.Destroy(obj1);//优化-使用管理池回收 });
    }
}

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用DOTween实现伤害可以通过以下步骤完成: 1. 创建一个伤害的预制体,可以包含一个Text组件来显示伤害。 2. 在代码中使用DOTween创建一个Tween对象,将伤害的位置从伤害来源点移动到目标位置,并在移动过程中改变伤害的透明度和缩放大小等属性。 3. 在Tween对象完成后,销毁伤害的预制体。 下面是一个示例代码: ```csharp public class DamageNumber : MonoBehaviour { public Text damageText; public float moveDuration = 1f; public float fadeDuration = 0.5f; public float scaleDuration = 0.5f; public float moveDistance = 50f; public Vector3 targetPosition; private void Start() { // 设置伤害的初始位置 transform.position = targetPosition + new Vector3(0f, moveDistance, 0f); // 创建Tween对象来移动伤害的位置 var moveTween = transform.DOMove(targetPosition, moveDuration); // 创建Tween对象来改变伤害的透明度 var fadeTween = damageText.DOFade(0f, fadeDuration); // 创建Tween对象来改变伤害的缩放大小 var scaleTween = transform.DOScale(2f, scaleDuration).SetEase(Ease.OutQuad); // 当Tween对象完成时,销毁伤害的预制体 moveTween.OnComplete(() => Destroy(gameObject)); // 启动Tween对象 moveTween.Play(); fadeTween.Play(); scaleTween.Play(); } public void SetDamageNumber(int damage) { // 设置伤害的文本 damageText.text = damage.ToString(); } } ``` 在游戏中,可以通过以下代码来创建并显示伤害: ```csharp public class Player : MonoBehaviour { public GameObject damageNumberPrefab; public void TakeDamage(int damage) { // 创建伤害的预制体 var damageNumber = Instantiate(damageNumberPrefab, transform.position, Quaternion.identity); // 设置伤害的值 var damageNumberComponent = damageNumber.GetComponent<DamageNumber>(); damageNumberComponent.SetDamageNumber(damage); // 设置伤害的目标位置 var targetPosition = transform.position + new Vector3(0f, 2f, 0f); damageNumberComponent.targetPosition = targetPosition; // 启动伤害的Tween动画 damageNumberComponent.Start(); } } ``` 当玩家受到伤害时,通过调用TakeDamage方法来显示伤害

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值