zoukankan      html  css  js  c++  java
  • 转载雨松的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 }
  • 相关阅读:
    centos7 安装docker 对应的 rabbitmq3.6.15
    golang中defer的使用规则
    Yii2-redis 不用 composer 的安装
    安装并使用PHPunit
    PHP Taint – 一个用来检测XSS/SQL/Shell注入漏洞的扩展
    SQL Antipatterns——SQL 反模式(二)
    tp5 No input file specified.
    vue 封装自定义组件
    判断微信访问
    phalcon windows下安装phalcon-devtools 官网的坑
  • 原文地址:https://www.cnblogs.com/unitySPK/p/6031056.html
Copyright © 2011-2022 走看看