zoukankan      html  css  js  c++  java
  • NGUI的缓动

        NGUI集成了很多动画组件,用于实现各种动画效果。

        常用的缓动效果使用方法如下:

    TweenPosition tw=UITweener.Begin<TweenPosition>(gameobj, 0.5f);

    Vector3 vpos=gameobj.transform.position;
    tw.method = UITweener.Method.Linear;

    //表现方式提供如下6种

    // public enum Method  

    //{      Linear,  

    //       EaseIn,  

    //       EaseOut,  

    //       EaseInOut,  

    //       BounceIn,  

    //      BounceOut,  

    //}  


    tw.from = vpos;

    vpos.x =0;

    tw.to = vpos;

          不能适用于多个对象,目前没深入了解,没找到可用的方法,

         像是这样简单的缓动,使用自己利用数学函数写的时候居多。

    using System;
    using UnityEngine;
    using System.Collections;
    using System.Timers;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;

    public class TweenControl : MonoBehaviour
    {
    public TweenControl ()
    {

    }

    static ArrayList tweens=new ArrayList();

    public class TweenItem{

    public Transform target;
    public int initx;
    public int inity;
    public int ratiox;
    public int ratioy;
    public int desx;
    public int desy;
    public float curx=0;
    }

    void Start () {

    }
    public static void tween(Transform target,int initx,int inity,int ratiox,int ratioy,int desx,int desy){
    //Dictionary<int,TweenItem> dic=new Dictionary<int,TweenItem>();
    TweenItem item=new TweenItem();
    item.target = target;
    item.initx = initx;//初始位置
    item.inity = inity;
    item.ratiox = ratiox;//缓动系数,快慢
    item.ratioy = ratioy;
    item.desx = desx;//终点
    item.desy = desy;
    //dic.Add (0, item);
    tweens.Add (item);

    // Update (null,null);

    //tm.Elapsed += new ElapsedEventHandler(UpdateTw);
    //tm.Start ();
    }

    // Update is called once per frame
    void Update() {
    int count = tweens.Count;
    int index = 0;
    Boolean flag = false;
    for (int i=0; i<count; i++) {
    TweenItem item=tweens[index] as TweenItem;
    Vector3 pos = item.target.localPosition;
    pos.x = item.initx + item.ratiox*Mathf.Sin (item.curx);
    pos.y=item.inity+item.ratioy*Mathf.Sin (item.curx);
    item.curx+= 0.0314f*1.5f;
    item.target.localPosition = pos;
    if(Math.Abs(pos.x-item.desx)<3&&item.ratioy==0){
    tweens.RemoveAt(index);
    flag=true;
    }
    Debug.Log(pos.x);
    if(Math.Abs(pos.y-item.desy)<3&&item.ratiox==0){
    tweens.RemoveAt(index);
    flag=true;
    }
    index=flag==false?index+1:index;

    }

    }


    }

          

  • 相关阅读:
    Linux基础命令-pwd
    Linux基础命令-sosreport
    c#设置xml内容不换行;添加属性为xsi:nil="true"的空节点
    sql ROW_NUMBER() 排序函数
    服务器×××上的MSDTC不可用解决办法
    MSDTC Service的访问权限
    setTimeout
    ASP.NET中Request.Form中文乱码的解决方
    js实现小数点后保留N位并可以四舍五入——js对float数据的处理
    Meta标签中的viewport属性含义及设置
  • 原文地址:https://www.cnblogs.com/sevenmoons/p/4142553.html
Copyright © 2011-2022 走看看