草庐IT

DOTween中文详解(持续更新)

一条爱玩游戏的咸鱼 2024-05-09 原文

前言:

随缘翻译,内容为自己根据效果理解所描述,如有错漏之处,敬请指正。

DOTween

开始之前

什么是Tween(补间)

补间,一般指补间动画,例如unity的Animation窗口,插入两个图片或者对一个物体做变换时,unity会根据两个状态之间的帧,创建相应的动画,这就是补间。

1、在资源商店下载并安装DOTween:DOTween
在PackageManager导入到要使用的项目中。
安装完成后点击 Setup DOTween 会自动根据unity的版本导入/重新导入内部的一些文件,激活或者停用一些模块。
如果不小心关闭或者关闭了想再次打开,你可以在unity的工具栏的Tools/Demigiant/DOTween Utility Panel 打开该面板。

2、在使用DOTween需引入对应的命名空间:

using DG.Tweening;

3、初始化DOTween,设置一些全局设置。
如果在每次创建DOTween脚本时不调用该方法进行初始化,DOTween也会根据默认的设置自动进行初始化设置 ,如果进行初始化必须在每次使用前调用该方法,否则不会有任何、效果。默认的设定可以在初始面板中的首选项(Preferences)中更改。

DOTween.Init();
参数功能
recycleAllByDefaultbool类型,如果为true,所有的 动画补间将会在调用完后被回收放入一个对象池中,而不是直接被销毁。
useSafeModebool类型,如果为true,补间会变慢,但是会更加安全,允许补间照顾一些东西,当一个物体被销毁时,补间仍然执行。
logBehaviour据所选模式,DOTween 将只记录错误(ErrorsOnly)或者错误和警告(Default),或所有内容以及其他信息(Verbose)

命名法

  • Tweener :补间,控制值并为其生成动画。
  • Sequence:序列,控制多个补间作为组来处理。
  • Tween:通用词,通用词表示补间和序列。
  • Nested tween:嵌套补间,序列中包含的补间。

前缀

  • DO:所有快速实现一些补间效果的前缀(如变换Transform)的前缀。
  • Set:对当前效果进行设置。
  • On:一系的列回调。

基本方法

DO前缀

Transform

Move

transform.DOMove(new Vector3(10, 0, 0), 10, false);
    作用:移动到某一指定点。(世界坐标)
	参数:
	     Vector3 to               要移动到的位置
	     float   duration         所需要花费的时间
	     bool    snapping         为true时平滑地将所有值变为整数。(每次移动整数值)默认为false
transform.DOMoveX()/DOMoveY()/DOMoveZ(10, 10f,false);
 	作用:沿着某一轴移动到指定位置。
	参数:
		 float   to				  要移动到的轴的坐标
		 float   duration         所需要花费的时间
		 bool    snapping         为true时平滑地将所有值变为整数。(每次移动整数值)默认为false
transform.DOLocalMove(new Vector3(10,0.5f,0),10f,false);
 	作用:移动自身坐标到指定位置。
 	参数:
 	Vector3 to               要移动到的位置
	     float   duration         所需要花费的时间
	     bool    snapping         为true时平滑地将所有值变为整数。(每次移动整数值)默认为false
transform.DOLocalMoveX()/DOLocalMoveY()/DOLocalMoveZ();
	作用:移动自身坐标到指定轴的指定位置。
	参数:
		 float   to				  要移动到的轴的坐标
		 float   duration         所需要花费的时间
		 bool    snapping         为true时平滑地将所有值变为整数。(每次移动整数值)默认为false
transform.DOJump(new Vector3(10, 0, 0),10,3,10,false);
	作用:实现跳跃到指定位置。
	参数:
		 Vector3 endValue         最终要跳跃到的位置
		 float   jumpPower        跳跃的强度,决定跳跃的高度(当前位置Y加上该值)
		 int     numJumps         跳跃的次数
		 float   duration         总持续时间
		 bool    snapping         为true时平滑地将所有值变为整数。(每次移动整数值)默认为false
transform.DOLocalJump(new Vector3(10, 0, 0),10,3,10,false);
    作用:实现跳跃到指定位置(自身坐标)。
	参数:
		 Vector3 endValue         最终要跳跃到的位置
		 float   jumpPower        跳跃的强度,决定跳跃的高度(当前位置Y加上该值)
		 int     numJumps         跳跃的次数
		 float   duration         总持续时间
		 bool    snapping         为true时平滑地将所有值变为整数。(每次移动整数值)默认为false

Rotate

transform.DORotate(Rote, 0.1f, RotateMode.Fast);
	作用:旋转到指定的值(根据欧拉角)。
	参数:
	     Vector3 to               旋转目标值
		 float   duration         总旋转用时
		 RotateMode
		 	     Fast             旋转采用最短路线,切旋转不会超过360°
		 	     FastBeyond360    旋转将超过360°
		 	     WorldAxisAdd     类似于使用transform.Rotate(new Vector3(20, 0, 0),Space.World),最终值始终被视为相对值
		 	     LocalAxisAdd     类似于使用transform.Rotate(new Vector3(20, 0, 0),Space.Self),最终值始终被视为相对值
transform.DORotateQuaternion();
	作用:旋转到指定的值(四元数)。
	参数:
		 Quaternion  to            要旋转到的四元数值
		 float   duration          旋转用时
transform.DOLocalRotate();
	作用:自身坐标旋转。
transform.DOLocalRotateQuaternion();
	作用:自身坐标旋转。
transform.DOLookAt();
	作用:旋转目标,使其朝向给定位置。
	参数:
		 Vector3			 towards			旋转目标值
		 float	    		 duration			旋转总用时
		 AxisConstraint		 axisConstraint 	旋转最终轴约束,只旋转此轴
		 Vector3             up                 定义向上方向的矢量
