unity3d补间动画DoTween

介绍

 

下载地址  专业版  

链接: https://pan.baidu.com/s/1w9PY6hnsz7m0ljDTAuyPJA 提取码: m3xf 

 

如果不用插件做一个武器打击效果 。需要用到协程,代码量有点多

 

	void attack() {
		if (Input.GetKeyDown(KeyCode.Mouse0)) {
			StartCoroutine("attackCoroutine");
		}
		else {
			 
		}
	}

	IEnumerator attackCoroutine() {

		float total = 0;
		float Rdu = 180;
		while( total < Rdu)
		{
			
			float lerp =  Mathf.Lerp(0, 100, Time.deltaTime * 30);
			
			if (total + lerp > Rdu) {
				lerp = Rdu - total;
			}
			total += lerp;
			weapon.transform.Rotate(0, 0, -lerp, Space.Self);
			
			yield return null;
		}
		print("bbb"+total);

		total = 0;
		while( total < Rdu)
		{
			float lerp =  Mathf.Lerp(0, 100, Time.deltaTime * 10);
			if (total + lerp > Rdu) {
				lerp = Rdu - total;
			}
			total += lerp;
			weapon.transform.Rotate(0, 0, lerp, Space.Self);
			yield return null;
		}
		print("ccc"+total);

	}

 

DoTween使用例子

 


// 2秒内移动到 目标坐标
greenCube.DOMove(new Vector3(0,4,0), 2)

// 内部代码
var t = DOTween.To((() => redCube.position), (x => redCube.position = x), new Vector3(0.0f, 5, 0.0f), 2);
t.SetOptions(  false).SetTarget<Tweener>((object) redCube);

// 目标坐标
redCube.DOMoveY(4, 2);

var t = DOTween.To((() => redCube.position), (x => redCube.position = x), new Vector3(0.0f, 5, 0.0f), 2);
t.SetOptions(AxisConstraint.Y, false).SetTarget<Tweener>((object) redCube);

 

 

实现上面的旋转   

		  Sequence sequence = DOTween.Sequence();
		  sequence.Append(weapon.transform.DORotate(new Vector3(0, 0, -90), 0.1f));
			  sequence.Append(weapon.transform.DORotate(new Vector3(0, 0, 0), 0.2f));
 

 

 

 

回放

var doLocalRotate = weapon.transform.DOLocalRotate(new Vector3(0, 0, -160), 0.1f);
// 一定要有 
doLocalRotate.SetAutoKill(false);
  doLocalRotate.OnComplete(() =>
 {
                weapon.transform.DOPlayBackwards();
 });

 

最佳实践

这里可观察动画创建次数 ,不能每次都创建比较浪费性能

 

 

 
void Start() {
       
// 挥剑操作
Tweener  weaponTween = weapon.transform.DOLocalRotate(new Vector3(0, 0, -160), 0.1f);
// 取消默认删除
weaponTween.SetAutoKill(false);
weaponTween.OnComplete(() =>
        {
            weapon.transform.DOPlayBackwards();
        });
// 创建时不自动播放
        weaponTween.Pause();
    }


void stack(){
// DOPlay只播放一次
 // weapon.transform.DOPlay();

// 会播放物体身上所有的动画
    weapon.transform.DOPlayForward();
}

 

 

