DoTween的使用与详解
DOTween路径动画详解与使用
DoTween的运动方式
1、DOTween.To()方法
对变量做一个动画,通过插值的方式修改一个值的变化
using UnityEngine;
using System.Collections;
using DG.Tweening;//引入DoTween命名空间
public class GameStart : MonoBehaviour
{
public Vector3 myValue = new Vector3(0, 0, 0);
void Start()
{
//对变量做一个动画,通过插值的方式去修改一个值的变化
DOTween.To(() => myValue, x => myValue = x, new Vector3(10, 0, 0), 2);//用两秒的时间从0,0,0变化到10,10,10
//()=> myValue,表示返回值为myValue,x=>myValue=x,表示将系统计算好的x值(当前值到目标值的插值)赋给myValue,new Vector3(10,0,0),表示达到的目标值,2表示所需时间
}
2、控制Cube和UI面板的动画
1)、将脚本挂在Cube上,并且在Update方法中把myValue的值赋给当前位置,这样便实现了Cube从当前位置移动到了目标位置
using UnityEngine;
using System.Collections;
using DG.Tweening;//引入DoTween命名空间
public class GameStart : MonoBehaviour
{
public Vector3 myValue = new Vector3(0, 0, 0);
void Start()
{
//对变量做一个动画,通过插值的方式去修改一个值的变化
DOTween.To(() => myValue, x => myValue = x, new Vector3(10, 0, 0), 2);//用两秒的时间从0,0,0变化到10,10,10
//()=> myValue,表示返回值为myValue,x=>myValue=x,表示将系统计算好的x值(当前值到目标值的插值)赋给myValue,new Vector3(10,0,0),表示达到的目标值,2表示所需时间
}
void Update()
{
transform.position = myValue;//赋值给当前位置
}
2)、UI面板的移动
using UnityEngine;
using System.Collections;
using DG.Tweening;//引入DoTween命名空间
public class GameStart : MonoBehaviour
{
private Vector3 myValue = new Vector3(1500, 0, 0);
// public RectTransform TaskPanelTransform;//UGUI是通过RectTransform组件来控制移动属性的
void Start()
{
//对变量做一个动画,通过插值的方式去修改一个值的变化
DOTween.To(() => myValue, x => myValue = x, new Vector3(0, 0, 0), 2);//用两秒的时间从0,0,0变化到10,10,10
//()=> myValue,表示返回值为myValue,x=>myValue=x,表示将系统计算好的x值(当前值到目标值的插值)赋给myValue,new Vector3(10,0,0),表示达到的目标值,2表示所需时间
}
void Update()
{
transform.localPosition = myValue;//UGUI中坐标为局部坐标
}
}
3)、对float类型的值进行修改
public float myValue2=0;
void Start()
{
DOTween.To(() => myValue2, x => myValue2 = x, 10, 2);//表示将一个类型的值从0变为10,所需时间是2秒
}
3、小案例:用按钮控制UI面板的显示和隐藏
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using DG.Tweening;
public class MyButton : MonoBehaviour
{
private Button myButton;
private RectTransform taskPanelTransform;//UGUI是通过RectTransform组件来控制移动属性的
private bool isShow = false;
void Start()
{
myButton = transform.Find("Button").GetComponent<Button>();
taskPanelTransform = transform.Find("Panel").GetComponent<RectTransform>();
myButton.onClick.AddListener(OnClickBtn);//UGUI中监听按钮的方法
Tweener tweener = taskPanelTransform.DOLocalMove(new Vector3(0, 0, 0), 1);//修改的是局部坐标,默认动画完后会被销毁
//Tweener对象保存这个动画的信息,每次调用do类型的方法都会调用一个tweener对象,这个对象使用DoTween来管理
tweener.SetAutoKill(false);//把SetAutoKill自动销毁设置为false
tweener.Pause();//让动画在开始时暂停
}
public void OnClickBtn()
{
// taskPanelTransform.DOMove(new Vector3(0, 0, 0),1);//DOMove()方法是Dotween扩展的方法,表示经过1秒运动到0,0,0的位置(修改的是世界坐标)
if (isShow == false)
{
// taskPanelTransform.DOPlay();//让动画只播放一次
taskPanelTransform.DOPlayForward();//让动画向前播放
isShow = true;
}
else
{
taskPanelTransform.DOPlayBackwards();//倒放动画的方法
isShow = false;
}
}
}
FromTween:表示让物体从目标位置移动到当前位置,即等同于播放反向的移动动画
DOMoveX()、DOMoveY()、DOMoveZ()
transform.DOMoveX(5, 1);
From()
transform.DOMoveX(5, 1).From();//表示让物体从目标位置移动到当前位置
From(true)
transform.DOMoveX(5, 1).From(true);
DOLocalMoveX()、DOLocalMoveY()、DOLocalMoveZ()
Tweener tweener=transform.DOLocalMoveX(0, 2f);
SetEase()
Ease.InBack
tweener.SetEase(Ease.InBack);
Ease.InBounce
tweener.SetEase(Ease.InBounce);
Ease.OutBounce
tweener.SetEase(Ease.OutBounce);
SetLoops()
tweener.SetLoops(2);//表示动画的循环次数
OnComplete()
void Update()
{
if (Input.GetMouseButtonDown(0))
{
Tweener tweener = transform.DOLocalMoveX(0, 2f);//DoTween中所有对动画的设置都是通过对象Tweener来完成的
tweener.SetEase(Ease.OutBounce);//相当于一个落地之后弹跳的效果
tweener.SetLoops(2);//表示动画的循环次数
tweener.OnComplete(OnClick);//表示当前动画播放完之后调用的事件,相当于一个注册方法,参数为需要注册的方法
}
}
void OnClick()
{
print("sss");
}
DOText()
private Text text;
void Start ()
{
text = GetComponent<Text>();
}
void Update () {
if (Input.GetMouseButtonDown(0))
{
text.DOText("轰隆隆……\n大地在颤抖,\n这是哪里?\n为什么我的头会这么痛……\n……谁来救救我……",10);//表示再两秒内显示参数内文本(打字机效果)
}
}
DOShakePosition()
if (Input.GetMouseButtonDown(0))
{
transform.DOShakePosition(0.8f);//表示震动时间是0.8秒,震动方向随机
transform.DOShakePosition(0.8f,new Vector3(1,1,0));//表示震动时间是0.8秒,震动方向为x和y方向,震动强度为1
}
DOColor()、DOFade()
if (Input.GetMouseButtonDown(0))
{
text.DOText("轰隆隆……\n大地在颤抖,\n这是哪里?\n为什么我的头会这么痛……\n……谁来救救我……", 10);//表示再两秒内显示参数内文本(打字机效果)
text.DOColor(Color.blue, 1f);//渐变颜色动画
text.DOFade(1, 5);//渐变透明度动画参数为(透明度,渐变时间),其中0为不透明,1为完全透明
}
DoTween插件的可视化操作
如何在脚本中控制DoTweenAnimation动画脚本的播放
using UnityEngine;
using System.Collections;
using DG.Tweening;
using UnityEngine.UI;
public class Panel : MonoBehaviour
{
private DOTweenAnimation tweenAnimation;
private Button _btnButton;
private bool isShow = false;
void Start ()
{
tweenAnimation = GetComponent<DOTweenAnimation>();
_btnButton =transform.parent.Find("Button").GetComponent<Button>();
_btnButton.onClick.AddListener(OnClickBtn);
}
void OnClickBtn()
{
if (isShow==false)
{
tweenAnimation.DOPlayForward();
isShow = true;
}
else
{
tweenAnimation.DOPlayBackwards();
isShow = false;
}
}
}
DoTweenPath路径编辑器
添加按钮控制动画的播放
DoTween的使用与详解相关推荐
- 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)
首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...
- JVM年轻代,老年代,永久代详解
秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...
- docker常用命令详解
docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...
- 通俗易懂word2vec详解词嵌入-深度学习
https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...
- 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法
深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...
- CUDA之nvidia-smi命令详解---gpu
nvidia-smi是用来查看GPU使用情况的.我常用这个命令判断哪几块GPU空闲,但是最近的GPU使用状态让我很困惑,于是把nvidia-smi命令显示的GPU使用表中各个内容的具体含义解释一下. ...
- Bert代码详解(一)重点详细
这是bert的pytorch版本(与tensorflow一样的,这个更简单些,这个看懂了,tf也能看懂),地址:https://github.com/huggingface/pytorch-pretr ...
- CRF(条件随机场)与Viterbi(维特比)算法原理详解
摘自:https://mp.weixin.qq.com/s/GXbFxlExDtjtQe-OPwfokA https://www.cnblogs.com/zhibei/p/9391014.html C ...
- pytorch nn.LSTM()参数详解
输入数据格式: input(seq_len, batch, input_size) h0(num_layers * num_directions, batch, hidden_size) c0(num ...
最新文章
- NC:多样性激发的确定性细菌装配过程限制了群落功能
- vue 心跳监控_vue websocket 加心跳
- Redis 管道技术——Pipeline
- Java字符串截取(substring)
- 结构体指针大小_C语言100题集合013-指向结构体变量的指针
- Linux 下 Open××× 安装和 Windows Open××× GUI 安装笔记
- linux平台h5手游源码下载,十年经典大天使之剑H5手游源码手工端+内充+搭建教程...
- 如何从seo的维度来选择网站的关键词
- php 四级联动插件,php四级联动
- java xheditor,xhEditor不能支持本map片上传,请问
- 计算机类外文翻译论文,计算机专业毕业论文 外文翻译.doc
- Unity模型与动画
- 毕业设计 - 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]
- 十年经验的软件测试P7总监 给转行自动化软件测试六条学习建议
- android拷机工具,【AndroidFramework】【EMMC拷机】混合拷机时盒子待机
- php直播源码,图片亮度
- GitHub构建Maven依赖仓库
- java双人游戏_Java 简易双人坦克游戏实现
- 使用DB2 pureXML管理蛋白质数据库
- WPF登录界面demo