初学者,自用笔记

打击感

Camera.main.transform.DOShakePosition(2, 3);//让镜头晃动,时间为2强度为3
DOShakePosition(2,new Vector3(3,3,0))//只在X、Y方向上震动
受到冲击后的回弹效果
DOPunchPosition(Vector3 punch, float duration, int vibrato, float elasticity, bool snapping)
		Vector3					punch 				要被击打到的最远位置(相对值,相对于局部坐标)
		int						vibrato				物体振动频率
		float					elasticity			代表程度,值一般在0到1之间,0表示起点到冲击方向的震荡,1表示为一个完整的震荡,可能会超过起点
受到冲击后旋转效果
DOPunchRotation(Vector3 punch, float duration, int vibrato, float elasticity)
elasticity值一般在0到1之间,0表示最初角度到最大角度的旋转,1表示为一个完整的旋转,可能会超过最远角度
受击后的弹性效果
DOPunchScale(Vector3 punch, float duration, int vibrato, float elasticity)
elasticity值一般在0到1之间,0表示最初角度到目标大小的放缩,1会产生负值,出现警告

移动

DOMove(Vector3 to, float duration, bool snapping)//世界坐标
		Vector3 to               目标位置
		float   duration         动画持续时间
		bool    snapping         默认为false,true让动画的属性值以整数形式变化
沿着X/Y/Z轴移动到指定位置
DOMoveX/DOMoveY/DOMoveZ(float to, float duration, bool snapping)//世界坐标
DOLocalMove(Vector3 to, float duration, bool snapping)//自身坐标
DOLocalMoveX/DOLocalMoveY/DOLocalMoveZ(float to, float duration, bool snapping)//自身坐标

DOJump(Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping)
		 Vector3 endValue         最终要跳跃到的位置
		 float   jumpPower        跳跃的强度,决定跳跃的高度(当前位置Y加上该值)
		 int     numJumps         跳跃的次数
local...

DORotate(Vector3 to, float duration, RotateMode mode)
RotateMode	mode
				Fast				(默认值)采用最短路径,即旋转不会超过360°
				FastBeyond360		旋转超过360°
				WorldAxisAdd		与transform.Rotate(new Vector3(20, 0, 0),Space.World)作用类似,最终值始终被视为相对值
				LocalAxisAdd		与transform.Rotate(new Vector3(20, 0, 0),Space.Self)作用类似,最终值始终被视为相对值
DORotate(new Vector3(0, 90, 0), 1f, RotateMode.Fast)
local...

DORotateQuaternion(Quaternion to, float duration)
		Quaternion	to				要旋转到的目标值四元数
Quaternion targetRotation = Quaternion.Euler(0, 90, 0);//表示绕 Y 轴旋转 90 度
transform.DORotateQuaternion(targetRotation, 1f);
local...

旋转目标使其朝向指定的位置方向
DOLookAt(Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3 up = Vector3.up)
		 Vector3			 towards			旋转目标值
		 float	    		 duration			旋转总用时
		 AxisConstraint		 axisConstraint 	旋转最终轴约束,只旋转此轴。(默认值为AxisConstraint.None)
		 Vector3             up                 定义向上方向的矢量。(默认值为Vector3.up)
旋转目标使其朝向指定的位置方向,每帧更新 lookAt 位置
DODynamicLookAt(Vector3 towards, float duration, AxisConstraint axisConstraint = AxisConstraint.None, Vector3 up = Vector3.up)

缩放到指定大小或倍数
DOScale(float/Vector3 to, float duration)
对物体的某一轴方向进行缩放
DOScaleX/DOScaleY/DOScaleZ(float to, float duration)

# 用例
transform.DOMove(new Vector2(x,y),1);//用1s移动到目标位置
transform.DOMove(new Vector2(x,y),1).From();//开始处于目标位置然后归位
transform.DOMove(new Vector3(0,4,0), 2).SetRelative();//用2s朝y轴方向移动4个单位
transform.GetComponent<Renderer>().material.DOColor(Color.yellow, 2).SetLoops(-1, LoopType.Yoyo);//移动过程中变化颜色,无限次
//循环类型,Restart表示从前往后循环,0->1,0->1
//Yoyo表示悠悠球式的反弹循环,0->1,1->0

