Unity DOTween插件和iTween插件使用(笔记)


前言

  • 使用代码命令控制物体移动
  • DOTweenpath组件控制路径变化
  • DOTweenanimation组件控制两点(终点和起点)之间的变化(移动、旋转等)
  • iTween一般操控物体,DOTween一般操控UI,根据个人习惯

一、导入DOTween插件

  • asset store里面有免费的插件
  • 挂上DOTweenpath组件
    在这里插入图片描述

1、使用步骤

  • shift+ctrl然后点击屏幕加一个点
  • shift+alt然后点击已有的点是取消该点
    在这里插入图片描述
  • 在组件面板里handles type/mod选择Full把点改成三位坐标
    在这里插入图片描述
  • 这个表示物体移动时间为3秒

在这里插入图片描述

  • 这个表示延迟1秒后物体开始移动
    在这里插入图片描述
  • 这个表示移动的方式是线性的还是曲线的
    在这里插入图片描述
  • 这个勾上表示路径将形成一个闭环,会把最后一个路径点和起点相连
    在这里插入图片描述
  • AutoPlay高亮表示运行即物体就会按照编辑的点运动
  • AutoKill高亮表示杀死当前动画,播放物体动画后就会销毁该动画,把这两个取消高亮,使用代码控制
    在这里插入图片描述

2、编写代码

  • 使用射线检测控制,点击物体开始运动,按下q健物体倒放该动画
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;

public class RayObject : MonoBehaviour
{
    GameObject cube;
    Tweener tweener;
    // Update is called once per frame
    void Update()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit))
        {
            if (Input.GetMouseButtonDown(0))
            {
                if (hit.collider.name == "Cube")
                {
                    cube = hit.collider.gameObject;
                    cube.GetComponent<DOTweenPath>().DOPlayForward();
                }
                if (hit.collider.name == "Sphere")
                {
                    print("d");
                    tweener = hit.collider.gameObject.transform.DOLocalMove(new Vector3(4.4f, -0.18f, -1.823f), 3);
                    tweener.SetAutoKill(false);
                    tweener.SetEase(Ease.Linear);
                }
            }
        }
        if (cube)
        {
            if (Input.GetKey(KeyCode.Q))
            {
                cube.GetComponent<DOTweenPath>().DOPlayBackwards();
                tweener.PlayBackwards();
            }
        }
    }
}

  • DOMove用的是世界坐标,这里要用局部坐标DOLocalMove
  • cube移动是编辑好了路径用代码控制开始播放,Sphere是用代码控制走的路径
  • DOPlayForward正向播放,PlayBackwards倒放
  • hit.collider.gameObject.transform.DOLocalMove(new Vector3(4.4f, -0.18f, -1.823f), 3).From();这段代码后面加上from,表示物体将从目标点移动到当前点

二、导入iTween插件

  • asset store里面有免费的插件
  • 导入插件后里面有个案例场景,进去后点击运行
    在这里插入图片描述
  • 运行后上面有个网址,点进去有很多iTween案例,是学习这个插件很好的方式

1、代码控制(未加组件)

  • iTween.MoveTo运动方式不是线性的

这段代码物体的运动是很快的的,前面运动很快,一下就到9,然后从9慢慢到10
iTween.MoveTo(this.gameObject,new Vector3(10,0,0),3);

  • iTween.MoveTo里面的第二个参数还可以是Hashtable

Hashtable hs = new Hashtable();
hs.Add(“time”,3);
hs.Add(“position”, new Vector3(10, 0, 0));
iTween.MoveTo(this.gameObject,hs);
这段代码依然是前面运动很快到最后慢

另一种表示
iTween.MoveTo(this.gameObject, iTween.Hash(“time”, 3, “position”, new Vector3(10, 0, 0),“easetype”,iTween.EaseType.linear));
iTween.EaseType.linear表示运动方式线性,运行后就是匀速运行了

  • 可能后面选择运动方式这样写代码有点麻烦,可以公开,从外界选择

public iTween.EaseType ease;
iTween.MoveTo(this.gameObject, iTween.Hash(“time”, 3, “position”, new Vector3(10, 0, 0),“easetype”,ease));

在这里插入图片描述
在这里插入图片描述

  • 这样需要什么方式就可以直接选择
  • 后面加参数选择运动循环方式
    在这里插入图片描述
  • loop是从头到尾循环,到了终点后直接从起点开始在运动
  • none不循环,
  • pingpong是往复循环,从起点到终点,在从终点到起点

以上是直接脚本代码控制,没有添加itween组件

添加组件

  • 添加itweenpath组件先到上面说的运行后有个网址,点进去下载
    在这里插入图片描述
  • 下载后导入,添加插件
    在这里插入图片描述
  • path name是这条路径的名字
  • path color是路径线的颜色
  • node conut表示几个路径点
    在这里插入图片描述
  • 接着在脚本里写上代码
  • 运行后物体的坐标轴向是没有变化的
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CubeMove : MonoBehaviour {
	public iTween.EaseType ease;
	// Use this for initialization
	void Start () {

		iTween.MoveTo(this.gameObject, iTween.Hash("path", iTweenPath.GetPath("path"), "time", 6, "easetype", ease));

	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

  • 在代码后面加上一个参数,表示物体的z轴在运动的时候一直面对原点
    在这里插入图片描述

  • 代码后面参数改成"orienttopath",true,“lookahead”,0.01f,

  • orienttopath表示物体运动时z轴前面时沿着路径的朝向,

  • lookahead 整数表示运动是z轴方向是向前

iTween.MoveTo(this.gameObject, iTween.Hash("path", iTweenPath.GetPath("path"), "time", 6, "easetype", ease,"orienttopath",true,"lookahead",0.01f));
  • 当把物体初始位置和第一个路径点的位置不一样时,运行的时候物体会移动到第一个点然后开始沿着路径移动,
    在这里插入图片描述
  • 在后面参数加上"movetopath",false,那么运行的时候,物体会瞬移到第一个路径点开始移动
    在这里插入图片描述
  • 使物体震动

iTween.ShakePosition(this.gameObject,new Vector3(4,5,0),5);
物体在坐标范围内震动,时间是5秒

  • itween还有使物体旋转改变,大小改变的方法

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

X在学了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值