unity HOTween简单应用

15 篇文章 0 订阅


HoTween插件点击下载


1 基本插值

说明:

HOTween 只能对物体的任何非静态共有属性或者字段做插值

TweenParms.Prop(propName,endValue) 设定被插值的属性和最后的值(可以多次调用指定多个被插值的属性)

TweenParms.Ease(easeType) 指定渐变类型,这里使用Linear表示线性渐变

HOTween.To(object,time,params) To表示从现在的值经过插值后变换到endValuetime表示整个变换进行的时间,params定义了其他参数

(HOTween.From(object,time,params) 把To改用From表示从被指定的endValue经过变换后,成为当前的值)

代码:

void Start () 
{
TweenParms params = new TweenParms();
    parms.Prop("postion", new Vector3(2.0f,0.0f,0.0f)); //坐标
    parms.Ease(EaseType.Linear); //加速度类型
    HOTween.To(gameObject.transform, 2, params);
}

效果:

绑定到该游戏的对象从原来的位置经过两秒移动到了位置(2.0f,0.0f,0.0f) 最后停止在(2.0f,0.0f,0.0f)

移动的速度为匀速,改变移动的速度可以选用其他的渐变类型

其他可选的渐变类型包括:

EaseInSine = 1,EaseOutSine = 2,EaseInOutSine = 3,

EaseInQuad = 4,EaseOutQuad = 5,EaseInOutQuad = 6,

EaseInCubic = 7,EaseOutCubic = 8,EaseInOutCubic = 9,

EaseInQuart = 10,EaseOutQuart = 11,EaseInOutQuart = 12,

EaseInQuint = 13,EaseOutQuint = 14,EaseInOutQuint = 15,

EaseInExpo = 16,EaseOutExpo = 17,EaseInOutExpo = 18,

EaseInCirc = 19,EaseOutCirc = 20,EaseInOutCirc = 21,

EaseInElastic = 22,EaseOutElastic = 23,EaseInOutElastic = 24,

EaseInBack = 25,EaseOutBack = 26,EaseInOutBack = 27,

EaseInBounce = 28,EaseOutBounce = 29,EaseInOutBounce = 30,


 

2 使用自定义的曲线关键点进行插值

代码:

void Start () 
{
    Vector3[] points = new Vector3[2];
    points[0] = new Vector3(2.0f, 0.0f, 0.0f);
    points[1] = new Vector3(2.0f, 1.0f, 0.0f);
    TweenParms parms = new TweenParms();
    parms.Prop("position", new PlugVector3Path(points,PathType.Linear)); //坐标
    parms.Ease(EaseType.Linear); //加速度类型
    HOTween.To(gameObject.transform, 2, parms);
}


效果:

游戏对象先移动到了(2.0f, 0.0f, 0.0f)然后立即移动到了(2.0f, 1.0f, 0.0f)一共花了两秒


3 将插值的动画进行连续播放

void Start () 
    {
        Sequence seq = new Sequence(new SequenceParms().Loops(1,LoopType.Yoyo));
        TweenParms parms = null;
        parms = new TweenParms().Prop("position",new Vector3(1.0f,0.0f,0.0f)).Ease(EaseType.Linear);
        seq.Append(HOTween.To(gameObject.transform,1,parms));
        parms = new TweenParms().Prop("position", new Vector3(1.0f, 1.0f, 0.0f)).Ease(EaseType.Linear);
        seq.Append(HOTween.To(gameObject.transform, 1, parms));
        seq.Play();
    }
4 在动画结束时进行方法回调

代码:没有参数的

  

  void Start () 
    {
        TweenParms parms = null;
        parms = new TweenParms().Prop("position", new Vector3(1.0f, 0.0f, 0.0f)).OnComplete(OnComplete);
        HOTween.To(gameObject.transform, 1, parms);
   }
    private void OnComplete()
    {
        Debug.Log("OnComplete Called!");
     }

