转载雨松的unity中使用ITween插件和ITweenPath

  

移动模型时候用到的几个核心方法如下:

iTween.MoveTo(): 让模型移动到一个位置,它的底层函数是通过动态的修改模型每一帧的transform.position完成的,所以它会百分之百到达目标点,不会出现误差。

iTween.MoveFrom():它和上面的一样,iTween.MoveTo()是将模型移动到目标位置,而iTween.MoveFrom()是将模型从目标位置移动到原始位置。

iTween.MoveAdd() 和iTween.MoveBy()底层实现一样,大家可以去看源码。处理移动时采用的是transform.Translate也就是API的平移,这样在处理移动的时候可能会出现一些误差,但是效果好点。

iTween.MoveUpdate():和iTween.MoveTo()差不多,只是它需要放在循环或者Update()中。

有了核心的移动方法后,我们就来了解iTween强大的核心参数,与事件。移动方法的参数都差不多,所以这里我就以MoveTo来做例子。直接上代码。

Move.cs绑定在需要移动的游戏对象身上。

using UnityEngine;
using System.Collections;
 
public class Move : MonoBehaviour
{    
 
    void Start()
    {
 
        //键值对儿的形式保存iTween所用到的参数
        Hashtable args = new Hashtable();
 
        //这里是设置类型,iTween的类型又很多种,在源码中的枚举EaseType中
        //例如移动的特效,先震动在移动、先后退在移动、先加速在变速、等等
        args.Add("easeType", iTween.EaseType.easeInOutExpo);
 
        //移动的速度,
        args.Add("speed",10f);
        //移动的整体时间。如果与speed共存那么优先speed
        args.Add("time",1f);
        //这个是处理颜色的。可以看源码的那个枚举。
        args.Add("NamedValueColor","_SpecColor");
        //延迟执行时间
        args.Add("delay", 0.1f);
        //移动的过程中面朝一个点
        args.Add("looktarget",Vector3.zero);
 
        //三个循环类型 none loop pingPong (一般 循环 来回)    
        //args.Add("loopType", "none");
        //args.Add("loopType", "loop");    
        args.Add("loopType", "pingPong");
 
        //处理移动过程中的事件。
        //开始发生移动时调用AnimationStart方法,5.0表示它的参数
        args.Add("onstart", "AnimationStart");
        args.Add("onstartparams", 5.0f);
        //设置接受方法的对象,默认是自身接受,这里也可以改成别的对象接受,
        //那么就得在接收对象的脚本中实现AnimationStart方法。
        args.Add("onstarttarget", gameObject);
 
        //移动结束时调用,参数和上面类似
        args.Add("oncomplete", "AnimationEnd");
        args.Add("oncompleteparams", "end");
        args.Add("oncompletetarget", gameObject);
 
        //移动中调用,参数和上面类似
        args.Add("onupdate", "AnimationUpdate");
        args.Add("onupdatetarget", gameObject);
        args.Add("onupdateparams", true);
 
        // x y z 标示移动的位置。
 
        args.Add("x",5);
        args.Add("y",5);
        args.Add("z",1);
 
        //当然也可以写Vector3
        //args.Add("position",Vectoe3.zero);
 
        //最终让改对象开始移动
        iTween.MoveTo(gameObject,args);    
    }
 
    //对象移动中调用
    void AnimationUpdate(bool f)
    {
        Debug.Log("update :" + f);
    }
    //对象开始移动时调用
    void AnimationStart(float f)
    {
        Debug.Log("start :" + f);
    }
    //对象移动时调用
    void AnimationEnd(string f)
    {
        Debug.Log("end : " + f);
    }
 
}

然后ITween里面还有一个是叫ITweenPath是一个能自定义位置的一个划线动画。平常寻路或者动画都可以用。

具体用法就是挂上这个ITweenPath组件

pathName就是这个路径的名字。这个到时候需要在代码里面用到的。NodeCount是你自己定义个路标点,他会沿着你的路标点进行移动。

具体代码是:

 1 using unityEngine;
 2 using System.Collections;
 3 
 4 public class ITweenController:MonoBehviour
 5 {
 6        void Start()
 7 {
 8       //创建一个哈希值存储
 9       Hashtable args = new Hashtable();
10       //移动速度
11      args.Add("speed",4f);
12      //获取Path路径
13      args.Add("path",iTweenPath.GetPath("one"));
14     //获取反向路径
15    // args.Add("path",iTweenPath.GetPathReversed("one"));
16     //开始移动
17      iTween.MoveTo(gameobject,args);
18 }
19 }

 

posted on 2016-11-04 17:12  萨瓦迪卡麦兜兜  阅读(4849)  评论(0编辑  收藏  举报

导航