Unity之ITween实现相机运动功能

在学习unity的时候会用到一些强大的插件,iTween就是一个,它是一个动画库,它的应用非常广泛,学习它推荐可以看一下官方给的例子很是经典,应该包括了它里面的所有方法的用法,还有能产生的效果,很强大,之所以有这个插件,作者是奔着以最小的投入产生最大的产出,不说了,直接上例子,现在我们来学习第一个例子Flythrough:

1。创建场景物体,三个Cube、一个plane作为地面,两个pointlight调整摄像机的位置使得视图恰可以斜视场景。如图

给三个Cube上不一样颜色的材质吧看着舒服一点。


2、控制摄像机运动

新建一个C#脚本文件命名“cameracontroller”

 

[csharp]  viewplain copy 在CODE上查看代码片 派生到我的代码片
  1. "code" class="csharp">using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class cameraController : MonoBehaviour {  
  5.     public Transform [] movepath;  //摄像机移动路径节点  
  6.     public Transform [] targetpath;//摄像机投射方向路径节点  
  7.     public Transform  looktarget;//摄像机投射点  
  8.     public float value;  
  9.   
  10.   
  11.     private float  redposition=0.16f;  
  12.     private float  blueposition=0.53f;  
  13.     private float greenposition=1.0f;  
  14.   
  15.     //gui style;  
  16.     public Font font;  
  17.     private GUIStyle style=new GUIStyle ();  
  18.   
  19.     // Use this for initialization  
  20.     void Start () {  
  21.         style.font=font;  
  22.   
  23.   
  24.       
  25.     }  
  26.     void OnGUI()  
  27.     {  
  28.         value =GUI.VerticalSlider (new Rect (Screen.width -20,20,15,Screen .height -40),value ,1,0); //垂直滑动条,控制摄像机移动  
  29.         iTween .PutOnPath (gameObject ,movepath ,value );//iTween方法,在movepath节点构成的路径上根据value的值把gameobject移动到相应的位置  
  30.         iTween .PutOnPath (looktarget ,targetpath ,value );  
  31.         transform .LookAt (iTween .PointOnPath (targetpath,value ));//iTween.pointonpath是根据value的值把looktarget移动到相应的位置,然后摄像机投射向那个位置  
  32.   
  33.         if(GUI.Button (new Rect (5,Screen .height -25,50,20),"red"))  
  34.         {  
  35.             SlideTo(redposition );  
  36.   
  37.         }  
  38.         if(GUI.Button (new Rect (60,Screen .height -25,50,20),"blue"))  
  39.         {  
  40.             SlideTo(blueposition );  
  41.               
  42.         }  
  43.         if(GUI.Button (new Rect (115,Screen .height -25,50,20),"green"))  
  44.         {  
  45.             SlideTo(greenposition );  
  46.               
  47.         }  
  48.     }  
  49.     void OnDrawGizmos()  
  50.     {  
  51.         iTween .DrawPath (movepath ,Color.magenta );  
  52.         iTween .DrawPath (targetpath ,Color .cyan );  
  53.         Gizmos .color =Color.black;  
  54.         Gizmos .DrawLine (transform .position ,looktarget .position );  
  55.   
  56.     }  
  57.     void SlideTo(float position)  
  58.     {  
  59.         iTween .Stop (gameObject );//销毁gameobject上的所有iTween  
  60.         //插值方法  
  61.         iTween.ValueTo (gameObject,iTween.Hash ("from",value ,"to",position ,"time",2,"easetype",iTween.EaseType.easeInOutCubic,"onupdate","Slidevalue"));  
  62.   
  63.     }  
  64.     void Slidevalue(float p)  
  65.       
  66.     {  
  67.         value=p;  
  68.     }  
  69.     // Update is called once per frame  
  70.     void Update () {  
  71.       
  72.     }  
  73. }  

 
 脚本的作用就是根据所给的值让摄像机移动到相应的位置,代码很简单 
 

 

因为定义了摄像机移动的路径和投射点的路径节点所以在Hierarchy面板中新建空物体作为节点,如图:


然后把相应的节点拖动到脚本的相应位置:

那就看一下咱的阶段性效果吧;

曲线位置编辑是比较好时间的,不知道哪位大神能给个简单的方法,可以省点时间。

3.给每个节点分别加个可视化的线条球以便与编辑;

新建C#脚本,命名“targetpath”

 

[csharp]  viewplain copy 在CODE上查看代码片 派生到我的代码片
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class targetpath : MonoBehaviour {  
  5.   
  6.     void OnDrawGizmos()  
  7.     {  
  8.         Gizmos .color =Color.cyan ;  
  9.         Gizmos .DrawSphere(transform .position ,0.25f);  
  10.   
  11.     }  
  12. }  
//

 

Gizmos 辅助线框

 

Gizmos are used to give visual debugging or setup aids in the sceneview.

Gizmos是用于在场景视图可视化调试或辅助设置。

不懂得话看文档啊,其实我也是用到了才看的,我是菜鸟啦,

到此基本完工了,自己刚刚写blog可能有很多地方说的不够详实,原谅一下菜鸟啦。

看一下效果如何:

这是我的学习笔记了,代码对照着官方的文档很容易就能读懂的,也达到了iTween的初衷,以最小的投入得到最大的产出。行了,在学习中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值