Unity3d场景漫游---iTween实现
接触U3D以来,我做过的场景漫游实现方式一般有以下几种:
- Unity3d中的Animation组件,通过设置摄像机的关键点实现场景漫游
- 第一人称或第三人称控制器
- 编写摄像机控制脚本
- iTween
iTween实现相对来说比较简单,而且动画效果非常好,因此是我做场景漫游的首选,下面我来总结一下iTween做场景漫游的具体实现
简单做了个小demo如图:

我在场景中建了4个空物体作为路径点,摄像机从一个路径点到下一个路径点循环往复,当按下空格键后,漫游会暂停,松开后继续,代码符合我一贯的风格,注释很详细,我就不多解释了.
涉及到的代码绑在摄像机上面,如下:
using UnityEngine;
using System.Collections;
public class TweenRoam : MonoBehaviour
{
public Transform[] paths; //路径寻路中的所有的关键点 使用空物体路径点
//public Vector3[] paths; //也可以使用这句代码直接给路径点的位置赋值
public Hashtable args; //设置路径键值对
public float m_speed = 10f; //漫游的速度
public bool isMove = true; //是否漫游
void Start()
{
args = new Hashtable();
args.Add("path", paths); //设置路径的点
args.Add("easeType", iTween.EaseType.linear); //设置类型为线性,线性效果会好一些。
args.Add("speed", m_speed); //设置寻路的速度
args.Add("movetopath", false); //是否先从原始位置走到路径中第一个点的位置
args.Add("orienttopath", true);//是否让模型始终面朝当面目标的方向,拐弯的地方会自动旋转模型,如果你发现你的模型在寻路的时候始终都是一个方向那么一定要打开这个
args.Add("looktarget", Vector3.zero); //移动过程中面朝一个点
args.Add("loopType", "loop"); //三个循环类型 none loop pingpong(一般 循环 来回)
args.Add("NamedValueColor", "_SpecColor"); //这个是处理颜色的。可以看源码的那个枚举。
args.Add("delay", 0f); //延迟执行时间
iTween.MoveTo(gameObject, args); //让模型开始寻路 这个方法和放在Update函数里的MoveUpdate()方法效果一样 Update里为了控制是否移动
}
void Update()
{
RoamControl();
}
/// <summary>
/// 控制动画暂停和继续的函数
/// </summary>
void RoamControl()
{
if (Input.GetKeyDown(KeyCode.Space))
{
iTween.Pause();
}
if (Input.GetKeyUp(KeyCode.Space))
{
iTween.Resume();
}
}
void OnDrawGizmos()
{
//在Scene视图中绘制出路径
iTween.DrawLine(paths, Color.yellow);
iTween.DrawPath(paths, Color.red);
}
}
Demo源码地址: http://pan.baidu.com/s/1jIulQpo
注意:代码绑定到摄像机上后要给paths指定路径,或者用vector那句直接赋值也可以
关于iTween的其他知识点
iTween.MoveTo(): 让模型移动到一个位置,它的底层函数是通过动态的修改模型每一帧的transform.position完成的,所以它会百分之百到达目标点,不会出现误差。
iTween.MoveFrom():它和上面的一样,iTween.MoveTo()是将模型移动到目标位置,而iTween.MoveFrom()是将模型从目标位置移动到原始位置。
iTween.MoveAdd() 和iTween.MoveBy()底层实现一样,大家可以去看源码。处理移动时采用的是transform.Translate也就是API的平移,这样在处理移动的时候可能会出现一些误差,但是效果好点。
iTween.MoveUpdate():和iTween.MoveTo()差不多,只是它需要放在循环或者Update()中。
iTween.Pause(); 暂停
iTween.Resume();恢复
Unity3d场景漫游---iTween实现的更多相关文章
- 基于SketchUp和Unity3D的虚拟场景漫游和场景互动
这是上学期的一次课程作业,难度不高但是也一并记录下来,偷懒地拿课程报告改改发上来. 课程要求:使用sketchUp建模,在Unity3D中实现场景漫游和场景互动. 知识点:建模.官方第一人称控制器.网 ...
- Unity3d 简单的小球沿贝塞尔曲线运动(适合场景漫游使用)
简单的小球沿贝塞尔曲线运动,适合场景漫游使用 贝塞尔曲线:(贝塞尔曲线的基本想法部分摘自http://blog.csdn.net/u010019717/article/details/4768 ...
- 【Unity入门】场景编辑与场景漫游快捷键
版权声明:本文为博主原创文章,转载请注明出处. 打开Unity主窗口,选择顶部菜单栏的“GameObject”->“3D Object”->“Plane”在游戏场景里面添加一个面板对象.然 ...
- Unity3d场景合并
Unity3d场景合并 一.Unity3d场景合并,有一次的情况是这样的,就是我们是每个人都在开发,每个人有不同的场景,那么合并的时候,有些会出问题,那么我有一个好的方案,就是首先弄一个公共的资源库, ...
- OSG实现场景漫游(转载)
OSG实现场景漫游 下面的代码将可以实现场景模型的导入,然后在里面任意行走,于此同时还实现了碰撞检测. 源代码下载地址: /* * File : Travel.cpp * Description : ...
- 【转】Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)
本篇文章主要介绍了"Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)",主要涉及到Unity3D 场景切换与持久化简单数据储存(PlayerPrefs类)方 ...
- 全景视频外包团队:技术分享Unity3D全景漫游
作者:未知 1.建模中使用的图片.文件.文件夹等以及模型中物体.材质等的名称都不能使用中文或者特殊符号,可以使用英文字母.数字.下划线等 2.调整Max的单位为米 3.烘培光影的设置 4.模型的中的植 ...
- unity3d 场景间数据传递
在游戏项目中,常常会使用到用户信息,获取信息当然可以从数据库中获取.但是对场景多的游戏这样做是不正确的,那么我我们就需要再第一次获取用户信息之后, 同时在其它的场景中共享用户数据,避免对服务器增加负担 ...
- Unity3D 场景切换加载进度条实现
需要三个场景,场景A,场景B,场景C: 场景A:一个按钮,点击加载场景B: 场景B:从A切换到C过度场景,加载进度条: 场景C:目标场景: 创建OnProgress.cs脚本: using Syste ...
随机推荐
- Lamp环境下设置绑定apache域名
先进入apache配置目录 [root@iZ233vkrtsiZ local]# cd /usr/local/apache/conf/vhost 然后找到自己网站的配置.以本站为例 [root@iZ2 ...
- 解决mysql 1032 主从错误
1032错误----现在生产库中好多数据,在从库误删了,生产库更新后找不到了,现在主从不同步了,再跳过错误也没用,因为没这条,再更新还会报错 临时解决方案 mysql> stop slave; ...
- ASP.NET - 自定义控件处理页面事件(控件与页面数据交互)的方法
//用委托的方法实现 //控件代码 public delegate void DelegateFunction( string sPageTitle ); private DelegateFuncti ...
- 移动设备应用程序中支持多个屏幕大小和 DPI 值
支持多个屏幕大小和 DPI 值的指导原则 要部署独立于平台的应用程序,应了解不同的输出设备.设备可以具有不同的屏幕大小或分辨率以及不同的 DPI 值或密度. Flex 工程师 Jason SJ 在他的 ...
- Java自然语言处理NLP工具包
1. Java自然语言处理 LingPipe LingPipe是一个自然语言处理的Java开源工具包.LingPipe目前已有很丰富的功能,包括主题分类(Top Classification).命名实 ...
- MyBatis绑定错误--BindingException:Invalid bound statement (not found)
如果出现: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 一般的原因是Mapper i ...
- A tutorial on Principal Components Analysis | 主成分分析(PCA)教程
A tutorial on Principal Components Analysis 原著:Lindsay I Smith, A tutorial on Principal Components A ...
- Bootstrap WPF Style(二)--Glyphicons 字体图标
介绍 关于Glyphicons字体图标,首先给出友情链接 Glyphicons 这个项目是在Bootstrap WPF Style项目基础上做的,详见http://www.cnblogs.com/ts ...
- vs2015 动态链接库问题
问题: 最近要用vs2015编写一个动态链接库,生成动态链接库后,换到另一台windows下发现无法使用. 使用depends检查发现原因是缺少 MSVCP140.DLL等动态链接库. 解决: 将编译 ...
- db_link
1.查询 SYSDBA登录, sys登录 SELECT * FROM SYS.link$; select owner,object_name from dba_objects where obj ...