(转)【Unity3D游戏开发】—— iTween笔记 一(战棋寻路)
来源:互联网 发布:枪械3d模型数据 编辑:程序博客网 时间:2024/06/16 19:12
iTween这个动画库非常好用,用 它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等效果。
iTween下载则在Asset Store上搜索iTween并下载iTween Visual Editor然后Import即可。
下面是iTween官网: http://itween.pixelplacement.com/index.php
这里是仿官网上一个战棋寻路的例子。
鼠标移动的方块上,方块抬起并变成绿色,移走则还原。点击方块后,方块下降并变为红色,然后小球并先延X轴移动,在延Z轴移动到鼠标点击位置。
基本思路步骤
1.9*9方格场景
2.格子上升下降动态效果
3.小球移动效果
下面是准备工作点击 GameObject -> Create Other -> Cube 创建一个正方体, 将其y轴的Scale改为0.2,这样就得到一个扁平的方块。然后添加一个tile标签,将Cube选中这个标签,最后将Cube拖入Project视图中,这样就建立了一个预设。
然后创建一个C#脚本
代码如下,注释很详细
using UnityEngine;using System.Collections;public class iTweenTest : MonoBehaviour {//9*9方格public int size = 9;//绑定Cubepublic GameObject tileCube;//绑定shperepublic GameObject shpere;//鼠标前一个指向的方块private GameObject preTile;//两段移动坐标Vector3[] wallPoint = new Vector3[2];//标识int index; //小球所在的方块private GameObject shpereTile;void Start () {CreateGird();}//创建9*9方格void CreateGird(){for(int i = 0; i<size; i++){for (int j = 0; j<size; j++){GameObject t = (GameObject)Instantiate(tileCube, new Vector3(i, 0, j), Quaternion.identity);//黑白相间,奇数为白,偶数为黑if ((i + j) % 2 == 0){iTween.ColorTo(t, Color.black, 0.5f);}}}}//抬起方格void MoveToUp(GameObject obj){//如果前一个方格抬起则将其放下if (preTile != obj && preTile != null){iTween.MoveTo(preTile, new Vector3(preTile.transform.position.x, 0.0f, preTile.transform.position.z), 0.5f);//偶数为黑,奇数为白if ((preTile.transform.position.x +preTile.transform.position.z) % 2 == 0 ){iTween.ColorTo(preTile, Color.black, 0.5f);}else{iTween.ColorTo(preTile, Color.white, 0.5f);}}//如果方格未抬起,则将方格抬起if (obj.transform.position.y == 0){iTween.ColorTo(obj, Color.green, 0.5f);iTween.MoveTo(obj, new Vector3(obj.transform.position.x, 0.5f, obj.transform.position.z), 0.5f);//保存前一个方格信息preTile = obj;}}//两段移动小球void MoveToPoint(){//由于是两段,则需小于2if (index < 2){//iTween的MoveTo函数可以传入HashTable,故以键值对的形式传入.//"position"(位置) : 移动坐标Vector3//"speed"(速度) : 10秒//"easetype"(移动特效) : 直线//"oncomplete"(回调函数) : MoveToPoint//"oncompletetarget"(这个应该是指定回调的对象,如果不指定的话,iTween会把oncomplete方法丢到了target GameObject上,而不是本GameObject.) : 本对象iTween.MoveTo(shpere, iTween.Hash("position", wallPoint[index], "speed", 10f, "easetype", "linear", "oncomplete", "MoveToPoint", "oncompletetarget",this.gameObject));//标识++index++;}}void Update () {//以鼠标指向创建一个射线Ray ray = camera.ScreenPointToRay(Input.mousePosition);//射线碰撞信息RaycastHit hit; //射线碰撞if (Physics.Raycast(ray, out hit)){//当小球在一个方块上时,下面的方块不动,并且为红色if (shpereTile != null){iTween.MoveTo(shpereTile.transform.gameObject, new Vector3(shpereTile.transform.position.x, 0.0f, shpereTile.transform.position.z), 0.5f);iTween.ColorTo(shpereTile.transform.gameObject, Color.red, 0.5f);}//如果碰撞的对象tag为tile,也就是是方块if (hit.transform.tag == "tile"){//打印坐标print(hit.transform.position);//向上抬动方块MoveToUp(hit.transform.gameObject);//鼠标点击方块if (Input.GetMouseButtonDown(0)){//小球所在方块不为空if (shpereTile != null){//小球所在方块放下if ((shpereTile.transform.position.x + shpereTile.transform.position.z) % 2 == 0){iTween.ColorTo(shpereTile, Color.black, 0.5f);}else{iTween.ColorTo(shpereTile, Color.white, 0.5f);}}//记录小球所在的方块shpereTile = hit.transform.gameObject;index = 0;//以碰撞信息初始化坐标。wallPoint[0] = new Vector3(hit.transform.position.x, 0.5f, shpere.transform.position.z);wallPoint[1] = new Vector3(hit.transform.position.x, 0.5f, hit.transform.position.z);//小球移动MoveToPoint();}}}else{//当鼠标移出方块区域时,以前一个方块的信息将方块放下。if (preTile != null){iTween.MoveTo(preTile, new Vector3(preTile.transform.position.x, 0.0f, preTile.transform.position.z), 0.5f);if ((preTile.transform.position.x + preTile.transform.position.z) % 2 == 0){iTween.ColorTo(preTile, Color.black, 0.5f);}else{iTween.ColorTo(preTile, Color.white, 0.5f);}}}}}
这个例子运用到的iTween中函数有,MoveTo(), ColorTo(),一个是移动,一个是变色。
函数具体参数以及含义可以查阅iTween官方文档来学习,虽然是英文,也蛮基础的
http://itween.pixelplacement.com/documentation.php
作者:王大康
阅读全文
0 0
- (转)【Unity3D游戏开发】—— iTween笔记 一(战棋寻路)
- 【Unity3D游戏开发学习笔记】(一)Unity3D初认识
- Unity3D——自动寻找路径(插件iTween)
- Unity3D教程:游戏开发算法(一)
- Unity3D 游戏开发笔记(1)
- unity3D游戏开发之iTween介绍和用法
- 【Unity3D游戏开发学习笔记】(二)Unity3D编辑器总览
- Unity3D手游开发系列笔记(一)——前言:选择什么样的游戏引擎来开发你的游戏?
- 【连载】Unity3D ——强大的跨平台3D游戏开发工具(一)
- Unity3D ——强大的跨平台3D游戏开发工具(一)
- Unity3d游戏开发之C#开发(一)
- 【Unity3D游戏开发学习笔记】(三)移山倒海—Terrain的建造
- 【Unity3D游戏开发学习笔记】(四)一切都动起来—Animator组件的应用
- 【Unity3D游戏开发学习笔记】(五)灵魂降临—Unity脚本的简单运用
- 【Unity3D游戏开发学习笔记】(六)上帝之手—GameObject的操作
- iTween研究院之学习笔记Move移动篇(一)
- iTween研究院之学习笔记Move移动篇(一)
- iTween研究院之学习笔记Move移动篇(一)
- Opencv之mat介绍
- 为什么-128用二进制表示为1000000000000000?
- Struts2简单实现
- 数组
- Tensorflow:模型保存/模型恢复?
- (转)【Unity3D游戏开发】—— iTween笔记 一(战棋寻路)
- 爬虫系列16.urlparse模块
- CMB标量功率谱第一个谱指数跑动项n(1)跑动带来的影响
- JQ放大镜插件的调用
- 机器学习-采用正态贝叶斯分类器、决策树、随机森林对wine数据集分类
- Ubuntu系统备份和还原,从此避免系统重装
- UVA 11988 破损的键盘
- flask-on-iis
- MFC:判断复选框的选中状态