transform.DODynamicLookAt();
	作用:旋转目标,使其朝向给定位置,每帧更新 lookAt 位置(与此相反,当补间开始时,只计算一次 lookAt 旋转)
	参数:
		 Vector3			 towards			旋转目标值
		 float	    		 duration			旋转总用时
		 AxisConstraint		 axisConstraint 	旋转最终轴约束,只旋转此轴
		 Vector3             up                 定义向上方向的矢量

Scale

DOScale();
	作用:将物体放大/缩小到指定大小
	参数:
	float/Vector3 			to					浮点数为倍数,向量为指定大小
	float 					duration			放大/缩小总消耗时间
DOScaleX/DOScaleY/DOScaleZ();
	作用:对某一轴方向进行放大缩小
	float					to					放大到的倍数
	float 					duration			放大/缩小总消耗时间

Punch

DOPunchPosition();
	作用:受到冲击后的回弹效果
	参数:
	Vector3					punch 				要被击打到的最远位置(相对值,相对于局部坐标)
	float					duration			总持续时间
	int						vibrato				物体振动频率
	float					elasticity			值一般在01之间,0表示起点到冲击方向的震荡,1表示为一个完整的震荡,可能会超过起点,个人感觉后者效果更好。
	bool					snapping			是否进行平滑插值
	DOPunchRotation()
	作用:受到冲击后旋转效果
	参数:
	Vector3					punch 				要被击打到的角度(相对值,相对于局部坐标)
	float					duration			总持续时间
	int						vibrato				物体旋转频率
	float					elasticity			值一般在01之间,0表示最初角度到最大角度的旋转,1表示为一个完整的旋转,可能会超过最远角度。
	DOPunchScale()
	作用:实现一个弹性效果,反复弹,最终复原。
	参数
	Vector3					punch 				弹到的大小
	float					duration			总持续时间
	int						vibrato				物体放缩频率
	float					elasticity			值一般在01之间,0表示最初角度到目标大小的放缩,1会产生负值,出现警告。

有关DOTween中文详解(持续更新)的更多相关文章

  1. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  2. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  3. 亚特兰蒂斯的回声(中文版): chatGPT 的杰作 - 2

    英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古

  4. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  5. objective-c - 在设置 Cocoa Pods 和安装 Ruby 更新时出错 - 2

    我正在尝试为我的iOS应用程序设置cocoapods但是当我执行命令时:sudogemupdate--system我收到错误消息:当前已安装最新版本。中止。当我进入cocoapods的下一步时:sudogeminstallcocoapods我在MacOS10.8.5上遇到错误:ERROR:Errorinstallingcocoapods:cocoapods-trunkrequiresRubyversion>=2.0.0.我在MacOS10.9.4上尝试了同样的操作,但出现错误:ERROR:Couldnotfindavalidgem'cocoapods'(>=0),hereiswhy:U

  6. ruby-on-rails - Rails Associations 的更新方法是什么? - 2

    这太简单了,太荒谬了,我在任何地方都找不到关于它的任何信息,包括API文档和Rails源代码:我有一个:belongs_to关联,我开始理解当您没有关联时您在Controller中调用的正常模型方法与您有关联时调用的方法略有不同。例如,我的关联在创建Controller操作时运行良好:@user=current_user@building=Building.new(params[:building])respond_todo|format|if@user.buildings.create(params[:building])#etcetera但我找不到关于更新如何工作的文档:@user

  7. ruby-on-rails - OSX Yosemite 更新破坏了 pow.cx - 2

    升级到OSXYosemite后,我现有的pow.cx安装不起作用。升级到最新的pow.cx无效。通过事件监视器重新启动它也没有成功。 最佳答案 卸载(!)并重新安装解决了这个问题。curlget.pow.cx/uninstall.sh|shcurlget.pow.cx|sh 关于ruby-on-rails-OSXYosemite更新破坏了pow.cx,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

  8. ruby - 将 Gitlab 从 9.3.7 更新到 9.3.8 安装 re2 时出错 - 2

    我们在Ubuntu14.04和Gitlab9.3.7上运行,运行良好。我们正在尝试更新到Gitlabv9.3.8的最新安全补丁,但它给我们这个错误:Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension.currentdirectory:/home/git/gitlab/vendor/bundle/ruby/2.3.0/gems/re2-1.0.0/ext/re2/usr/local/bin/ruby-r./siteconf20170720-19622-15i0edf.rbextconf.rbcheckingformain(

  9. ruby - Sinatra session 未按预期持续 - 2

    我正在尝试使用Sinatra中的重定向和session在网站周围传递一些数据。这是一个简化的示例,使用PrettyPrint进行调试:require'pp'require'rubygems'require'sinatra'enable:sessionsget'/'dosession[:foo]='12345'puts'session1'ppsessionredirectto('/redir')endget'/redir'doputs'session2'ppsession'helloworld'end查看Thin的输出,我看到:>>Listeningon0.0.0.0:4567,CTRL

  10. ruby-on-rails - Rails 更新属性 - 2

    我遇到了以下问题。我有一个名为user的模型,它有一个名为activated的列。我试图通过激活的方法更新该值?但它给我错误:验证失败:密码不能为空,密码太短(最少6个字符)这对我来说没有意义,因为我没有接触密码字段!我只想更新激活的列。我把我认为相关的代码放在这里,但如果你认为你需要更多,请问:)非常感谢您!型号:attr_accessor:passwordattr_accessible:name,:email,:password,:password_confirmation,:activatedhas_many:sucu_votesemail_regex=/\A[\w+\-.]+@

随机推荐