【Unity 工具,简单学习】DoTween,脚本控制动画工具

这篇具有很好参考价值的文章主要介绍了【Unity 工具,简单学习】DoTween,脚本控制动画工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简单介绍

  • 连接
    什么是Tween Engine —— 作者的blog(英文)
  • 它能做什么?
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎
DOTween is a fast, efficient, fully type-safe object-oriented animation engine, 
optimized for C# 
(it is also the evolution of HOTween, author's previous Unity tween engine).
  • 简单来说,就是用简单的代码可以控制任何动画表现,诸如移动、旋转、颜色、各种其他UI元素

安装

  • 导入包后,提示需要导入新版本的DOTween
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎
    然后点击 set up
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎
    再 apply
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎
  • 然后再打开一下面板点击 Get Started 查看该教程
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

简单使用

eg.1 简单移动,跳动

  • 编写测试脚本
    注意需要引入头文件 using DG.Tweening
    使用 transform.DOMove(vec3,duration) ,在该时间内移动到某个位置
    DOMoveX 移动X坐标到某位置
    DOJump,跳动到某位置
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class TestDOWeen : MonoBehaviour
{
    public int test_type = 0;
    void Start()
    {
        switch (test_type)
        {
            case 0:
                transform.DOMove(new Vector3(1, 2, 3), 4);
                break;
            case 1:
                transform.DOMoveX(3, 3);
                break;
            case 2:
                transform.DOJump(new Vector3(4, 5, 6), 3, 5, 6);
                break;
        }
    }
}

unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

eg2. 缓动 Easing(动画插值)

  • 测试一下线性移动,外二次和内二次。
    各种插值变化图示
case 3:
    transform.DOMoveZ(10, 5).SetEase(Ease.Linear);
    break;
case 4:
    transform.DOMoveZ(10, 5).SetEase(Ease.OutQuad);
    break;
case 5:
    transform.DOMoveZ(10, 5).SetEase(Ease.InQuad);
    break;

unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

eg3. 循环 Looping

  • SetLoops 第一个变量表示循环次数,第二个为LoopType枚举类型,可以设置为重新动画,或 yoyo,大概是悠悠球一样再返回的意思?
case 6:
    transform.DOMoveZ(10, 2).SetLoops(2, LoopType.Restart);
    break;
case 7:
    transform.DOMoveZ(10, 2).SetLoops(2, LoopType.Yoyo);
    break;
case 8:
    transform.DOMoveZ(10, 2).SetEase(Ease.InQuad).SetLoops(2, LoopType.Yoyo); ;
    break;
  • 效果不错。
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

eg4. 变换颜色,变换大小

  • 有一些坑…
    首先,材质需要从 MeshRender 中的 material 获取
    然后,可以使用 DOCOlor 来变换颜色
    注意,Colorrgba 值域均为 [ 0 , 1 ] [0,1] [0,1],所以使用前需要归一化!
case 9:
    Material mat = GetComponent<MeshRenderer>().material;
    mat.DOColor(Color.red, 5);
    break;
case 10:
    Material mat2 = GetComponent<MeshRenderer>().material;
    mat2.DOColor(new Color(100.0f / 255, 100.0f / 255, 100.0f / 255), 5);
    break;
case 11:
    transform.DOScale(new Vector3(2, 2, 2), 5);
    break;

unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

eg5. 动画回调 Ani Callback

  • 我希望在播放动画的某个过程中运行某个函数,可以使用回调
    首先需要在一开始时获取 Tweener 实例,然后调用合适的回调函数即可
  • 看一下,有 onComplete 完成时回调
    OnKill 杀死 twe时回调
    OnPause 暂停时回调
    OnPlay 每次播放时回调
    OnStart 第一次开始播放时回调
    OnUpdate 没帧播放时回调
    OnStepComplete 每步播放结束时回调(loop一次算一步)
    等等……
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎
case 12:
	  Tweener twe = transform.DOScale(new Vector3(2, 2, 2), 3);
	  twe.OnComplete(ChangeColor);
	  break;
	
/** Blablabla */
    private void ChangeColor()
    {
        Material mat = GetComponent<MeshRenderer>().material;
        mat.DOColor(Color.red, 3);
    }
  • 这里先变大,然后回调函数,再变色。
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

eg6. 文字变换

  • 我希望它能按时间,逐字符播放文本
    之前傻傻敲了一堆代码,现在直接两行搞定(哭)
    直接宣布好用到爆。(一开始默认文本可以清除下)
case 13:
	 Text text = GetComponent<Text>();
	 text.DOText("Hello World, this is a message sent by the computer.", 3);
	 break;

unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

其他一些提一嘴的功能

  • 具体调用方法看文档或者vsCode中的代码补全吧。
    transform.DOShakePosition() 振动,放在摄像机上甚至可以模拟画面振动效果
    transform.DOPath() 沿着路径移动,路径为给定的vector3的数组
    DoRotate() 旋转
    DoLookAt() 朝向移动
    DoFade() 消失
    DoPunchPosition/Rotation/Scale() 类似给你一拳(?)逐渐能量减少的感觉。
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

DOTween Sequence 序列

  • Sequence 就像是控制其他 Tweenes 的 Tweener.
    首先通过创建一个 Sequence(注意没有用new),然后通过 Append 添加其 Tween
    这里的 Prepend 表示将 Tween 添加到序列的开头
    这里的 Join 表示将上个添加的 Tween 和该 Tweener 同时播放
case 15:
	  Sequence seq = DOTween.Sequence();
	  seq.Append(transform.DOMoveY(3, 2));
	  seq.Append(transform.DOMoveZ(3, 2));
	  seq.Prepend(transform.DOMoveX(3, 2));
	  seq.Join(transform.DOMoveZ(10, 2));
	  break;

所以播放效果如下
unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎文章来源地址https://www.toymoban.com/news/detail-660751.html

  • 还可以 Insert(p,tween) 来将 Tween 设定在时间 p 播放,而不是如上按顺序播放,这样可以允许重叠播放。
    还可以 InsertInterval(p) 表示这 p 秒不播放。放在开头 PrependInterval 就意味着动画延后p秒开始播放
    还可以对应 AppendCallback/InsertCallback/PrependCallback(),添加回调。
  • 所以我们发现了,我们完全可以把 Sequence 当做一个计时器来用!
    注意,Sequence要求非空,可以只包含回调。

其他一些控制方法

  • 可以使用 Play()Pause() 等方法来控制 tween 的播放
    可以通过静态方法、tween直接控制、ref中直接控制。
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

配合协程 Coroutine

  • 比较好懂,你可以用它的Sequence;也可以配合协程,yield return tween.xxxMethod()。
    unity 脚本控制动画,【游戏开发】,unity,学习,游戏引擎

到了这里,关于【Unity 工具,简单学习】DoTween,脚本控制动画工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • unity2.5D动画学习笔记(一):添加人物四向移动动画及脚本

    突发奇想要做游戏,但是么得基础,捣鼓几天,算是摸到属于自己路子学习unity了,很多东西百度能找到,但是好复杂,完全不懂文章里过程的本质是哪里,遂自己写文章记录在此过程中的丁零笔记 注:此为空中阁楼,无基础可言,是自己从0到1的过程,内容粗糙,自己理解

    2023年04月08日
    浏览(74)
  • Unity简单操作:设置触发条件 切换Animator动画控制器 里面播放的Animation动画

    确保animator里面有多个animation动画剪辑,点击Animator里面[Parameters]添加触发条件   添加连线箭头并且 给箭头连线绑定触发事件  添加连线箭头并且 给箭头连线绑定触发事件  

    2024年02月04日
    浏览(61)
  • 【Unity 学习笔记】动画组件和动画控制器

    动画是一款游戏不可缺少的一部分。在Unity中,我们可以直接使用Unity自带的动画系统来制作我们想要的动画,其操作相当便捷。 帧动画是2D像素游戏的主流,我将以帧动画为例记录我最近学习动画系统的一些收获。 Unity的动画系统有三个不可缺少的部分。第一,动画;第二,

    2024年02月07日
    浏览(70)
  • 【Unity】简单案例脚本实现 | 鼠标观察/键盘控制移动飞行/行走/碰撞检测

    《Unity5实战-使用C#和Unity开发多平台游戏》第二章-构建一个让你置身3D空间的演示 鼠标观察/键盘控制移动飞行/行走/碰撞检测 Unity版本:2019.4.23f1c1 注意脚本名称和组件添加,不在文章中一一强调 场景模型都是在资源商店选择的免费下载(选择Sort by Price(Low to High)排序)搜索

    2024年02月04日
    浏览(55)
  • Unity Dotween插件的运动曲线(Ease)介绍Ease选项Ease效果示例以及C#修改动画曲线功能

    我们在制作动画时经常使用这个Dotween插件,在移动、旋转、透明度等等参数的控制都可以使用该插件,而且在这个插件上的控制动画可以设置曲线,内置的曲线有这些: 以InOutSine的曲线进行往右移动: 效果是这样的: 能看出开始是从0提速,最后是慢慢减速至0的效果。 4个

    2024年02月01日
    浏览(82)
  • 【Unity学习笔记】DOTween(1)基础介绍

    本文中大部分内容学习来自DOTween官方文档 DOTween是一个动画插件,Tween是补间的意思。这个插件以下简称DOT,DOT很方便使用,只需要记住四个类,三个方法: 四个类 Tweener Sequence Tween Nested Tween 三个方法 DO Set On DOT中的方法名是很统一的,因此我们从前缀就可以大概知道这个方

    2024年02月11日
    浏览(54)
  • 【Unity学习笔记】DOTween(2)官方案例

    本文中大部分内容学习来自DOTween官方文档 此处无法展示动图(懒得录GIF),请下载官方案例场景自行学习 案例一展示了最基础的一些用法: 解读一下代码,redCube的移动是在两秒内移动到了指定坐标 0,4,0 ,而greenCube移动带有 From 方法,则是从坐标 0,4,0 移动到原坐标。blueC

    2024年02月11日
    浏览(48)
  • Unity --- 动画脚本

    1.什么是动画?(在Unity中) 首先如果游戏物体想要在场景中动起来的话,就必须使其对应组件中的属性发生合适的变化,而将属性的变化过程保存下来后形成的就是动画 以后如果想播放动画的话,只需要调用这段保存下来的属性变化就可以了        点击Create后,我们创建

    2024年02月05日
    浏览(32)
  • 【0到1学习Unity脚本编程】第一人称视角的角色控制器

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :【0到1】Unity脚本游戏开发宝典 将摄像机变为胶囊体的子物体,按住 ctrl +shift +F 调整视野。让他变成胶囊体的眼睛 判断要前进时按照哪个

    2024年02月05日
    浏览(42)
  • unity按钮控制动画

    准备工作:Asset Store 下载一套免费的animation导入unity 步骤一: 创建空物体Creat Empty 在空物体GameObject里面 添加两个按钮  以及  把Prefabs的Sword snd shie拉进来  (按钮改名称略过说明) (完全零基础小白,你可以和我下载一样的资源Sword and Shield Pack)   步骤二:创建脚本并挂

    2024年02月08日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包