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

文章目录

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


前言

通过使用 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脚本

在这里插入图片描述

三、效果展示

请添加图片描述


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/190448.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java SE】继承

学习完了类之后&#xff0c;我们将继续学习一个Java中的重点内容“继承” 继承 1.1 为什么需要继承 举例&#xff1a; 在Cat类中和Dog类中我们发现有很多一样的地方&#xff0c;这样写太浪费空间和内存了 我们可以把它相同的地方都用一个类来表示&#xff0c;并且使用它1.2 继…

IPSecGRE

IPSec&GRE 手工方式建立IPSec隧道组网实验拓扑配置步骤第一步配置IP地址第二步配置静态路由第三步配置IPSec 抓包测试 GRE Over IPSec功能的配置组网实验拓扑配置命令 配置GRE使用静态路由组网图实验拓扑配置步骤1.配置RouterA2.配置RouterB3.配置RouterC4.验证配置结果 手…

Wordpress页面生成器:Elementor 插件制作网站页面教程(图文完整)

本文来教大家怎么使用Wordpress Elementor页面编辑器插件来自由创建我们的网页内容。很多同学在面对建站的时候,一开始都是热血沸腾信心满满的,等到实际上手的时候就会发现有很多问题都是无法解决的,希望本篇Elementor插件使用指南能够帮助到你。 Wordpress Elementor页面编…

git拉取普通idea Java项目module没有build的问题

在不断完成一个项目的时候&#xff0c;会有不断新加的module&#xff0c;我们用git拉取时会发生没有识别新module的情况。 解决方法是右键项目名称&#xff0c;然后点击Open Module Settings 接下来&#xff0c;点击Module&#xff0c;加号&#xff0c;新建Module的名字就是在g…

LeetCode47-全排列II-剪枝逻辑

参考链接: &#x1f517;:卡尔的代码随想录:全排列II 这里第一层,used只有一个元素为1,代表只取出了1个元素作为排列,第二层used有两个元素为1,代表取出了2个元素作为排列,因为数组有序,所以重复的元素都是挨着的,因此可以使用如下语句去重. 其中visit[i-1]False的话,就是代表…

教程:使用 Keras 优化神经网络

一、介绍 在 我 之前的文章中&#xff0c;我讨论了使用 TensorFlow 实现神经网络。继续有关神经网络库的系列文章&#xff0c;我决定重点介绍 Keras——据说是迄今为止最好的深度学习库。 我 从事深度学习已经有一段时间了&#xff0c;据我所知&#xff0c;处理…

Vue项目

使用vs打开Vue项目 运行&#xff1a; 终端命令&#xff1a; npm run serve初次打开的是App.vue页面 修改服务器端口 vue.config.js const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,devServer: { //增…

Pycharm中添加Python库指南

一、介绍 Pycharm是一款为Python开发者提供的集成开发环境&#xff08;IDE&#xff09;&#xff0c;支持执行、调试Python代码&#xff0c;并提供了许多有用的工具和功能&#xff0c;其中之一就是在Pycharm中添加Python库。 添加Python库有许多好处&#xff0c;比如能够增加开…

Spring 设计模式-简洁版

Java 中包括以下设计模式&#xff1a; 其中Spring 用到的设计模式 1.简单工厂-BeanFactory 2.工厂方法FactoryBean 3.单例模式Bean实例 4.适配器模式SpringMVC中的HandlerAdatper 5.装饰器模式BeanWrapper 6.代理模式_AOP底层 7.观察者模式-spring的事件监听 8.策略横式exclud…

2、LeetCode之两数相加

给你两个非空的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照逆序的方式存储的&#xff0c;并且每个节点只能存储一位数字。请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。你可以假设除了数字0之外&#xff0c;这两个数都不会以0开头。 输入&am…

电脑软件:推荐一款非常实用的固态硬盘优化工具

目录 一、软件简介 二、工作原理 三、功能介绍 3.1、优化SSD设置 3.2、查看驱动器信息 3.3、查看SMART数据 3.4、停用Windows事件日志记录 3.5、禁用Windows碎片整理 3.6、时间戳停用 3.7、禁用引导文件的碎片整理 3.8、关闭短名称 四、使用教程 4.1 安装说明 4.…

第五届全国高校计算机能力挑战赛-程序设计挑战赛(C++)

代码输出结果题目&#xff0c;自己跟着敲一遍就行了&#xff01;&#xff01;&#xff01; 指针常量和常量指针的区别https://blog.csdn.net/qq_36132127/article/details/81940015?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170027731616800222813804%2522%2…