U3D实现连击效果
实现 效果
2023-09-11 14:19:57 时间
@作者 : SYFStrive
@博客首页 : HomePage
📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗
📌:觉得文章不错可以点点关注 👉:专栏连接🔗
👉 U3D案例库(🔥)
连击好处
- 连击是指在游戏中进行持续的操作。 在FTG类、ARPG类等游戏中,有的游戏设有连击系统。由于连击衔接的时间间隔在系统上有一定的设定,所以一般而言,连击是需要一定的技巧的。所以,在某些游戏中,连击的衔接及次数是衡量触手与否的重要标准。
- 攻击是一个靠普攻发挥威力的特技,进行普攻才会触发连击,所以如果使用的战法漏气了,还有连击效果来弥补,效果依然还是很可观的。
实现功能
案例说明:通过UI实现连击效果 👉 通过携程模拟连击效果的时间间隔 👉 通过DOTween、LeanTween简单完成连击的动画
插件下载
引入命名空间
DOTween需要引入命名空间 、LeanTween不需要引入命名空间直接使用、如 👇
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
使用到的变量
//分值
public int score { get; private set; }
[Header("===连击的值、时间间隔===")]
public float doubleScore;
private float intervalTime = 2;
private float lastTime;
[Space]
[Header("===连击的Spri、连击的Text===")]
public Image imageSpr;
public GameObject doubleScoreText;
[Space]
[Header("===连击分值效果===")]
[SerializeField] float fromScore;
[SerializeField] float toScore;
[SerializeField] float animationTime;
[SerializeField] Text scoreText;
初始化代码
public class ComboEffect : MonoBehaviour
{
private void Start()
{
score = 0;
lastTime = 0;
doubleScoreText.gameObject.SetActive(false);
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
DoubleHitDoubleScore();
}
}
}
完成连击值效果
#region 连击值效果
private void DoubleHitDoubleScore()
{
if (Time.time <= lastTime + intervalTime)
{
doubleScore++;
}
else
{
doubleScore = 0;
doubleScore++;
imageSpr.fillAmount = 1;
}
doubleScoreText.gameObject.SetActive(true);
doubleScoreText.transform.DOScale(Vector2.one * 3f, 0.2f).OnComplete(() => {
doubleScoreText.transform.DOScale(Vector2.one, 0.2f);
});
StartCoroutine(nameof(ImageFillAmountDoubleHit));
doubleScoreText.GetComponent<Text>().text =doubleScore * 1 + "连击";
lastTime = Time.time;
DoublehitScore();
}
IEnumerator ImageFillAmountDoubleHit()
{
float doubleValue = 1;
float currentScore = doubleScore;
while (doubleValue > 0)
{
if (currentScore == doubleScore)
{
doubleValue -= Time.deltaTime / intervalTime;
imageSpr.fillAmount = doubleValue;
}
else
{
StopCoroutine(nameof(ImageFillAmountDoubleHit));
StartCoroutine(nameof(ImageFillAmountDoubleHit));
}
yield return null;
}
doubleScore = 0;
doubleScoreText.gameObject.SetActive(false);
}
#endregion
完成连击分值效果
#region 连击分值效果
public void DoublehitScore()
{
fromScore = score;
toScore = fromScore + doubleScore * 100;
//参数:开始值、目标值、渐变的时间
LeanTween.value(fromScore, toScore,animationTime)
.setEase(LeanTweenType.easeInOutQuint)
.setOnUpdate((float _value) => { fromScore = _value; scoreText.text ="分值:"+fromScore.ToString("f6");});
score = (int)toScore;
}
#endregion
效果
本文到这里就结束了,大佬们的支持是我持续更新的最大动力,希望这篇文章能帮到大家💪
下篇文章再见ヾ( ̄▽ ̄)ByeBye
相关文章
- UWA学堂上新:《如何实现角色的自阴影效果》
- Java 数据结构(链表LinkedList增删改查、数组Vector、获取Vector最大值、交换Vector两成员位置、栈的实现、压栈出栈实现反转、队列Queue)
- Laravel框架实现无限极分类
- 实现Activity的滑动返回效果
- 自己定义控件:onDraw 方法实现仿 iOS 的开关效果
- python轨迹追踪、全链路日志追踪trace_id实现
- Vue - [完整源码] 实现分类菜单 + 轮播图组合布局效果,类似左侧菜单与右侧轮播图连接在一起的效果(当鼠标移入菜单时,侧边出现子菜单列表)常见于商城系统,示例代码注释详细开箱即用!
- 数据中心两种常用流量模型运用mininet的实现
- 查找树-- 基于后缀字典树实现字符串的模式查找
- AngularJS中实现显示或隐藏动画效果的3种方式
- java实现渐变效果工具
- SwiftUI中实现Snap Carousel效果旋转木马轮播滚动
- iOS 类似美团外卖 app 两个 tableView 联动效果实现
- vue-scroller的使用 实现下拉刷新 上拉加载初始效果
- 【转】redis 消息队列发布订阅模式spring boot实现
- Android使用ViewFlipper实现左右滑动效果面
- 贝塞尔曲线实现的购物车添加商品动画效果
- 一个窗口里包含一个iframe,点击iframe内的submit按钮,返回的视图总是显示在iframe中,我想要的效果是点击按钮后返回的视图是在浏览器窗口中...?asp.net mvc 的action中,不用js怎么实现??????????
- Unity 基础 之 OnMouse 简单实现 GameObject 和 UGUI 元素随着鼠标移动,拖动的效果
- flex 和 flexlib类库 实现 菜单和 TabNavigator (二)
- Java实现二分查找算法
- 关于Unity中NGUI的Tab商城、Scrollview和打字机效果的实现
- 协程的简单实现
- Vue使用Element-UI实现分页效果