可视化界面

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DOTween是一种快速,高效,完全类型安全的面向对象的动画引擎的团结,以优化C#用户,免费和开源,用吨的先进功能。 DOTweenUnity版本2018至3.5兼容。 适用于: Win,Mac,Linux,Unity WebPlayer,WebGL,iOS,Android, Windows Phone,Windows Store,PS Vita(PSM),PS4,Xbox One,Nintendo Switch +更多(没有测试其他平台但它应该工作除了使用Flash导出以外的所有地方。 特征 速度和效率 不仅非常快,而且非常高效:所有内容都被缓存并重复使用,以避免无用的GC分配。 智能感知和类型安全 所有代码都包含XML注释,并组织起来以充分利用IntelliSense。此外,一切都是类型安全的:任何地方都没有字符串。 快捷键 直接扩展普通对象的快捷方式扩展: // Move a transform to position 1,2,3 in 1 second transform.DOMove(new Vector3(1,2,3), 1); // Scale the Y of a transform to 3 in 1 second transform.DOScaleY(3, 1); // Pause a transform's tween transform.DOPause(); 非常准确 时间以非常精确的方式计算。这意味着每个1000秒的循环将会以1000秒的单圈循环播放。 逻辑和易于使用的API 提高效率,直观性和易用性的API。 动画(几乎) DOTween可以动画每个数字值,也可以是一些非数字值。它甚至可以对字符串进行动画处理,支持富文本。 捕捉,轴约束和其他选项 选择有关如何补间值的其他选项,例如捕捉(捕捉值到整数)或轴约束。 完全控制 播放,暂停,倒带,重新启动,完成,转到和吨其他有用的方法来控制你的补间。 分组 将补间组合到序列中以创建复杂的动画(不需要在一个,呃,序列中:它们也可以相互重叠)。 可混合的补间 由于强大的DOBlendable快捷方式,一些补间可以实时混合。 路径 沿线性和弯曲路径设置动画,并为旅行社的方向提供额外选项。 播放时更改值和持续时间 即使在播放时,也可以随时更改补间的开始/结束值或持续时间。 安全模式 激活可选的安全模式,让DOTween处理意外事件,例如播放时销毁的补间目标。 协程的产量 在协同程序中使用的各种“WaitFor ...”方法,允许您等待补间完成,终止或启动,或者让它到达给定的位置或循环。 多种旋转模式 轮换补间可以采用最短路径,完整路径,也可以使用本地或世界轴。 共享方法 它是Tweener还是序列?谁在乎?它们都从Tween继承,因此您可以以相同的方式存储它们并控制它们。 插件 DOTween在构建时考虑了可扩展的体系结构,允许您将自己的补间插件创建为单独的文件。 附加功能 额外的虚拟方法,可以在给定的延迟后调用函数。 所有的基础知识 回调,循环,轻松(包括AnimationCurves和自定义缓动功能),SpeedBased和许多其他补间选项。此外,更新类型的选择:常规,固定,延迟,加上选项,使其与timeScale无关。
Unity中,您可以使用DOTween插件来对float进行补间动画DOTween是一个功能强大的补间动画插件,可以用于实现平滑的数值变化效果。以下是一个使用DOTween对float进行补间动画的示例: 1. 首先,确保您已经在Unity项目中导入DOTween插件。您可以通过在Unity Asset Store中搜索DOTween并下载导入。 2. 在需要进行补间动画的脚本中,使用DOTween的静态方法来实现float的补间动画。例如,您可以使用DOTween的To方法来设置初始值和目标值,并指定变换的持续时间和缓动函数等参数。 ```csharp using UnityEngine; using DG.Tweening; public class TweenExample : MonoBehaviour { public float startValue; public float targetValue; public float duration = 1f; void Start() { DOTween.To(() => startValue, x => startValue = x, targetValue, duration).SetEase(Ease.OutQuad); } } ``` 在上述示例中,我们定义了一个初始值startValue、目标值targetValue和变换持续时间duration。在Start函数中,我们使用DOTween的To方法来对startValue进行补间动画,将其变换到目标值。通过lambda表达式,我们将变换后的值赋给startValue。 3. 将脚本附加到需要进行补间动画的游戏对象上,并在Inspector窗口中设置初始值、目标值和变换持续时间等参数。 这样,当游戏运行时,float值将会平滑地进行补间动画。 请注意,以上示例仅为基本示例,您可以根据自己的需求进行更复杂的操作,如添加变换完成的回调函数、设置变换的缓动类型等。 希望这可以帮助您在Unity中使用DOTween对float进行补间动画!如果您有任何进一步的问题,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值