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

基于DOTween插件实现金币飞行到指定位置功能

文章目录

  • 前言
  • 一、DOTween是什么?
  • 二、使用步骤
    • 1.导入DOTween插件
      • 在Unity官方插件商店找到`DOTween`插件
      • 导入DOTween插件
      • 启用DOTween插件
    • 2.代码逻辑
      • 金币飞行代码
      • 控制飞行效果代码
    • 3.物体配置
      • 1.物体上装配CoinEffect脚本
      • 2.在金币预制体上装配FlyControl脚本
  • 三、效果展示


var code = “7307db93-b489-4d94-a4d1-ead66b1b3fa0”

前言

通过使用 DOTween 插件实现金币两段飞行效果,第一段在物体周围随机生成指定数量的金币,第二段将金币移动到指定位置。


一、DOTween是什么?

DoTween 是Unity的一款插件,主要用于控制物体的移动和变换。

二、使用步骤

1.导入DOTween插件

在Unity官方插件商店找到DOTween插件

https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676
在这里插入图片描述

导入DOTween插件

在这里插入图片描述

启用DOTween插件

请添加图片描述

2.代码逻辑

金币飞行代码

    public class FlyControl : MonoBehaviour {private Vector3 endPos;private Vector3 startPos;private Vector3 vec1;private Vector3 vec2;[NonSerialized]public bool fly = true;public GameObject coin;//第一段位移 控制随机出现在父物体周围public void FlyCoinOne() {startPos = transform.position;float randomX = Random.Range(-50, 50);float randomY = Random.Range(-50, 50);vec1 = startPos + new Vector3(randomX, randomY, 0);coin.transform.DOMove(vec1, 0.3f).SetTarget(this);}//第二段位移 移动到指定位置public void FlyCoinTwo(Transform targetPos) {endPos = targetPos.position;vec2 = endPos;coin.transform.DOMove(vec2, 0.6f).SetTarget(this);float timer1 = 0;DOTween.To(() => timer1, x => timer1 = x, 1, 0.3f).OnStepComplete(() => { this.gameObject.GetComponent<Image>().DOFade(0, 0.3f).SetTarget(this); });float timer = 0;DOTween.To(() => timer, x => timer = x, 1, 0.61f).OnStepComplete(() => {fly = false;//Destroy(this.gameObject);});}}

控制飞行效果代码

 public class CoinEffect : MonoBehaviour{[LabelText("金币预制体")] public GameObject prefab;public Transform parent;[LabelText("金币数量")] public int num;[LabelText("最终目的地")] public Transform targetPos;[LabelText("金币飞行速度")] public float time = 1;private int childNum = 0;public bool isEnd = false;private List<FlyControl> ts = new List<FlyControl>();public void StartEffect(){for (int i = 0; i < num; i++){GameObject go = Instantiate(prefab, parent, false);go.transform.position = gameObject.transform.position;FlyControl cc = go.GetComponent<FlyControl>();if (cc != null){cc.gameObject.SetActive(true);ts.Add(cc);childNum++;}ts[i].FlyCoinOne();}}IEnumerator StartEffect1(){yield return new WaitForSeconds(0.6f);for (int i = 0; i <= ts.Count; i++){this.DOKill();yield return new WaitForSeconds(0.1f);var rm = Random.Range(0, ts.Count);yield return new WaitForSeconds(0.01f);ts[rm].FlyCoinTwo(targetPos);// ts.Remove(ts[rm]);Debug.Log(rm);i = 0;}MyLogger.PrintLog("飞行结束");}/// <summary>/// 金币飞行效果,在Update里面调用/// </summary>public void CoinEffectShow(){//第一次飞行StartEffect();//第二次飞行StartCoroutine(StartEffect1());}private void Update(){if (childNum == 0){return;}foreach (var control in ts){if (control.fly){return;}}isEnd = true;if (Input.GetKeyDown(KeyCode.R)){CoinEffectShow();}}}

3.物体配置

1.物体上装配CoinEffect脚本

在这里插入图片描述

2.在金币预制体上装配FlyControl脚本

在这里插入图片描述

三、效果展示

请添加图片描述

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

相关文章:

  • python-opencv 培训课程作业
  • 【Go入门】并发
  • Java虚拟机运行时数据区结构详解
  • 华为OD机试 - 转盘寿司(Java JS Python C)
  • 【ATTCK】MITRE Caldera-emu插件
  • 23111709[含文档+PPT+源码等]计算机毕业设计基于Spring Boot智能无人仓库管理-进销存储
  • SDUT OJ《算法分析与设计》贪心算法
  • 金融业务系统: Service Mesh用于安全微服务集成
  • Linux下快速确定目标服务器支持哪些协议和密码套件
  • LeetCode100122. Separate Black and White Balls
  • 系列二十六、idea安装javap -c
  • nginx 如何根据IP做限流,以及 nginx 直接返回 json 格式数据
  • C语言链式栈
  • 【Go入门】 Go的http包详解
  • 解决k8s node节点报错: Failed to watch *v1.Secret: unknown
  • 日志维护库:loguru
  • 【Go入门】 Go如何使得Web工作
  • 汽车虚拟仿真视频数据理解--CLIP模型原理
  • 【Web】Ctfshow SSTI刷题记录1
  • 【广州华锐互动】VR可视化政务服务为公众提供更直观、形象的政策解读
  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(七)
  • Sql Server 2017主从配置之:发布订阅
  • 聊聊logback的EvaluatorFilter
  • 解决vue 部分页面缓存,部分页面不缓存的问题
  • 修完这个 Bug 后,MySQL 性能提升了 300%
  • 【C/PTA】数组进阶练习(二)
  • Mysql MMM
  • GDPU 数据结构 天码行空10
  • CD36 ; + Lectin;
  • Git 分支管理