跟随移动
public followObject;
Vector3 followLastPos;
Tweener tween;//存储创建的移动动画
start(){tween = transform.DOMove(followObject.position, 2).SetAutoKill(false);
//创建动画,关闭自动销毁功能
followLastPos = followObject.position;//记录目标物体的初始位置
       } 
update()
{if(transform.position==followObject.position)return;
 tween.ChangeEndValue(followObject.position, true).Restart();
 //true让动画的属性值以整数形式变化,并重新启动动画
 followLastPos = followObject.position;
}

按指定路径前进
public PathType pathType = PathType.CatmullRom;
//PathType 枚举有两种可能的值:PathType.Linear 表示线性路径,PathType.CatmullRom 表示使用 CatmullRom 曲线进行平滑处理的路径
public Vector3 arr []=new []{ new Vector3(4, 2, 6),
        new Vector3(8, 6, 14),
        new Vector3(4, 6, 14)}//存储路径上的关键点
start(){
Tween t=transform.DOPath(Vector3 [],float duration,PathType)//调用 DOPath 方法创建一个路径动画
 .SetOptions(true)//true表示将路径闭合,闭合路径意味着对象在移动到最后一个关键点后会自动回到第一个关键点,形成一个循环路径,false时不会从最后的点过渡到第一个点,而是直接跳跃到
.SetLookAt(0.001f);//让对象在移动过程中朝向路径的方向,使对象的移动更加自然
t.SetEase(Ease.Linear).SetLoops(-1);//动画速度恒定
}

缩放

transform.DOScale(0, 0.5f);//用时0.5s从大小1到大小0
transform.DOScale(0, 0.5f).Form();//相反
transform.DOFade(0, 0.5f);//透明度

Sequence容器

var v=DOTween.Sequence();
v.Append(text.DOFade(0,0.1f));
v.Append(DOMove(new Vector3(0,4,0), 2).SetRelative());
v.SetLoops(-1,Yoyo);
//类似于队列,先变透明,在移动,以yoyo模式无限次循环

v.AppendCallback(
()=>{
print("回调函数");
})//放在容器中某事件后,表示结束后执行,放在DOMove后就在移动结束后执行

transform.DOMove(new Vector3(0,4,0), 2).OnComplete(()=>{
  print("");
})//适用于做一个单独的DOTween操作时

插入动画
public Sequence Insert(float atPosition, Tween tween);
//float atPosition表示要插入动画的时间点(单位为秒)

Tween动画

Tween 通用的动画对象
Tweener 通常用于需要从一个数值变化到另一个数值的情况

DOTween.To(getter, setter, endValue, duration);
//创建新动画时调用,每次调用都会创建一个新的动画实例
		getter			获取对象
		setter			目标对象
		endValue		传入的值
DOTween.To(() => Value, x =>Value = x, 1f, 2f);

Tweener tweener;
tweener.TogglePause()
/*如果动画当前处于播放状态,调用 TogglePause() 会暂停该动画,即动画会停止在当前的进度位置,时间不再推进。
如果动画当前处于暂停状态,调用 TogglePause() 会恢复动画的播放,动画会从暂停的位置继续按照原来的设置(如缓动类型、循环模式等)进行。*/
tweener.Pause(); // 暂停动画
tweener.Play(); // 恢复动画
tweener.Kill(); // 结束并销毁动画
tweener.restart();//重新启动动画
tweener.From();// 参数为true或者false,表示运动为相对运动还是绝对运动。并且动画效果为tweener的逆动画
tweener.Flip();// 动画播放中执行,动画原轨迹运动到起始点,当动画回到起始状态时动画结束
tweener.Complete();// 动画播放中执行,物体立即运动到动画末尾状态,动画结束
tweener.Goto();// 参数为float,表示动画立即进入到时间为t时候的状态
tweener.PlayForward();// 动画顺序播放
tweener.PlayBackwards();// 动画倒序播放
都可输入动画的id,参数为string
tweener.ChangeEndValue(newEndValue,snapStartValue);
//动画已经创建并开始执行后调用,可以在动画进行的任意时刻修改结束值,从而动态调整动画的最终状态
		newEndValue			设置的新的结束值
		snapStartValue		修改结束值后,true为接着之前的结果继续,false则为从新开始