代码:有参数的

    void Start () 
    {
        TweenParms parms = null;
        parms = new TweenParms().Prop("position", new Vector3(1.0f, 0.0f, 0.0f)).OnComplete(OnComplete, 50, Vector3.one);
        HOTween.To(gameObject.transform, 1, parms);
   }
    private void OnComplete(TweenEvent e)
    {
        Debug.Log(e.parms[0]);//第一个参数
        Debug.Log(e.parms[1]);//第二个参数
     }


 

5 Loops方法

TweenParms.Loops(times,loopType)

通过该方法可以指定一次插值动画的循环属性

包括以下几种loopType

   

 public enum LoopType
    {
        Restart = 0,Yoyo = 1,YoyoInverse = 2,Incremental = 3,
     }


 

Restart代码:

   

void Start () 
    {
        TweenParms parms = null;
        parms = new TweenParms() .Prop("position", new Vector3(1.0f, 0.0f, 0.0f)).Loops(2, LoopType.Restart);
        HOTween.To(gameObject.transform, 1, parms);
  }


效果:一共播放动画两次,第一次对象从起点运动到了(1.0f, 0.0f, 0.0f)

然后瞬间移动到原点播放第二次动画,效果和第二次相同,最后物体停止在(1.0f, 0.0f, 0.0f)

Yoyo 代码:

   

  void Start () 
    {
        TweenParms parms = null;
        parms = new TweenParms() .Prop("position", new Vector3(1.0f, 0.0f, 0.0f)).Loops(2, LoopType.Yoyo);
        HOTween.To(gameObject.transform, 1, parms);
    }


效果:一共播放动画两次,第一次对象从起点运动到了(1.0f, 0.0f, 0.0f)

然后开始播放第二次动画,从(1.0f, 0.0f, 0.0f)运动到原点,最后停止在原点。

YoyoInverse代码:

    

void Start () 
    {
        TweenParms parms = null;
        parms = new TweenParms().Prop("position", new Vector3(1.0f, 0.0f, 0.0f)).Loops(2, LoopType.YoyoInverse);
        HOTween.To(gameObject.transform, 1, parms);
}

效果:和Yoyo运动的方式相同先运动到(1.0f, 0.0f, 0.0f)在运动回原点,

但是,Yoyo对EaseType不产生影响,YoyoInverse还会对EaseType产生相反的影响。

 

6 处理对静态变量的插值

有时一些静态变量也需要插值操作,但是HOTween不能直接对其进行操作,所以需要做一个代理,这里使用Time.timeScale进行举例。

代码:

   

  class TimeScaleTweenProxy
    {
        public float Value
        {
            get
            {
                return Time.timeScale;
            }
            set
            {
                Time.timeScale = value;
            }
        }
    }
   void Start () 
    {
	TimeScaleTweenProxy proxy = new TimeScaleTweenProxy();
    	TweenParms parms = null;
     	parms = new TweenParms().Prop("Value", 0.4).Ease(EaseType.EaseOutCubic)
        HOTween.To(proxy, duration, parms);
    }

7 其他: delay方法,多次设置propfrom的使用

使用Delay动画将被延时播放

void Start () 
{
TweenParms params = new TweenParms();
     parms.Prop("postion", new Vector3(2.0f,0.0f,0.0f)); //坐标
     parms.Ease(EaseType.Linear); //加速度类型
parms.Delay(1.0f);
     HOTween.To(gameObject.transform, 2, params);
}


可以设置多个prop同时进行插值

void Start () 
{
     TweenParms params = new TweenParms();
     parms.Prop("postion", new Vector3(2.0f,0.0f,0.0f)); //坐标
     parms.Prop("rotation", new Vector3(0.0f,180.0ff,0.0f));
     parms.Ease(EaseType.Linear); //加速度类型
     HOTween.From(gameObject.transform, 2, params);
}


使用From播放动画运动路径是和To相反的

void Start () 
{
     TweenParms params = new TweenParms();
     parms.Prop("postion", new Vector3(2.0f,0.0f,0.0f)); //坐标
     parms.Ease(EaseType.Linear); //加速度类型
     HOTween.From(gameObject.transform, 2, params);
}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值