全局
DOTween.defaultAutoKill(bool)//(全局) 当该值为真时,之后创建的动画当其播放完毕之后会自动被销毁。
DOTween.defaultAutoPlay(bool)//(全局) 当该值为真时,之后创建的动画会自动播放。
DOTween.defaultEaseType(Ease)//(全局) 该值为创建动画时候默认的动画曲线。
Ease.Linear//匀速运动,速度不变
Ease.InSine//使用正弦函数加速,比较平滑的过渡
Ease.OutSine//使用正弦函数减速
Ease.InOutSine//使用正弦函数加速和减速
Ease.InQuad// 加速的二次方曲线
Ease.OutQuad// 减速的二次方曲线
Ease.InOutQuad// 先加速后减速的二次方曲线
Ease.InExpo// 指数加速
Ease.OutExpo// 指数减速
Ease.InOutExpo// 指数加速和减速
Ease.InCirc// 圆形加速
Ease.OutCirc// 圆形减速
Ease.InOutCirc// 圆形加速和减速
Ease.InBounce// 先加速后弹跳
Ease.OutBounce// 先弹跳后减速
Ease.InOutBounce// 先加速后弹跳再减速
Ease.InBack// 加速并略微超出目标
Ease.OutBack// 减速并略微超出目标
Ease.InOutBack// 先加速后减速并略微超出目标
Ease.Flash// 短暂的闪烁效果
DOTween.defaultLoopType(LoopType)//(全局) 该值为创建动画时候默认的循环模式。
LoopType.Yoyo//Yoyo表示悠悠球式的反弹循环,0->1,1->0
LoopType.Restart//Restart表示从前往后循环,0->1,0->1
LoopType.Incremental//继续增加偏移量

局部
tweener.SetDelay(float delay)延迟的时间
tweener.SetEase(Ease)动画曲线
tweener.SetLoops(int loops, LoopType loopType)循环次数和类型,-1为无限次
tweener.SetAutoKill(bool autoKill)设置动画完成后是否自动销毁
tweener.SetId(object id)设置动画的id
tweener.SetUpdate(bool isIndependent)设置动画是否独立于时间更新

回调函数
tweener.OnComplete();// 动画结束时触发
tweener.OnKill();// 动画被销毁时触发
tweener.OnPlay();// 动画开始播放时触发
tweener.OnPause();// 动画暂停播放时触发
tweener.OnRewind();// 动画倒转播放时触发
tweener.OnStart();// 动画被创建时触发
tweener.OnStepComplete();// 单个动画循环结束时触发
tweener.OnUpdate();// 动画更新时触发
# 例
tweener.OnStart(void无参型函数);// 使用回调函数
tweener.OnStart+=void无参型函数;同上
tweener.OnUpdate(() => Debug.Log("赤鸢")); 
tweener.OnKill(() => 函数("赤鸢"));//函数()中不可以含参数
void 函数(string 咕咕){Debug.Log(咕咕);}

UI

Tweener DOFillAmount(float endValue, float duration);//图像填充度
slider.DOValue(float endValue, float duration, bool snapping = false);

# 用例 材质变化
public GameObject target;
public Color toColor;
Tween colorTween, emissionTween, offsetTween;//分别用于存储材质颜色动画、自发光颜色动画和纹理偏移动画
start()
{
Material mat = target.GetComponent<Renderer>().material;
colorTween = mat.DOColor(toColor, 1).SetLoops(-1, LoopType.Yoyo).Pause();
emissionTween = mat.DOColor(new Color(0, 0, 0, 0), "_EmissionColor", 1).SetLoops(-1, LoopType.Yoyo).Pause();
offsetTween = mat.DOOffset(new Vector2(1, 1), 1).SetEase(Ease.Linear).SetLoops(-1, LoopType.Incremental).Pause();
}
public void ToggleColor()
{
    colorTween.TogglePause();
}

public void ToggleEmission()
{
    emissionTween.TogglePause();
}

public void ToggleOffset()
{
    offsetTween.TogglePause();
}//通过UI按键触发

打字机
public Text text;
var v=DOTween.Sequence();
v.Append(text.DOText("赤鸢",4));//打字机,4秒后结束
v.Append(text.DOColor(Color.red,1));//让字体变红
v.OnComplete(()=>{
var v2=DOTween.Sequence().SetLoops(-1);//设置动画循环无限次
v2.Append(text.DOFade(0,0.1f));
v2.Append(text.DOFade(1,0.1f));
});//让字体闪烁

DOTeewen官方链接

...