unity游戏视图中使用坐标轴控制物体unity3d 鼠标旋转物体和移动

Unity3D 游戏引擎之控制模型移动旋转与碰撞(七)
Unity3D 游戏引擎之控制模型移动旋转与碰撞
雨松MOMO原创文章如转载,请注明:转载自原文地址:
上一章介绍了模型的旋转与平移,本章介绍一些好玩的,通过按钮来控制模型的移动与镜头的跟随,脚本参数的传递。个人觉得Unity3D 这套游戏引擎真的很棒,它可以为开发者节省时间。用更多少的脚本,可以实现更多的功能。先赞一下,哇咔咔~废话不多说了,入正题!
首先在3D世界中创建一个箱子模型,然后添加一个脚本,命名为 &js0绑定到这个箱子中。在添加一个脚本,命名为js1 ,同样绑定到这个箱子上,用来实现对象的创建与调用方法参数的传递 ~
var C & 这里声明一个控制类的对象,用来进行参数的传递,调用方法。
Getomponent(js1): 得到脚本名称为js1的对象,这里把值赋给Control,就可以使用js1脚本中的方法了,下面的代码中通过这个对象调用模型的移动方法。
Input.GetKey(KeyCode): 这个方法返回一个Bool 判断当前按键是否被按下,当然这里只能运行在PC上才可以感应按钮,因为IOS的设备上没有按键,以后我会介绍在IOS上添加游戏摇杆的功能,本章我们先学习一下PC上的基本按钮响应。
实现按下“W”控制物体向前
实现按下“S”控制物体向后
实现按下“A”控制物体向左平移
实现按下“D”控制物体向右平移
实现按下“Q”控制物体向左旋转
实现按下“E”控制物体向右旋转
js0.js 代码
//旋转移动速度
var Speed = 50;
//控制对象
function Update()
//得到控制对象
Control = GetComponent(js1);
//判断按键
if(Input.GetKey(KeyCode.W))
Control.ForWard();
}else if(Input.GetKey(KeyCode.S))
Control.Back();
if(Input.GetKey(KeyCode.A))
Control.GLeft();
}else if(Input.GetKey(KeyCode.D))
Control.GRight();
if(Input.GetKey(KeyCode.Q))
Control.leftRotate(Vector3.up *Time.deltaTime * -Speed);
}else if(Input.GetKey(KeyCode.E))
Control.RightRotate(Vector3.up *Time.deltaTime * Speed);
js1.js 代码
参数的传递可以使用obj进行传递,代码中我将旋转的角度做为参数传递到了js1.js中控制模型旋转。
Vector3 标示一个3D的向量单位,它可以标示模型的三个方向,这里根据旋转的角度与移动的向量设置它。
//前进速度
var Speed = 50;
function ForWard()
transform.Translate(Vector3.forward * Time.deltaTime *Speed);
function Back()
transform.Translate(Vector3.forward * Time.deltaTime * -Speed);
function GLeft()
transform.Translate(Vector3.right * Time.deltaTime *-Speed);
function GRight()
transform.Translate(Vector3.right * Time.deltaTime * Speed);
//传递参数
function leftRotate(obj)
transform.Rotate(obj);
function RightRotate(obj)
transform.Rotate(obj);
OK点击运行,通过按键我们可以正常的控制模型平移与旋转,但是现在有两个问题 1, 主摄像机不能跟随控制模型, 2 &、模型可以横穿过山丘,感觉很假。下面我们解决这两个问题。
在Unity3D标准资源的脚本中系统帮我们写好了跟随脚本.如下图所示,点击Import Package - & Scripts 将系统脚本导入。
选中摄像机 点击Component - & Camera-Control - & Smoot Follow ,给主摄像机添加一个跟随脚本。
跟随脚本添加完以后,须要指定一个跟随的物体,下面红框内将跟随的物体Cube拖动进来,这里Cube就是我们上面控制的模型,那么这样,摄像机将会一直在身后跟随我们控制的模型。下面是一些跟随的参数,设置 跟随的距离 高度等等,盆友们手动的修改一下运行游戏就可以看出来变化,。
控制物体的碰撞可以使用 选中模型, Component - & Physics - & Rigidbody 设置这个模型的重力碰撞。那么这样你控制的模型就不会穿过山丘,而是感应重力碰撞。
点击运行游戏,看看效果,控制箱子行走的同时,我们可以清晰的看出旁边的树木被物理碰撞所干扰,前后,左右,旋转 完全OK .大家快试试吧。哇咔咔~~
明天开始MOMO又要开始处理一部分iPhone 的界面图形化开发,Tomorrow is another day ,加油哇咔咔~&Unity3D 的世界中脚本还可以做很多事情,以后我在慢慢向各位道来~ 欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,哇咔咔~~~
原文链接:Essayer le cours pour Gratuit USDEssayer le cours pour Gratuit USD随着互联网和智能手机的快速发展,《Angry Birds》(愤怒的小鸟)、《Temple Run》(神庙逃亡)等手游作品取得巨大成功,让独立开发者赚得第一桶金。移动平台的3D网络游戏开发成为趋势,优秀作品雨后春笋般涌现,Supercell Oy公司开发的《Clash of Clans》(部落冲突)与Blizzard Entertainment公司开发的《Hearth Stone》(炉石传说)风靡全球。网易、腾讯、巨人、恺英网络等业界著名公司也将游戏业务重心转向移动平台,市场涌现出莉莉丝、银汉科技等一大批新锐手游公司。
Unity引擎简单易用、功能丰富、具有跨平台等优秀特性,已成为业界最重要的开发工具。目前,全球大部分独立开发者与游戏工作室都选择Unity游戏引擎作为开发工具,快速开发高品质的手游作品。
《Unity游戏编程基础》课程主要讲述了如何使用Unity引擎开发移动端3D游戏。与课程内容同步,我们设计基于移动平台的第一人称3D射击游戏《慕课英雄》(MOOC HERO)。整个过程分为三个阶段:第一阶段,介绍物理系统、图形系统和音频,用于构建多米诺骨牌的场景;第二阶段,使用Unity的地形系统搭建游戏场景,将第一阶段的多米诺骨牌模型添加到游戏场景中,添加玩家与敌人角色,使用动画系统控制玩家与敌人角色动画的播放,编写Unity脚本实现玩家与敌人的行为和场景中的游戏逻辑;第三阶段,使用uGUI设计游戏交互界面,使用粒子系统与线渲染器实现玩家开枪效果和场景火焰效果,同时制作了场景中收集物以及游戏胜利与失败画面,最终将项目部署到移动平台。
此外,网络开发、人工智能、Shader(着色器)编程等Unity引擎高级功能将在本专项课程有关游戏编程的第二门课中进行学习。
通过本门课程的学习,你将理解Unity引擎的主要功能,学会利用Unity引擎开发移动平台的3D游戏,在入职游戏行业或独立游戏开发道路上迈出重要一步。? partir de la le?on
大家好,欢迎学习本门课程,踏上游戏开发之路! 本课程,我们使用Unity游戏引擎学习游戏开发,将开发的游戏部署到PC端和移动终端。本周课程的学习中,我们首先介绍课程的基本信息。接着,我们学习下载、安装Unity编辑器,并对Unity编辑器的界面、操作进行初步了解;最后,我们学习图形、音频等游戏资源的相关知识以及制作获取途径。 如果在概念、测试或是技术细节上遇到困难,可以在讨论区寻求帮助。希望大家融入Coursera学习社区,互相帮助,共同进步。 现在,让我们开始游戏开发之旅!欢迎大家继续学习 Unity 游戏编程基础 在 Unity 安装结束后,我们对 Unity 编辑器的界面进行介绍 本节采用 PPT 讲解 加项目演示的方式介绍 Unity 编辑器的用户界面 在 PPT 讲解环节,我们系统地介绍 Unity 编辑器的界面 而在项目演示的环节,我们演示 Unity 编辑器的界面功能 大家可以根据自己的专业基础和学习能力的情况 从下面三种方法选择一种方法来进行学习 第一种方法,先看 PPT 讲解,对相关知识有一个系统的了解 然后观看项目演示视频,学习知识点的应用 在观看 PPT 讲解视频过程中,希望大家能够 对视频进行暂停操作,同时打开 Unity 的软件界面 对照学习,这样我相信大家能够更容易理解我们 PPT 里边的内容 第二种方法,先看项目演示的视频 了解知识点的具体的应用,再回头看 PPT 讲解阶段 这样可以有针对性的学习相关的知识点。 第三种方法,跳过PPT讲解,直接进入项目演示 通过理解项目中知识点的运用,完成相关知识点的学习,不需要回顾 PPT 讲解。 下面我们进行 PPT 讲解阶段 本节我们主要介绍 Unity 编辑器界面的相关信息 熟悉 Unity 编辑器界面, 将方便你进行下面的课程的学习 Unity 中常用的视图包括 Scene 场景视图, Game 游戏视图 Hierachy 层级视图, Project 项目视图以及 Inspector 检视视图 下面我们将介绍这些视图。 首先介绍 Project 视图 该视图是整个项目的资源汇总,包含了游戏项目中的场景、 模型 材质、 脚本、 外部导入的网格模型等所有的资源文件 该视图中的 Create 按钮用于创建资源文件、 文件夹 接下来是搜索框,在搜索框里,你可以输入相关的资源的关键字进行资源的搜索 其次是 Hierachy 层级视图 该视图包含了当前场景中所有的游戏对象 该视图中的 Create 按钮用于创建场景中的游戏对象 搜索框,与 Project 项目、 视图类似的,用于搜索 Hierachy 视图中的游戏对象 接着介绍 Inspector 视图 该视图用于显示当前选定游戏对象的详细信息 包括游戏对象的名称、 标签、 几何属性 以及其他的组件信息,如果用户单击 Edit 菜单栏下与项目相关的设置 Inspector 视图中会显示与设置相关的参数 如图是一个 Cube 游戏对象的检视视图 在该视图中显示了 Cube 的相关信息 Scene 场景视图 用于显示场景中的所有模型、 光源、 摄像机 材质、 音效等游戏对象。 在场景视图中 可以通过可视化的方式对场景中的游戏对象进行编辑 [空白_录音} 接下来,我们对场景视图包含的按钮进行介绍 Shaded 表示场景当前的绘图模式 它控制游戏场景中的游戏对象和采用何种方式 进行显示,常用显示方式有 Texture 纹理方式 网格线[听不清]方式、 2D 开关 控制场景显示模式在 2D 和 3D 之间切换 光源开关,用于切换场景中的灯光的打开关闭 声音开关,用于切换声音的开与关 搜索框,搜索场景中的游戏对象 如果找到该物体,它的颜色突出显示,其他物体都用灰色显示 接下来我们介绍 Game 游戏视图 该视图对游戏进行预览,通过它来预览完整的游戏效果 游戏视图不支持直接编辑,对场景视图中的原数进行操作才能达到编辑的效果 接下来我们对场景视图的按钮进行介绍 首先是 Free Aspect,用于设置整个屏幕显示的比例 接着是 Maxmize on Play 按此按钮可以在游戏预览时,让游戏视图扩大到整个编辑器 最后是 Mute audio 静音按钮,按下此按钮,游戏预览时会静音 接下来我们将介绍 Unity 编辑器的菜单栏 Unity 编辑器菜单栏集成了 Unity 的所有功能 通过菜单栏的学习,可以对 Unity 各项功能有比较直观的了解 File 菜单 主要包含项目与场景的创建、 保存及输出等功能 Edit 菜单 主要包括对场景进行一系列的编辑及环境设置的命令 Assets 主要用于对项目 视图中的资源进行管理 在 Project 项目视图中选择 Assets 然后点击右键,也可以弹出 Assets 功能的菜单 [空白_录音] GameObject 游戏对象菜单 对层级视图中的游戏对象进行管理 与 Project 视图项目类似 在 Hierarchy 视图点击鼠标右键可以打开与 GameObject 菜单中相类似的游戏对象的菜单 接下来是 Component 菜单 组件菜单,用于管理选中游戏对象的组件 层级、 场景或者项目视图中 选中游戏对象后,点击 Inspector 检视视图中的 Add Component 按钮 下拉菜单内容与组件菜单非常相似 Window 窗口菜单 包含各种窗口的切换、 布局等操作 还可以通过它打开各种视图以及访问 Assets Store 的资源商店 最后是 Help 菜单 包含 unity 用户手册与脚本参考的菜单 能够帮助开发者学习和掌握 Unity 最后我们将介绍 Unity 编辑器的工具栏 Unity 工具栏位于菜单栏的下方,它提供了常用功能的快捷方式 首先是 Transform Tools,表示变换工具 用于操作场景中的游戏对象。 其中,手型工具用于整体平移场景视图 移动工具对选中的游戏对象进行平移操作 旋转工具对选中的游戏对象进行旋转操作 缩放工具对选中的游戏对象进行缩放操作 二维缩放工具对二维物体和 uGUI 进行缩放操作 其次,是 Transform Gizmo Tools 它表示辅助变换工具,它由两部分组成 首先是左边的按钮,它表示游戏对象的轴心点设置 包括 Center 与 Pivot 两个可选参数 其中 Center 表示以所有选中游戏对象的中心为轴心点 而 Pivot表示以最后一个选中游戏对象的中心为轴心点 其次是右边的按钮,它表示游戏对象坐标的显示方式 其中 Global 表示以全局坐标显示游戏对象坐标 而 Local 表示以自身坐标显示游戏对象坐标 接下来是游戏的播放控制 它包含三个按钮,可以控制游戏的运行、 暂停与调试 运行游戏按钮,控制游戏的运行与结束 Game 视图实时地显示出游戏运行的效果 暂停游戏按钮,控制游戏的暂停与继续运行 逐帧播放按钮,采用逐帧预览的方式运行游戏,开发者利用该功能对开发的游戏进行逐帧调试 Layers 分层下拉列表,用于控制 Scene 视图中游戏对象的显示 睁眼符号表示属于该层的游戏对象在场景中可见,闭眼表示不可见 如图 Everything 旁是睁眼符号,表示可以在场景中看到所有的物体 Layout 是布局下拉列表 控制 Unity 编辑器包含的多个视图布局方式 支持用户自定义布局 介绍完 Unity 编辑器界面以后,我们将介绍游戏资源相关的概念 下节我们将先讲解图形资源的获取与制作 下面进入演示环节 我们将熟悉 Unity 编辑器的用户界面和基本操作 为顺利学习本课程的后续的内容打下良好的基础 Essayer le cours pour Gratuit USD
Rejoignez-nous gratuitement et obtenez des recommendations, des mises à jour et des offres personnalisées.CommencezCoursera propose un accès universel à la meilleure formation au monde,
en partenariat avec des universités et des organisations du plus haut niveau, pour proposer des cours en ligne.(C) 2018 Coursera Inc. Tous droits réservés.在unity中用鼠标控制控制物体旋转 - 简书
在unity中用鼠标控制控制物体旋转
功能大概是这个样子的,用鼠标的上下、左右移动来控制unity中某个物体的左右、上下转转。
void Update()
Vector3 fwd = cam.transform.
fwd.Normalize();
if (Input.GetMouseButton(0))
Vector3 vaxis = Vector3.Cross(fwd, Vector3.right);
transform.Rotate(vaxis, -Input.GetAxis("Mouse X"), Space.World);
Vector3 haxis = Vector3.Cross(fwd, Vector3.up);
transform.Rotate(haxis, -Input.GetAxis("Mouse Y"), Space.World);
transform.Rotate()这个函数官方是这样解释的:
public void Rotate(Vector3 axis, float angle, Space relativeTo = Space.Self);
Axis to apply rotation to.
Degrees to rotation to apply.
relativeTo
Rotation is local to object or World.
因为物体在不断随着鼠标的运动旋转,所以旋转时一定要在世界坐标中,否则我们看到的是物体绕着自身的轴转转。另外,我们看到的都是通过camera来看到的,所以Rotate的第一个参数axis一定要是camera的某个轴向,左右方向的旋转需要绕着camera的up方向,上下方向的旋转需要绕着camera的right方向。
这样无论物体和camera初始的rotation是多少,都可以正确的实现旋转啦。
欧拉角的定义 在写这篇博客之前,我搜索了网上很多关于欧拉角的定义,发现大部分引用自维基百科的定义,我这里也引述一下: 维基百科定义 莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。对于任何参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的。...
高级钳工培训试题及答案 一、填空题。 1、液压泵的主要性能参数有流量、容积效率、压力、功率、机械效率、总效率。 2、液压泵的种类很多,常见的有齿轮泵、叶片泵、柱塞泵、螺杆泵。 3、液压控制阀可分为方向...
Blender Essential Training 的课程笔记,时长 8 小时 14 分。原课是在 Windows 下的操作。以下基于 MacOS 和 Magic Mouse 做了相应修改(快捷键有很大不同),当前版本号是 2.78。 设置 file & user pre...
角色控制是游戏设计中必不可少的一个设计环节,这一节我们讲一讲如何制作基本的角色运动控制交互逻辑。 因为是简单实例教程,所以一律不涉及角色动画控制,只谈运动控制。 Demo演示:Simple Movement Control 常见的运动控制交互设计有这么几种: 方向控制类使用...
来源 https://zhuanlan.zhihu.com/p/ 给深度学习入门者的Python快速教程 - numpy和Matplotlib篇 的番外篇,因为严格来说不是在讲Python而是讲在Python下使用OpenCV。本篇将介绍和深度学习数据处理阶...
在我的世界里,有许许多多的人从我的身边走过,有的只是在相遇后擦肩而过,有的,在我的世界里留下了令人回忆的痕迹。还有的陪我一生,要一起走过很长很长的路。 在很小的时候,我的生命里就出现了她,那时的她在我的眼里,骄横,脾气暴躁,从来都不顾及别人的感受,我非常讨厌她。后来,逐渐长...
马上再过半年时间,即将迎接自己的30周岁,逐渐发现自己越来越紧张,焦虑,我想也许一部分人群到这个年龄的时候和我应该有类似的心情吧。告别20周岁,意味着开始走了成熟路线,或许可以有小女生的心思,但对外展示自己的时候,应该是成熟、稳重的。而我,应该如何开始面对自己的30周岁呢,...
晨晖清纯临幽院,寒风吹叶落。 枝间倦鸟鸣,应怨夜冷,残梦觉身薄? 吟秋赋句日渐多,闲情慰寂寞? 任光阴静逝,独享当下,往事终如歌!
中秋送什么礼物给心爱的Ta 这个问题每年都会令你死很多脑细胞吧?送花、送衣服、送iPhone7?太没创意了吧!卡洛斯老师准备教童鞋们用高冷的IT技术来制造一份温馨有爱的礼物——花3个小时做一个温馨有爱的APP。 做一个APP很简单,只要你懂上网,就够了!剩下的事情交给卡洛斯...
效果预览 特性 为保证输入法的软键盘和 Dialog 同时显示、同时隐藏, AboveInputMethodDialog 已经完成了如下处理: Dialog 显示时软键盘自动弹出。 点击空白处,同时隐藏软键盘和 Dialog。 点击软键盘上的收起按钮,同时隐藏软键盘和 Di...unity4.x从入门到精通、Unity 5.x游戏开发指南读书摘要_AR资讯_中国AR网
&当前位置: &
Unity对某些虚拟现实设备提供了内置支持。Unity从5.3版本开始专注于虚拟现实家族设备,特别是Oculus Rift Development Kit 2(DK2)和消费版Gear VR。Unity5.3版本不再支持note4。Unity从5.3开始内置了VR接口。需要安装Oculus runtime 0.8 installed。下载地址www.vrzhinan.com配置Unity支持VR打开Edit|Project Settings|Player|Other Settings|Rendering在监视面板中勾选Other Setting中的Virtual Reality Supportedusing UnityEusing UnityEngine.VR;//VR包public class ToggleVR:MonoBehaviour{private void Update(){//当键盘按下V,则切换到VR状态if(Input.GetKeyDown(KeyCode.V)){VRSettings.enabled=|VRSettings.}}}当勾选了Virtual Reality Supported后,并且DK2已经连接到电脑,在Unity中运行程序的时候,程序就会在DK2中显示啦。自从Unity5.3版本不支持VR后,并不需要为了VR创建两个摄像机了。并且Unity会自动为场景中资源进行VR优化。比如遮挡剔除、阴影渲染、纹理渲染等。VR最先让人头痛的就是眩晕,所以设备的频率一定要配置正确。DK2必须配置成75fps。Gear VR必须是60fps。屏幕分辨率也是一定要达到要求才行的。对于DK2设备的分辨率为大小的75fps。若是商用的Oculus Rift(CV1)则分辨率为,大小90fps。添加:星球项目换新的UI,选角色界面模型换回图片4个角色,每个角色有待机、响应、选中3种状态。用Text代替TextMesh显示龙币、积分用Image代替Sprite显示龙币积分底图第一个场景的层级管理:1、层次视图中选中TipInfoCameraLayer选择TipInfoCulling Mask选中TipInfo,不要选中Default、UI、Role在Camera Preview可以看到这个摄像机仅仅照射TipInfo。Roles节点下有Role1、Role2、Role3、Role4四个节点Role1下TipInfo节点的Layer选择TipInfo弹出一个框Change LayerDo you want to set layer to TipInfo for all child objects as well?【Yes change children】【No,this object only】【Cancel】选择第一个按钮。2、RolesCameraLayer选择DefaultCulling Mask选中Default,不要选中TipInfo在Camera Preview可以看到这个摄像机仅仅照射第2~4个角色模型。3、Role1CameraLayer选择Role1Culling Mask选中Role1,不要选中Default、UI、TipInfo在Camera Preview可以看到这个摄像机仅仅照射第1个角色模型。4、Role4CameraLayer选择Role4Culling Mask选中Role4,不要选中Default、UI、TipInfo在Camera Preview可以看到这个摄像机仅仅照射第4个角色攻击状态的模型。坦克项目UGUI经验总结 10:44UGUI动画变迁第2、3版坦克选择UI进场离场动画:12个坦克节点,每个节点挂1个Animation组件,Animations组件的Size属性填2,第0、1个元素分别填进场、离场动画的anim文件,Play Automatically选择打钩;第一个坦克节点还挂1个坦克UI控制脚本,处理OnAnimEventTankUILeave事件;动画事件在Animation视图中编辑、添加、删除。坦克结算UI:针对每个MVP节点在项目视图存放anim文件的路径下创建1个Animator Controller,命名为A1MVPAnim等等,每个MVP节点挂1个Animator组件, Controller填A1MVPAnim等等,在状态机上拖进场和离场的anim文件进来,挂一个坦克结算UI控制脚本。Unity 2D游戏开发快速入门第一章RangTanks(狂怒坦克)Win7+Unity4.5.3在2013年发布4.3版本时,就开始提供对制作2D游戏的支持了。Texture Type:表示图片的类型。对于2D游戏项目,系统默认设置为Sprite(2D\uGUI);对于3D游戏项目,默认设置为Texture。Filter:此属性一共有3个选项:Point、Bilinear、Trilinear。Max Size:表示图片的最大尺寸。图片Platform实际尺寸是397*221,属性中最接近397的是512。Format:表示图片的格式。UGUI全面实践教程NGUI全面实践教程NGUI发布于2012年初,发布者从版本1.08开始持续不断的将NGUI插件更新到现在的3.8.1版本(日的数据)。Win7+NGUI3.8.0+Unity4.5.5。Unity3d UGUI 官方示例 包括UGUI各个控件的用法的示例uGUI 2d面板显示3D模型问题用RawImage+RenderTexture可以做,参考官方Demo的RenderTexture例子。UGUI全面实践教程chap7官方示例及其简要说明7.7实时纹理绘制示例——RenderTextureChap5控制动画——Unity开发实战这一章可读性很差,略过MecanimAvatar3个核心控件:Text、Image、Button小雪花是Anchor(锚点)小圆点是Pivot(中心点、重心点),0~1表示没有离开控件本身中心点和锚点重合:偏移量PosX,PosY为初始值0,0Text控件Txt_UserNameInputField控件:1个母控件,2个子控件添加:NGUI版本:2012年初,NGUI 1.0.8发布2.2.22.6.12.6.3之前,2.6.42.7.03.0.03.0.9 f43.5.43.6.04手柄+NGUI3.7.83.8.0,Win7+Unity4.5.5及以上版本日,3.8.14.0NGUI将全部的源码分成了5个部分:Editor(与Unity编辑器相关的脚本)、Interaction(与交互功能相关的脚本)、Internal(间接发挥作用的脚本)、Tweening(与补间动画功能相关的脚本)、UI(与UI功能相关的脚本)。高雪峰:Unity 3D NGUI 实战教程chap1初始NGUI1.1游戏UI开发介绍1.2什么是NGUIchap2 NGUI基础2.1导入NGUI插件2.1.1NGUI版本介绍2.1.2NGUI的下载和购买2.1.3导入NGUI插件应用2.1.4导入常见问题2.2认识基本的UI资源2.2.1什么是UI精灵(Sprite)2.2.2什么是UI图集(Atlas)2.2.3什么是UI贴图(Texture)2.2.4什么是UI标签(Label)2.2.5什么是UI字体(Font)2.3制作第一个UI图集2.3.1学会解剖UI的资源结构2.3.2学会导入切好的美术资源2.3.3用Atlas Maker制作图集2.4制作第一个UI字体2.4.1为什么要制作UI字体2.4.2静态字体和动态字体2.4.3制作静态字体介绍2.4.4制作动态字体介绍2.5创建第一个UI2.5.1创建一个2D UI2.5.2创建一个3D UI2.5.3了解UIRoot、UIPanel和UICamera组件2.6 2DUI和3DUI的工作原理2.6.1 2DUI的工作原理2.6.2 3DUI的工作原理2.6.3 如何判断该选择哪一种UI2.7深度(Depth)概念2.7.1强化对深度的理解2.7.2小心相机的深度chap3核心组件3.1什么是UI控件3.2制作精灵(UISprite)3.2.1怎样判断是否应该使用精灵3.2.2创建精灵3.2.3Sprite组件的设置3.3制作标签(Label)3.3.1怎样判断是否应该使用标签3.3.2创建标签3.3.3Label的文字设置3.4制作UI纹理(UITexture)3.4.1什么情况下使用UITexture3.4.2创建纹理3.4.3纹理的设置3.5制作按钮(Button)3.6制作进度条(UISlider)3.7制作输入框(Input)3.8制作滚动视图(ScrollView)3.9制作复选框(Toggle)3.10制作下拉菜单(PopupList)chap4 UI动画4.1常见的两种UI动画介绍4.1.1要区分UI动画和UI特效两个概念4.1.2关于Tween动画4.1.3关于Animation动画4.2渐隐渐现动画(透明度动画)4.3颜色变化动画(变色动画)4.4位置变化动画(位移动画)4.5旋转变化动画(旋转动画)4.6大小变化动画(放缩动画)4.7Tween动画总结4.8动画控制组件UIPlayTween4.8动画控制组件UIPlayAnimationchap5其他组件chap6 NGUI实战进阶chap7用代码深度控制UIchap8实用案例演示chap9常见疑难问题解答图集Atlas将多张零散的图片融合成为一张图,低碳环保。字体Font动态字体使用标准的字体文件.TTF。图集字体将字体弄到图集里,根据坐标静态调用。好处可以使用各种效果,以及聊天表情。面板Panel用于组织界面元素。每一个面板,都会让层从0开始。NGUIPanel常规面板常规静态切割选项卡要玩家单独实现。文本栏Label用于显示文本信息NGUI颜色图片:需要自定义输入内容阴影轮廓按钮ButonNGUI旧版本采用消息机制,新版本使用了委托的方式&普通按钮图片按钮Tween组件在两个值之间随时间进行渐变,用于实现一些伴随时间的效果。比如淡入、淡出、移动、旋转、放大缩小等。NGUIiTweenNGUI:多个物体可以属于一个层。层一定要弄好,不能混乱。对齐方式一定要设定好,否则大乱。统一的层管理,我们约定:基础背景0~1层,一级面板在2层,面板元素3~6层,二级面板7~10层,不能超过3级面板。Unity最火十大插件1、2D Toolkit 1.90 Final能够让开发者在Unity中进行2D开发。能够完全支持Unity4,它对于2.5D场景的开发和建立也十分有效。2、NGUI 2.3.13、Playmaker 1.4.54、EasyTouch 2.5.1 & EasyJoystick 1.05、UnIDE 1.0.5UnIDE 1.0.5新增了对Mac OS X系统的支持,性能更加流畅。6、Tile Based Map and Nav 2.8b7、FX Maker 1.27是一款制作特效的工具,它专为移动操作系统做了优化。包括300种Prefab特效,300种纹理结构、100种网格、100种曲线效果。由开发商IGSoft提供。8、Toon shader 1.5是一款卡通着色器,适用于iOS系统。9、Top-Down Assets Mobile Final是一个游戏视图工具包。10、83 Explosion Sound Effects 1.1这是一个声音特效工具包,包含83个WAV立体声文件。这些声响均是爆炸声响。所有的声音文件均为16bit 44.1KHz立体声WAV文件。添加:密码9900http://www.manew.com/thread-.html第59讲Mecanim读作Mec+anim动画片段Animation Clip身体遮罩Body Mask,以.mask保存Avatar读作Ava+tar,属于子资源Animator组件Animator Controller,属于资源http://www.manew.com/thread-.html第60讲:创建角色资源的三个主要步骤:建模、骨骼设置、蒙皮自动角色系统或角色产生软件:Poser,Makehuman or MixamoUnity中,标准立方体盒子是1米正常角色的高度是2米第62讲http://www.manew.com/thread-.html单击模型标签,改变缩放系数,点击实施按钮人类类型角色都有类似的骨骼结构:躯干、头部、四肢骨骼的创建和命名时要遵循一定规范创建角色的Avatar分析导入的角色资源的骨骼结构,其过程是与Mecanim中已有的简化的标准人类骨骼进行对比Rig标签动画类型选择HunmanoidUnity4.2.0打开Unity4.6.4创建的工程会出现以下提示:Project incompatible,New version of Unity requiredYour project was created with a newer version of Unity.You should upgrade to the latest version of Unity.You risk data loss if you continue!【Quit】【Continue and risk data loss】打开一个旧版本的工程会出现提示:Upgrading projectUpgrading projectAfter upgrading the project,you can not open the project with older versions of Unity anymore.【Continue】【Quit】点击【Continue】会出现提示:Project reimport required【Reimport Project】【Quit】Unity3D光照贴图烘焙知识http://www.docin.com/p-.htmlUnity在4.x版本里使用光照烘焙的方法,采用的是Autodesk的Beast,Beast只能烘焙静态的光照贴图,而不支持动态光照。使用Beast的工作流程是:先建造一个场景,然后在场景中布置各种光源,进而点击Bake操作键,接下来整个烘焙过程可能需要几小时。Unity 5.0中会舍弃掉Beast,取而代之的是PowerVR Ray Tracing和Enlighten这两种方案的结合。PowerVR Ray Tracing的特点是不需要烘焙过程,速度非常快,但是效果不是非常理想。Enlighten的特点是需要一定的烘焙过程,但是效果非常好。PowerVR Ray Tracing负责编辑器中的编辑模式,即所见即所得的模式;而Enlighten会负责游戏内的实时渲染。http://unity3d.com/cn/unity/whats-new/unity-3.5Unity3.5新特性与改进:1、忍者飞镖粒子系统2、内置寻路3、升级的遮挡剔除、新的LOD4、Google Chrome Native Client deployment5、线性空间照明和HDRhttp://unity3d.com/cn/unity/whats-new/unity-3.5.5Unity 3.5.5主要包含Unity 3.5的修复。http://unity3d.com/cn/unity/whats-new/unity-4.0Unity 4.0新的强大的特性:1、Mecanim,驱动角色或物件的新的动画系统2、所有平台的实时阴影3、DX11渲染4、忍者飞镖粒子系统更新了世界碰撞功能5、Adobe Flash和Linux两个新平台6、跨平台动态字体http://unity3d.com/cn/unity/whats-new/unity-4.1Unity 4.1带来了如下新特性:1、更强大的内存分析器2、AirPlay支持3、Mecanim更新4、Shader更新5、移动平台支持Allegorithmic Substanceshttp://unity3d.com/cn/unity/whats-new/unity-4.1.5Unity 4.1.5带来一些修正。发行说明:修正Windows上MonoDevelop的问题已知问题:Win8上MonoDevelop作为默认编辑器启动时不能自动打开脚本http://unity3d.com/cn/unity/whats-new/unity-4.6.2Unity 4.6.2带来一些改进和修正发行说明:特性:使用il2cpp支持iOS 64位变更:不再支持Flash目标编译。改进:修复:iOS:修复Xcode6.2支持http://unity3d.com/cn/unity/whats-new/unity-4.6.4Unity 4.6.4带来一些改进和修正发行说明:特性:Unity免费版中支持Intel实感插件改进:iOS:支持Xcode6.3变更:应要求,支持的最低iOS版本升为5.1修复:http://unity3d.com/cn/unity/whats-new/unity-5.0Unity 5.0包含强大的新特性:1、基于物理的标准着色器2、实时全局照明3、混音器4、HDR反射探头增强视觉保真度5、PhysX 3.3带来了3D物理方面极大的性能提升6、主要更新了动画系统7、WebGL预览http://unity3d.com/cn/unity/whats-new/unity-5.0.1Unity 5.0.1带来新特性、一些改进、变更和许多修复。发行说明:改进:Android:手柄输入优化,修复在一些较老设备上变慢的问题变更:修复:iOS:增加Xcode6.3兼容性http://unity3d.com/cn/unity/whats-new/unity-5.0.2Unity 5.0.2带来新特性、一些改进、少许变更和大量修复。发行说明:特性:改进:Editor:Minimum API Level列表增加Android 5.0 and 5.1变更:修复:iOS:增加Xcode6.3建立并运行的支持罗盛誉:Unity 5.x游戏开发指南chap4 3D基础知识4.1 Camera摄像机4.1.1摄像机参数摄像机参数参数|说明Clear Flags|清除标记,决定屏幕的哪部分被清除。该项一般用于使用多台摄像机来描绘不同游戏对象的情况。Depth only:深度相机,只渲染采集到的画面。Culling Mask|剔除遮罩。摄像机将看到勾选的层,忽略未被勾选的层。Projection|投射方式。Perspective:透视。摄像机以正交方式渲染画面,拍摄区域是一个截锥体。Orthographic:正交。摄像机以正交方式渲染画面,拍摄区域是一个长方体。Depth|该项用于控制多个摄像机的渲染优先级。数值越大优先级越高。优先级高的摄像机拍摄的画面将覆盖在优先级低的摄像机的画面上。Rendering Path|渲染路径。该项用于指定摄像机的渲染方法。Use Player Setting:摄像机将使用设置的渲染方法,即Project Settings下Player中的设置。Target Texture|目标纹理。将摄像机画面输出到一张贴图而不是屏幕,可用于实现画中画或者画面特效。Occlusion Culling|是否剔除物体背向摄像机的部分。HDR|高动态光照渲染4.1.2摄像机投射4.2 3D模型4.2.1 Mesh网格模型4.2.2 Texture贴图4.2.3 Material材质4.2.4对应组件4.2.5骨骼动画4.3小结4.4习题chap6 创建人物6.1 Mecanim系统Mecanim系统是Unity在4.0版本开始引入的新动画系统,它提供了以下几种功能。为人形角色提供了简单的设置和制作流程,包括Avatar的创建和对Muscle definitions肌肉定义的调节。&动画的复用性。主要通过动画重定向实现,可以非常方便地把动画从一个角色模型应用到具有相同骨骼结构的其他角色模型上。&通过可视化的工具可以方便地创建、预览动画或者管理不同状态的切换。身体逻辑,如下半身在执行跑步动作的同时,上半身在执行开枪动作。一般来说,整个人物的创建分为以下3个阶段。资源准备和导入阶段。状态机阶段。脚本阶段。6.2 导入模型6.2.1模型导入设置6.2.2 Avatar的设置6.3状态机6.3.1 Animator6.3.2添加碰撞体6.3.3添加摄像机6.3.4动作混合与控制6.4反向动力学6.5人体动画重定向6.6小结6.7习题chap9用户界面Unity中的UI的发展从最早的OnGUI系统,到之后EzGUI和NGUI两个插件的阶段。现在我们有了最新的官方的uGUI系统,它借鉴了NGUI的很多设计,例如NGUI中所有的UI元素都放在UIRoot根节点下,类似地,uGUI中的所有元素都放置在Canvas画布下。9.1Sprite精灵精灵是UI以及Unity 2D的基本元素。在UI系统中,所有图片的显示都必须通过精灵。如果建立工程时选择的是2D工程,那么导入的所有图片会自动设置为精灵;而如果是3D,那么需要对图片的导入设置进行更改。9.1.1图片设置为精灵在监视窗口中将纹理类型设置为Sprite(2D and UI),并点击窗口右下角的Apply按钮。9.1.2图片切割为多个精灵当精灵模式为Single时,表明整张图片将作为一个精灵;当精灵模式为Multiple时,表明整张图片包含多个精灵。我们需要图片进行切割。9.1.3设置Border边界9.1.4Pivot锚点Pivot锚点在精灵编辑器界面以蓝色空心圆钮表示。9.2Canvas画布Canvas实际上是一个游戏对象上绑定了Canvas组件。所有UI元素都必须是Canvas的子对象。9.2.1创建画布9.2.2画布参数第一个参数渲染模式有3种:1.屏幕空间-覆盖模式的画布会填满整个屏幕空间,并将画布下的所有UI元素置于屏幕的最上层,或者说画布的画面永远覆盖其他普通3D画面。如果屏幕尺寸被改变,画布将自动改变尺寸来匹配屏幕。Pixel Perfect:使UI元素像素对应,效果就是边缘清晰不模糊。Sort Layer:用以指明画布的深度。2.屏幕空间-摄像机模式和屏幕空间-覆盖模式相似。不同的是,在该模式下,画布会被放置在指定摄像机的前方。Pixel Perfect:只有RenderMode为Screen类型时才有的选项。使UI元素像素对应,效果就是边缘清晰不模糊。屏幕空间-摄像机模式比屏幕空间-覆盖模式多了下面几个参数。Render Camera:摄像机。Plane Distance:画布平面距离摄像机的距离。Sorting Layer:用以指明画布的深度。Order in Layer:在相同Sorting Layer下的画布显示先后顺序。数字越高,显示的优先级也就越高。3.世界空间模式。在此渲染模式下,画布被视作与场景中其他普通游戏对象性质相同的类似一张面片的对象。画布的尺寸可以通过Rect Transform设置,所有UI元素可能位于普通3D物体的前面或者后面显示。当UI为场景的一部分时,可使用这个模式。9.3 Image图片点击导航菜单栏|GameObject|UI|Image导航栏,创建一个Image元素。Rect Transform:所有UI元素都是以矩形来表现的。RectTransform是继承自Transform的一个组件,是所有UI元素都具有也必须具有的组件。一共有9种锚点(Anchor)。当选定一种锚点后,该锚点为UI元素的坐标原点。缩放元素要用width和height,而不用scale,因为scale会产生很多影响,例如字体的大小等。选择“img01”的图片,并点击Texture Type栏的选择条选择Sprite。Sprite精灵是所有UI和Unity 2D所使用的图片导入格式。Image的参数参数|说明Source Image|原图,指定显示的图片Color|颜色,设置图片的叠加颜色,默认设置为白色,显示与原图一致Material|材质,可以指定自定义的材质,默认留空即可Image Type|显示的类型,有简单、切片、砖块、填充4种类型Preserve Aspect|简单、填充类型特有参数,是否保留精灵的原图形,而不进行自动剔除Set Native Size|点击该按钮使显示与原图尺寸对应// 填充类型public void SetRage(int Heroindex,float Rage){Image img=m_ImageWeapon2[Heroindex].GetComponent&Image&();img.fillAmount=R}9.5 Text文本直接在文本组件的Text参数中填文本即可。所有UI元素都可以添加轮廓及阴影效果,这两个效果也被Text元素所经常使用。9.5.2添加阴影9.5.3添加轮廓chap15导航系统15.1实现导航系统15.1.1建立场景15.1.2设置NavMesh15.1.3烘焙15.1.4设置导航代理15.2障碍物15.3分离网格链接15.4小结15.5习题chap15导航系统导航系统(navigation system)可以让人物在场景里智能地移动、绕过障碍等。导航系统用NavMesh来解析环境。15.1实现导航系统本节首先创建场景并烘焙导航网络,接着创建导航代理,以实现让角色绕过重重障碍到达终点的功能。chap19 2D游戏基础19.1正交摄像机19.2精灵19.2.1精灵实现19.2.2调整精灵尺寸19.2.3精灵渲染器&19.2.4图片导入设置19.2.5精灵编辑19.2.6精灵图集19.3 2D物理系统19.3.1刚体19.3.2碰撞体19.3.3 Joint 2D&19.3.4 Constant Force 2D19.3.5 Effector 2D19.4小结19.5习题添加:Unity3d资源反编译(DisUnity) v0.3.3 官方最新版——经测试,4.x的Unity资源可以反编译出来,5.x的不行disunity extract F:\hxhwin7\Unity4.6.4\disunity\TankExe\tank_Data\*.*disunity extract U3d5.02XunLong0619testdemo\assets\bin\Data\*.*disunity extract Unity4_\assets\bin\Data\*.*disunity extract \assets\bin\Data\*.*炉石传说:&密码:fu2q使用Mono进行平台无关的.NET开发CLI公共语言基础结构Infrastruction.NET的平台无关性微软公司自己不提供.NET在Mac、Linux等平台下的安装包。这两份规范是:ECMA-334定义了C#编程语言的语法和语义;ECMA-335定义了许多.NET平台的细节,统称为CLI。ECMA-335规范分为6个部分:部分1:架构部分2:元数据部分3:公共中间语言CIL部分4:类库部分5:二进制格式部分6:附件除了微软的CLR、Microsoft Silverlight和Microsoft .NET Compact Framework之外,还有另外两种主流的CLI实现:Mono、Portable .NET。Mono是与C# 2.0/NET2.0相兼容的。Mono是还没有完全与C# 3.0或NET3.0/3.5相兼容的。许多C# 3.0的语言特性已经是Mono 1.2.5的一部分了,包括隐式类型、对象初始化语法和匿名类型。C:\Program Files (x86)\Unity\Editor\Data\Mono\bin&mono --versionMono JIT compiler version 2.0 (Visual Studio built mono)Copyright (C)
Novell, Inc and Contributors. www.mono-project.com&&&&&&& TLS:&&&&&&&&&& normal&&&&&&& GC:&&&&&&&&&&& Included Boehm (with typed GC)&&&&&&& SIGSEGV:&&&&&& normal&&&&&&& Notification:& Thread + polling&&&&&&& Architecture:& x86&&&&&&& Disabled:&&&&& noneC:\Program Files\Unity\Editor\Data\Mono\bin&mono --versionMono JIT compiler version 2.0 (Visual Studio built mono)Copyright (C)
Novell, Inc and Contributors. www.mono-project.com&&&&&&& TLS:&&&&&&&&&& normal&&&&&&& GC:&&&&&&&&&&& Included Boehm (with typed GC)&&&&&&& SIGSEGV:&&&&&& normal&&&&&&& Notification:& Thread + polling&&&&&&& Architecture:& x86&&&&&&& Disabled:&&&&& none与微软的CLR发布相同,Mono也提供了多种托管的编译器:mcs/gmcs,C#编译器vbnc,Mono Visual Basic编译器booc,Boo语言编译器ilasm/ilasm2,Mono CIL编译器Mono项目的第一个C#编译器是mcs,并且它完全兼容C# 1.1。通用mono C#编译器(gmcs)是mcs用于支持.NET 2.0特有的C#语言特性和引用基于.NET 2.0的基类库的版本。C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0&gmcs -?Mono C# compiler, Copyright 2001 - 2008 Novell, Inc.mcs [options] source-files&& --about&&&&&&&&&&&&& About the Mono C# compiler&& -addmodule:M1[,Mn]&& Adds the module to the generated assembly&& -checked[+|-]&&&&&&& Sets default aritmetic overflow context&& -codepage:ID&&&&&&&& Sets code page to the one in ID (number, utf8, reset)&& -clscheck[+|-]&&&&&& Disables CLS Compliance verifications&& -define:S1[;S2]&&&&& Defines one or more conditional symbols (short: -d)&& -debug[+|-], -g&&&&& Generate debugging information&& -delaysign[+|-]&&&&& Only insert the public key into the assembly (no signing)&& -doc:FILE&&&&&&&&&&& Process documentation comments to XML file&& -help&&&&&&&&&&&&&&& Lists all compiler options (short: -?)&& -keycontainer:NAME&& The key pair container used to sign the output assembly&& -keyfile:FILE&&&&&&& The key file used to strongname the ouput assembly&& -langversion:TEXT&&& Specifies language version: ISO-1, ISO-2, Default, or Future&& -lib:PATH1[,PATHn]&& Specifies the location of referenced assemblies&& -main:CLASS&&&&&&&&& Specifies the class with the Main method (short: -m)&& -noconfig&&&&&&&&&&& Disables implicitly referenced assemblies&& -nostdlib[+|-]&&&&&& Does not reference mscorlib.dll library&& -nowarn:W1[,Wn]&&&&& Suppress one or more compiler warnings&& -optimize[+|-]&&&&&& Enables advanced compiler optimizations (short: -o)&& -out:FILE&&&&&&&&&&& Specifies output assembly name&& -pkg:P1[,Pn]&&&&&&&& References packages P1..Pn&& -platform:ARCH&&&&&& Specifies the target platform of the output assembly&&&&&&&&&&&&&&&&&&&&&&& ARCH can be one of: anycpu, x86, x64 or itanium&& -recurse:SPEC&&&&&&& Recursively compiles files according to SPEC pattern&& -reference:A1[,An]&& Imports metadata from the specified assembly (short: -r)&& -reference:ALIAS=A&& Imports metadata using specified extern alias (short: -r)&& -target:KIND&&&&&&&& Specifies the format of the output assembly (short: -t)&&&&&&&&&&&&&&&&&&&&&&& KIND can be one of: exe, winexe, library, module&& -unsafe[+|-]&&&&&&&& Allows to compile code which uses unsafe keyword&& -warnaserror[+|-]&&& Treats all warnings as errors&& -warnaserror[+|-]:W1[,Wn] Treats one or more compiler warnings as errors&& -warn:0-4&&&&&&&&&&& Sets warning level, the default is 4 (short -w:)&& -help2&&&&&&&&&&&&&& Shows internal compiler optionsResources:&& -linkresource:FILE[,ID] Links FILE as a resource (short: -linkres)&& -resource:FILE[,ID]&&&& Embed FILE as a resource (short: -res)&& -win32res:FILE&&&&&&&&& Specifies Win32 resource file (.res)&& -win32icon:FILE&&&&&&&& Use this icon for the output&& @file&&&&&&&&&&&&&&&&&& Read response file for more optionsOptions can be of the form -option or /option显示特定程序集中C#指定类型的定义。C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0&monop System.Object[Serializable]public class Object {&&&&&&& public Object ();&&&&&&& public static bool Equals (object objA, object objB);&&&&&&& public static bool ReferenceEquals (object objA, object objB);&&&&&&& public virtual bool Equals (object obj);&&&&&&& protected override void Finalize ();&&&&&&& public virtual int GetHashCode ();&&&&&&& public Type GetType ();&&&&&&& protected object MemberwiseClone ();&&&&&&& public virtual string ToString ();}C#开发Android应用实战 使用Mono for Android和.NET C#Mono for Android程序集程序集,说明Mono.Android.dll,该程序集包含了绑定到Android API的C#Mono.CompilerServices.SymbolWriter.dll,该程序集主要是针对编译器编写者Mono.Data.Sqlite.dll,针对SQLite的ADO.NET提供程序Mono.Data.Tds.dll,对TDS协议的支持;主要用于为System.Data内的System.Data.SqlClient提供支持Mono.Security.dll,加密APImscorlib.dll,SilverlightOpenTK.dll,OpenGL/OpenAL面向对象API,可对其进行扩展以提供Android设备支持System.dll,Silverlight,再加上来自下列命名空间中的类型:System.Collections.SpecializedSystem.ComponentModel.DesignSystem.DiagnosticsSystem.IO.CompressionSystem.NetSystem.Net.CacheSystem.Net.MailSystem.Net.NetworkInformationSystem.Net.SecuritySystem.Net.SocketsSystem.Security.AuthenticationSystem.Security.CryptographySystem.TimerSystem.Core.dll,SilverlightSystem.Data.dll,删除了部分功能的.NET 3.5System.Json.dll,SilverlightSystem.Runtime.Serialization.dll,SilverlightSystem.ServiceModel.dll,Silverlight Alpha中所呈现的WCF堆栈……System.Xml.dll,.NET 3.5System.Xml.Linq.dll,.NET 3.5chap15 在Mono for Android、MonoTouch和Windows Phone7之间共享代码15.1三大平台针对iOS的MonoTouch、Windows Phone上的.NET以及Android设备上的Mono for Android。下面将深入研究这三个平台。15.1.1 Mono for Android默认情况下项目包括mscorlib、System、System.Core、System.Xml和System.Xml.Linq程序集。除这些程序集外,项目还包括了Mono.Android程序集,而该程序集则包含了Android API的所有绑定。15.1.2 MonoTouchMonoTouch于2009年发布,它是一组允许.NET开发人员针对iPhone和iPod Touch进行开发的工具。不同之处是MonoTouch包括一个MonoTouch.dll引用,Mono for Android则包括一个Mono.Android.dll引用。MonoTouch.dll是针对iOS API的,而Mono.Android.dll则是针对Android API。15.1.3 Windows Phone 7还可以看到程序集Microsoft.Phone和Microsoft.Phone.Interop。这两个程序集是特定于手机的API。应用程序包括的另一个程序集是System.Windows,该程序集包括了大部分Silverlight API。用Unity4.2.0打包APK到Android 2.2.3打包时可能会出错:Error building Player: Win32Exception: ApplicationName='D:/android-sdk-windows\tools\zipalign.exe', CommandLine='4 &D:\u3d4.2.0\Temp/StagingArea/Package_unaligned.apk& &D:\u3d4.2.0\Temp/StagingArea/Package.apk&', CurrentDirectory='Temp/StagingArea'解决方法:将D:\android-sdk-windows\build-tools\19.1.0\zipalign.exe复制到D:\android-sdk-windows\tools即可Unity5.1.1iOS设置Target iOS Version6.07.07.18.08.1Android设置Mininum API LevelAndroid 2.3.1 'Gingerbread'(API level 9)Android 2.3.3 'Gingerbread'(API level 10)Android 3.0 'Honeycomb'(API level 11)Android 3.1 'Honeycomb'(API level 12)Android 3.2 'Honeycomb'(API level 13)Android 4.0 'Ice Cream Sandwich'(API level 14)Android 4.0.3 'Ice Cream Sandwich'(API level 15)Android 4.1 'Jelly Bean'(API level 16)【小米2S:4.1.1 JRO03L,四核1.7GHz,2.00GB运行内存,16.00GB机身存储(2.12GB可用),IMEI:665,MAC地址:ac:f7:f3:5b:13:02,序列号:207d0147,AndroidId:a31d834f770ba6e0(刷机后会改变)】Android 4.2 'Jelly Bean'(API level 17)Android 4.3 'Jelly Bean'(API level 18)Android 4.4 'Kit Kat'(API level 19)【TV上Android版本4.4.2】Android 5.0 'Lollipop'(API level 21)Unity4.6.4f1iOS设置Target iOS Version5.1.16.07.07.18.08.1Android设置Mininum API LevelAndroid 2.3.1 'Gingerbread'(API level 9)Android 2.3.3 'Gingerbread'(API level 10)Android 3.0 'Honeycomb'(API level 11)Android 3.1 'Honeycomb'(API level 12)Android 3.2 'Honeycomb'(API level 13)Android 4.0 'Ice Cream Sandwich'(API level 14)Android 4.0.3 'Ice Cream Sandwich'(API level 15)Android 4.1 'Jelly Bean'(API level 16)Android 4.2 'Jelly Bean'(API level 17)Android 4.3 'Jelly Bean'(API level 18)Android 4.4 'Kit Kat'(API level 19)Unity4.5.4f1、Unity4.6.0f3iOS设置Target iOS Version4.04.14.24.35.05.16.07.07.1Android设置Mininum API LevelAndroid 2.3.1 'Gingerbread'(API level 9)Android 2.3.3 'Gingerbread'(API level 10)Android 3.0 'Honeycomb'(API level 11)Android 3.1 'Honeycomb'(API level 12)Android 3.2 'Honeycomb'(API level 13)Android 4.0 'Ice Cream Sandwich'(API level 14)Android 4.0.3 'Ice Cream Sandwich'(API level 15)Android 4.1 'Jelly Bean'(API level 16)Android 4.2 'Jelly Bean'(API level 17)Android 4.3 'Jelly Bean'(API level 18)Android 4.4 'Kit Kat'(API level 19)Unity4.3.0f4、Unity4.3.4f1iOS设置Target iOS Version4.04.14.24.35.05.16.0Android设置Mininum API LevelAndroid 2.3.1 'Gingerbread'(API level 9)Android 2.3.3 'Gingerbread'(API level 10)Android 3.0 'Honeycomb'(API level 11)Android 3.1 'Honeycomb'(API level 12)Android 3.2 'Honeycomb'(API level 13)Android 4.0 'Ice Cream Sandwich'(API level 14)Android 4.0.3 'Ice Cream Sandwich'(API level 15)Android 4.1 'Jelly Bean'(API level 16)Android 4.2 'Jelly Bean'(API level 17)Android 4.3 'Jelly Bean'(API level 18)Unity4.0.0f7、Unity4.2.0f4iOS设置不支持在Windows上生成iOS程序Android设置Mininum API LevelAndroid 2.0.1 'Eclair'(API level 6)Android 2.1 'Eclair'(API level 7)Android 2.2 'Froyo'(API level 8)Android 2.3.1 'Gingerbread'(API level 9)Android 2.3.3 'Gingerbread'(API level 10)Android 3.0 'Honeycomb'(API level 11)Android 3.1 'Honeycomb'(API level 12)Android 3.2 'Honeycomb'(API level 13)Android 4.0 'Ice Cream Sandwich'(API level 14)Android 4.0.3 'Ice Cream Sandwich'(API level 15)Android 4.1 'Jelly Bean'(API level 16)Android 4.2 'Jelly Bean'(API level 17)【Unity4.0.0f7无、Unity4.2.0f4有】2004年,Unity Technology公司成立,总部在旧金山。2005年,Unity1.0发布。2007年,Unity2.0发布。新增了地形引擎、实时动态阴影,支持DirectX 9并具有内置的网络多人联机功能。2008年,iOS版本2009年3月,Unity2.5发布。添加了对Windows Vista和XP系统的全面支持,所有的功能都可以与Mac OS X实现同步和互通。Unity在其中任何一个系统中都可以为另一个平台制作游戏,实现了真正意义上的跨平台。2010年,Android版本2010年9月,Unity3.0发布。添加了Android平台的支持。整合了光照贴图烘培引擎Beast。Unity3.0通过使用MonoDevelop在Windows和Mac系统上引入了脚本调试,可以中断游戏、逐行单步执行、设置断点和检查变量,还支持遮挡剔除和延迟渲染。2011年,PS3版本和Xbox360版本2012年2月,3.5正式版发布2011年,3.5.5版本2012年4月,Unity上海分公司成立,Unity正式进军中国市场。日,Unity4.0发布。Unity4.0中加入了对DirectX 11的支持和Macanim动画工具,而且还增添了Linux和Adobo Flash Player发布预览功能。2013年3月,4.1版本新版本修复了先前版本的大量Bug并新增了内存分析器(Memory Profiler),能实时、动态地显示游戏中不同动画、不同物体的内存占用情况。在图形的着色和渲染方面有了大幅度的提升。2013年7月,4.2版本添加对于Win8、WP8以及Blackberry 10的支持。2013年11月,4.3.0版本2014年8月,4.5.3版本支持通用Windows应用程序日,Unity 4.5.5版本发布,这是4.5系列的最终版本2014年11月,Unity 4.6推出了新的UI系统ugui,添加了对Andorid-x86系统的支持,现在你可以选择构建目标平台为FAT、x86或ARMv7。2015年1月,Unity4.6.2这是Unity第一个支持64位iOS的正式版本,采用了最新的IL2CPP技术。2015年,4.6.4版本注0:Win8下安装jdk1.7.0_11,不要安装JDK6(1.6)JDK安装后设置环境变量步骤如下:&我的电脑-&属性-&高级-&环境变量-&系统变量中添加以下环境变量:&&变量名,变量值JAVA_HOME,C:\Program Files\Java\jdk1.7.0_11CLASSPATH,.;%JAVA_HOME%\%JAVA_HOME%\lib\tools.jarPATH,C:\MinGW\C:\Program Files (x86)\IDM Computer Solutions\UltraEdit\;C:\Program Files (x86)\IDM Computer Solutions\UltraCompare\;%JAVA_HOME%\%JAVA_HOME%\jre\bin安装完成之后,可以在检查JDK是否安装成功。打开cmd窗口,输入java –version查看JDK的版本信息。出现类似下面的画面表示安装成功了:C:\Users\DELL-&java -versionjava version &1.7.0_11&Java(TM) SE Runtime Environment (build 1.7.0_11-b21)Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)C:\Users\DELL-&java -versionjava version &1.6.0_43&Java(TM) SE Runtime Environment (build 1.6.0_43-b01)Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)注1:Unity4.6.4中使用F:\adt-bundle-windows-x86-\sdk会提示Android SDK is outdatedSDK Build Tools version 20.0.0&21Android SDK is outdatedSDK Platform Tools version 20.0.0&21Android SDK is missing required platform apiMinimum platform required is Android 5.0(API level 21)注2:Unity4.6.4中使用F:\adt-bundle-windows-x86_64-\sdk会提示Android SDK is outdatedSDK Tools version 22.0.5&23选择UpdateUpdating Android SDK注3:Unity4.6.4中使用C:\Program Files (x86)\Android\android-studio\sdk会提示Android SDK is outdatedSDK Tools version 22.2.0&232015年3月,5.0版本2015年6月,5.1版本Win8下,路径带x86的是32位的Unity(C:\Program Files (x86)\Unity\Editor\Data\PlaybackEngines\androidplayer\release\bin),不带x86的是64位的Unity。渲染平台Unity支持多种图形API,目前支持的API包括:d3d9d3d11openglglesxbox360ps3&flashunity4.x从入门到精通序言2012年Unity正式进入中国市场。蓝港的《王者之剑》完美世界的TOUCH骏梦的《新仙剑》昆仑万维的《绝代双骄》计算两个位置之间的距离让游戏对象沿着指定方向移动得到游戏对象当前旋转的角-轴表示向前方移动绕自身坐标轴Y轴旋转绕世界坐标轴的Y轴旋转使相机观察方向跟随物体移动用户应避免在Unity编辑器外部移动或重命名项目资源文件,如果需重新组织或移动某个资源,应该在项目视图中进行,否则会破坏资源文件与Unity工程之间的关联,甚至会损坏游戏工程。&chap6 Mecanim动画系统6.1 Mecanim概述6.1.1Mecanim工作流6.1.2旧版动画系统6.2资源的准备和导入6.2.1如何获取人形网格模型6.2.2如何导入动画6.2.3动画分解6.3使用人形角色动画6.3.1创建Avatar6.3.2配置Avatar6.3.3设置Muscle参数6.3.4 Avatar Body Mask6.3.5人形动画的重定向6.3.6逆向运动学功能(Pro only)6.3.7一般动画6.4在游戏中使用角色动画6.4.1循环动画片段6.4.2Animator组件6.4.3Animator Controller6.4.4动画状态机6.4.5混合树6.4.6 1D混合6.4.7 2D混合6.5案例分析&chap1 Unity介绍1.5软件安装Unity编辑器可以运行在Windows和Mac OS X平台上,用户可依据自身的喜好来选择相应的平台工作。以下将介绍这2个平台上Unity编辑器的安装步骤,安装示例所用的Unity版本号均为4.1.3。chap2 Unity编辑器Scene Gizmo工具在Scene视图的右上角是Scene工具,使用它可迅速将摄像机的视角切换到预设的视角上。Top顶Bottom底Front前Back后Left左Right右2.8.2视图控制在场景视图的上方是场景视图控制栏。绘图模式默认选项是Textured纹理显示模式网格线框显示模式纹理加线框网格显示模式渲染路径显示模式光照贴图显示模式渲染模式默认是RGB选项三原色显示阿尔法通道显示以半透明的方式显示物体MIP映射图显示用户选择绘图模式或渲染模式并不会改变游戏最终的显示方式,它只是改变场景物体在场景视图中的显示方式。chap3资源导入流程3.1 3D模型、材质与动画的导入3.1.1主流三维软件简介Autodesk Maya,Maya可在Windows、Mac OS等操作系统上运行。Autodesk 3D Studio MaxModoCinema 4DCheetah3DLightWaveBlender3.1.2模型、材质以及动画导入前的设置、准备工作3.1.2.1 Unity与常见三维动画软件单位的比例关系Unity的默认系统单位为“米”,三维软件的单位与Unity单位的比例关系非常重要。8.最小化Unity窗口。下一步运行3ds Max软件,制作项目所需的模型素材。13.在3ds Max中创建一个长宽高都为100cm的立方体,并将其位置移动到坐标原点。3ds Max默认导出的FBX文件导入到Unity中的默认缩放因子是0.01,建议读者将3ds Max系统单位以及显示单位都设置成“厘米”。19.刷新完毕后,在Unity界面项目视图中的Assets文件夹下会显示出新增的资源文件,即刚才导入的Player.FBX文件,并自动新建了Materials文件夹。20.单击选择该FBX资源,在监测视图中可以看到Model选项卡中Scale Factor文本框中的默认数值为0.01。21.鼠标拖动此FBX文件(下文用资源名字Player来代替)到场景视图或层次视图中,在层次视图中双击Player游戏对象,可以在场景视图中居中并最大化显示该游戏对象。23.Unity中添加Cube默认的Scale值都为1.可以理解为该Cube的长宽高都为1m。3.1.3将模型、材质、动画导入到Unity中Unity支持的3ds Max材质球类型包括:Standard标准材质Multi/Sub-Object多维子材质,需要注意每个子材质必须是标准材质。另外,材质的名称尽量与模型的名称对应,建议都采用英文字符命名。9.在Advanced Options卷展栏下展开Units项,勾选Automatic复选框,接下来展开Axis Conversion项,选择Y-up(表明在Unity程序世界中世界坐标是Y轴向上13.单击选中该FBX文件,在监测视图中可以看到该资源的相关属性。下面通过监测视图来讲解此类Prefab的相关参数。(1)Model:模型的默认设置面板Meshs:网格Scale Factor:缩放系数。采用不同的软件、不同的单位(建议在三维软件中采用公制单位)创建的模型可以通过该功能进行校正。Mesh Compression:网格压缩。压缩值越大则网格体文件越小。Read/Write Enabled:读/写启用。Optimize Mesh:优化网格。Generate Colliders:生成碰撞体。SwapUVs:交换UV。Generate Lightmap:生成光照贴图UV通道。Normals & Tangents:法线和切线Smoothing Angle:平滑角度。Split Tangents:分割切线。Materials:材质。Import Materials:导入材质。Material Naming:材质命名。决定Unity材质的命名方式。有3个选项:依照基础贴图名称来自模型的材质名称模型名+模型材质名Material Search:材质搜索。决定Unity如何根据Material Naming选项,搜索定位相应的材质。有3个选项:Local Materials Folder:局部材质文件夹Recursive-Up:向上。Unity依次向上搜索Assets文件夹中所有的材质子文件夹。Project-Wide:项目范围。Unity将在整个Assets文件夹中搜索材质。(2)Rig:操控命令面板。Animation Type:动画类型。该选项用来指定导入FBX资源的动画类型。None:无动画。Legacy:旧版的动画系统。Generic:通用Mecanim动画系统。Humanoid:人形Mecanim动画系统。Avatar Definition:替身定义。Create from this model:从这个模型创建,替身将依据选择的模型创建。Copy from other Avatar:从其他替身复制。Configure:配置Avatar替身。Keep additional bones:保留附加的骨骼。(3)Animations:动画。Animations选项卡中的内容会依据Rig选项卡中选择的动画类型而有所不同。3.5 Unity Asset Store资源商店也可以在Unity应用程序中依次打开菜单栏中的Window|Asset Store来直接访问,或直接按快捷键Ctrl+9。3.5.1Asset Store简介在创建游戏时,通过Asset Store中的资源可以节省时间、提高效率。3.5.2Asset Store的使用方法7.用户还可以在Asset Store视图中通过单击图标显示Unity标准的资源包和用户已下载的资源包,对于已下载的资源包可以通过单击Import按钮将其加载到当前的项目中。chap4创建基本游戏场景在Unity中可直接建立的基本几何体有5种:正方体、球体、胶囊体、圆柱体、平面。&4.3.3组件类型介绍在Unity中,组件(Component)共分为如下7类。1、Mesh网格,该类型的组件有3项网格过滤器Mesh Filter该组件用于在项目资源中获取网格并将其传递到所属的游戏对象中。文字渲染器Text Mesh该组件用于生成三维的字符串(文字)。网格渲染器Mesh Renderer该组件用于从网格过滤器获得网格模型,进而根据游戏对象的Transform组件中定义的位置在Scene视图中进行渲染。2、Effects特效/效果,该类型的组件(包括旧版粒子系统在内)共有7项。&粒子系统Particle System轨迹/拖尾渲染器Trail Renderer线条渲染器Line Renderer镜头光晕Lens Flare光环/光晕Halo幻灯片Projector旧版粒子系统Legacy Particles&3、Physics物理组件,该类型组件有17项。Unity拥有内置的NVIDIA PhysX物理引擎,可以模拟真实的物理行为。4、Navigation5、Audio6、Rendering7、Miscellaneous4.5创建光源光源是每一个场景的重要组成部分。光源决定了场景环境的明暗、色彩和氛围。每个场景中可以使用一个以上的光源,合理地使用光源可以创造完美的视觉效果。4.5.1 Unity的光源类型Unity提供了4种类型的光源,在合理设置的基础上可以模拟自然界中任何的光源。1.Directional light:方向光源。该类型光源可以被放置在无穷远处,额可以影响场景的一切游戏对象,类似于自然界中日光的照明效果。方向光源是最不耗费图形处理器资源的光源类型。2、Point light:点光源。点光源从一个位置向四面八方发出光线,影响其范围内的所有对象,类似灯泡的照明效果。点光源的阴影是较耗费图像处理器资源的光源类型。3.Spotlight:聚光灯。灯光从一点发出,在一个方向按照一个锥形的范围照射,处于锥形区域内的对象会受到光线照射,类似射灯的照明效果。聚光灯是较耗费图形处理器资源的光源类型。4.Area Light:区域光/面光源。该类型光源无法应用于实时光照,仅使用于光照贴图烘培。4.5.2光源属性讲解下面就所有类型光源的参数统一进行介绍:Type:类型可以选择光源的类型Range:范围用于控制光线从光源对象的中心发射的距离,只有点光源和聚光灯有该参数。Spot Angle:聚光灯角度。该项用于控制光源的锥形范围,只有聚光灯有该参数。Color:颜色。Intensity:强度。Cookie:Cookie Size:Shadow Type:Strength:强度。Resolution:分辨率。Bias:偏移。Softness:柔化。4.6.1摄像机类型Unity中支持两种类型的摄像机,分别是Perspective(透视)以及Orthographic(正交)摄像机。通过改变摄像机的模式可以方便地指定摄像机的类型。4.6.2摄影机参数在Unity中创建摄像机对象时,默认情况下除了Transform(几何变换)组件外还会带有Camera、Flare Layer、GUI Layer、Audio Listener等4个组件。下面就Camera(摄影机)组件的参数来进行讲解:Clear Flags:清除标记。决定屏幕的哪部份将被清除。该项一般用于使用多台摄像机来描绘不同游戏对象的情况,有3种模式可供选择:Skybox:天空盒。该模式为默认设置。在屏幕中空白的部分将显示当前摄像机的天空盒。如果当前摄像机没有设置天空盒,它会默认使用Background(背景)色。Solid Color:纯色。选择该模式屏幕上的空白部分将显示当前摄像机的Background(背景)色。Depth only:仅深度。该模式用于游戏对象不希望被裁剪的情况。Don't Clear:不清除。该模式不清除任何颜色或深度缓存。其结果是,每帧渲染的效果叠加在下一帧之上。一般与自定义的Shader(着色器)配合使用。Background:背景。该项用于设置背景颜色。在镜头中的所有元素渲染完成且没有指定Shybox(天空盒)的情况下,将设置的颜色应用到屏幕的空白处。Culling Mask:剔除遮罩。依据游戏对象所指定的层来控制摄像机所渲染的游戏对象。Projection:投射方式。Perspective:透视。摄像机将用透视的方式来渲染游戏对象。Orthographic:正交。摄像机将用无透视感的方式均匀地渲染游戏对象。Field of view:视野范围。(只针对透视模式)该项用于控制摄像机的视角宽度,以及纵向的角度尺寸。Size:大小。(只针对正交模式)。该项用于控制正交模式摄像机的视口大小。Clipping Planes:裁剪平面。摄像机开始渲染与停止渲染之间的距离。Near:近点。摄像机开始渲染的最近的点。Far:远点。摄像机开始渲染的最远的点。Normalized View Port Rect:标准视图矩形。用四个数值来控制该摄像机的视图将绘制在屏幕的位置以及大小,该项使用屏幕坐标系,数值在0~1之间。X:摄像机视图进行绘制的水平位置起点。Y:摄像机视图进行绘制的垂直位置起点。W:宽度。摄像机输出到屏幕上的宽度。W:高度。摄像机输出到屏幕上的高度。Depth:深度。该项用于控制摄像机的渲染顺序,较大值的摄像机将被渲染在较小值得摄像机之上。Rendering Path:渲染路径。该项用于指定摄像机的渲染方法。Target Texture:目标纹理(该项只有Pro版才能支持)。该项用于将摄像机视图输出并渲染到屏幕。一般用于制作导航图或者画中画等效果。HDR:高动态光照渲染。该项用于启用摄像机的高动态范围渲染功能。因为人眼对低范围的光照强度更为敏感,所以使用高动态范围渲染能够让场景更为真实,光照的变换不会显得太突兀。5.5常用编辑器组件常用编辑器组件可分为两种,一是原有组件,二是拓展组件。5.5.1摄像机作为一个游戏对象,摄像机存在Scene视图中。摄像机组件的一些常用参数。Clear Flags:背景显示内容,默认是天空盒子,前提是必须在Render Settings中设置过天空盒子材质。Background:背景显示颜色。如果没有设置天空盒子,将显示这个颜色。Culling Mask:用于选择是否显示某些层,默认为全部显示。Projection:摄像机的类型。Field of View:摄像机的视野范围。Near:以摄像机为圆心,绘制最近点的距离。Far:以摄像机为圆心,绘制最远点的距离。Normalized View Port Rect:可理解为设定Game视图的显示区域参数。多台摄像机可以通过设置各自显示区域来分屏同时显示。Depth:摄像机的深度。若存在多个摄像机,先渲染该值较小的摄像机。Rendering Path:渲染路径。Target Texture:目标纹理,设置后会挡住摄像机。4.7地形编辑器4.7.1地形编辑器概述Unity中的地形编辑器支持LOD(Level of Detail)功能,能够根据摄像机与地形的距离以及地形起伏程度调整地形块(Patch)网格的疏密程度。远处或平坦的地形块使用稀疏的网格,近处或陡峭的地形块使用密集的网格。这将使游戏场景既真实、精细,同时也不影响性能。地形与其他的游戏对象有些不同,需要注意的是,地形支持Transform(几何变换)组件中的Position(位置)变换,但对于Rotation(旋转)以及Scale(缩放)操作是无效的。4.7.2地形的创建方式以及相关参数设定4.7.2.1地形的创建及基本设置1、打开菜单栏中的Terrain|Create Terrain项,便会创建一个地形2、新建地形后,首先讲解一下菜单栏中Terrain项下面的设置。Create Terrain:创建地形该项用于在项目工程中创建地形并将该地形资源放置到场景中。Import Heightmap-Raw…:导入高度图Export Heightmap-Raw…:导出高度图Set Resolution…:设置分辨率该项用于设置地形尺寸、高度图分辨率、细节分辨率、纹理分辨率等相关参数Terrain Width:地形宽度。用于设置地形的宽度。&Terrain Height:地形高度。用于设置地形的高度。Terrain Length:地形长度。用于设置地形的长度。4.7.2.2地形组件参数详解新建地形后,在监视视图可以看到地形对象所挂载的组件,除了Transform组件外,还有一个Terrain(Script)(地形脚本)组件以及一个Terrain Collider(地形碰撞)组件。4.10天空盒Unity中的天空盒实际上是一种使用了特殊类型Shader的材质,该种类型材质可以笼罩在整个游戏场景之外,并根据材质中指定的纹理模拟出类似远景、天空等的效果,使游戏场景看起来更完整。4.10.1天空盒资源包的概述1、启动Unity应用程序,依次单击菜单栏中的Assets|ImportPackage|Skyboxes选项,为项目工程导入Skyboxes.UnityPackage。2、资源包被导入后,资源包中包含9个天空盒。3、9种天空盒的效果如下:DawnDusk SkyboxEerie SkyboxMoonShine SkyboxOvercast1 SkyboxOvercast2 SkyboxStarryNight SkyboxSunny1 SkyboxSunny2 SkyboxSunny3 Skybox4.10.2天空盒的两种应用方式及其区别一种是在Unity中Render Settings(渲染设置)里进行指定,这种方法是针对游戏场景的,简单地讲,就是在同一个游戏场景中,无论使用哪个摄像机对象,天空盒都保持不变。并且该方式指定天空盒可以在场景视图中直接显示。另一种方式是为摄像机对象添加天空盒组件,然后在天空盒组件中进行指定,这种方法只针对摄像机本身,简单地讲,就是在同一个游戏场景中,如果切换摄像机对象,天空盒会随之变换。需要注意的是,为摄像机指定的天空盒优先级会高于在渲染设定中指定的天空盒。4.10.3创建天空盒的方法除了Skybox资源包中提供的天空盒外,Unity还支持用户自制天空盒材质。chap6 Mecanim动画系统Mecanim是Unity提供的一个丰富而复杂的动画系统,它提供了:针对人形角色的工作流和动画创建能力。Retargeting(运动重定向)功能,即把动画从一个角色模型应用到另一个角色模型上的能力。针对Animation Clips(动画片段)的简易工作流,即针对动画片段以及他们之间的过渡和交互过程的预览能力。一个用于管理动画间复杂交互作用的可视化编程工具。通过不同逻辑来控制不同身体部位运动的能力。Mecanim工作流可以被分解为3个主要阶段:1、资源的准备和导入这一步骤与Mecanim系统无关。2、角色的建立主要有以下两种方式:&人形角色的建立一般角色的建立。动画重定向功能对此并不适用。3、角色的运动这里包括设定动画片段及其相互间的交互作用,也包括建立状态机和混合树、调整动画参数以及通过代码控制动画等。旧版动画系统是Unity引擎在4.0版本之前使用的老的动画系统。Unity公司正计划采用Mecanim动画系统逐步彻底地替换旧版动画系统。在使用角色模型之前,首先需要将它导入到项目工程中来。Unity可以导入原生的Maya文件(.mb或者.ma)、Cinema4D文件(.c4d)以及一般的FBX文件。Animation Clips(动画片段):动画角色具有的一系列的在不同情景下被触发的基本动作,比如行走、奔跑、跳跃、投掷和死亡等,这些基本动作被称为动画片段。最容易使用的动画模型是含有预分解动画片段的模型。使用预分解动画模型使用未分解动画模型用户可以为任意模型的动画组件添加动画片段在非Mecanim模型(没有肌肉定义)上加入动画片段要将Muscle Definition属性设置为None。另一种导入动画片段的方法是遵循Unity指定的动画文件命名方案。用户可以创建独立的模型文件并按照modelName@animationName.fbx的格式命名。除了人形动画,Mecanim系统也能够支持非人形动画,只不过在非人形动画中无法使用Avatar系统和其他一些相关功能。在Mecanim系统中,非人形动画被称为一般动画(Generic Animation)。在人形动画中,一般可以很容易知道人形模型的中心点和方位;但对于一般动画,由于骨架可以是任意形状,则需要为其指定一根参考骨骼,它在Mecanim系统中被称为根节点(root node)。选中根节点后,即可建立多个动画片段之间的对应关系,且实现它们之间的正确混合。此外,根节点还对实现区分骨骼动画和根节点的运动具有重要意义(通过OnAnimatorMove进行控制)。动画片段可以基于姿态、旋转和位置进行循环。任何一个拥有Avatar的GameObject都同时需要有一个Animator组件,该组件是关联角色及其行为的纽带。Animator组件中还引用了一个Animator Controller,它被用于为角色设置行为,这里所说的行为包括状态机(State Machines)、混合树(Blend Trees)以及通过脚本控制的事件(Events),具体包括:Controller:关联到该角色的animator控制器。Avatar:该角色的Avatar。Apply Root Motion:是使用动画本身还是使用脚本来控制角色的位置。Animate Physics:动画是否与物理交互。Culling Mode:动画的裁剪模式。Always animate:总是启用动画,不进行裁剪。Based on Renderers:当看不见角色时只有根节点运动,身体的其他部分保持静止。补充:chap7物理引擎7.1 Rigidbody:刚体刚体组件可使游戏对象在物理系统的控制下来运动,刚体可接受外力与扭矩力用来保证游戏对象像在真实世界中那样进行运动。任何游戏对象只有添加了刚体组件才能受到重力的影响。在Unity中为游戏对象添加刚体组件的方法是:1、选中该对象,然后依次打开菜单栏中Component-&Physics-&Rigidbody选项,这样就在该游戏对象上添加了刚体组件。2、Rigidbody组件的属性面板如图所示。刚体组件的各参数介绍如下:Mass:质量。该项用于设置游戏对象的质量。Drag:阻力。当对象受力运动时受到的空气阻力。0表示没有空气阻力,阻力极大时游戏对象会立即停止运动。Angular Drag:角阻力。当对象受扭矩力旋转时受到的空气阻力。0表示没有空气阻力,阻力极大时游戏对象会立即停止运动。Use Gravity:使用重力。若开启此项,游戏对象会受到重力的影响。Is Kinematic:是否开启动力学。若开启此项,游戏对象将不再受物理引擎的影响从而只能通过Transform(几何变换组件)属性来对其操作。该方式适用于模拟平台的移动或带有铰链关节链接刚体的动画。Interpolate:插值该项用于控制刚体运动的抖动情况,有3项可供选择。None:没有插值。Interpolate:内插值。基于前一帧的Transform来平滑此次的Transform。Extrapolate:外插值。基于下一帧的Transform来平滑此次的Transform。Collision Detection:碰撞检测。该属性用于控制避免高速运动的游戏对象穿过其他的对象而发生碰撞,有3项可供选择。Discrete:离散碰撞检测。该模式与场景中其他的所有碰撞体进行碰撞检测。该项为默认值。Continuous:连续碰撞检测。Continuous Dynamic:连续动态碰撞检测模式。Constraints:约束。该项用于控制对于刚体运动的约束。Freeze Position:冻结位置。刚体对象在世界坐标系中的X、Y、Z轴方向上(勾选状态)的移动将无效。Freeze Rotation:冻结旋转。刚体对象在世界坐标系中的X、Y、Z轴方向上(勾选状态)的旋转将无效。通常没有必要在操作一个对象刚体的同时也操作其Transform,只需要二选其一即可。7.2 Colliders:碰撞体碰撞体是物理组件中的一类,它要与刚体一起添加游戏对象上才能触发碰撞。添加碰撞体的方法:首先选中一个游戏对象,然后依次打开菜单栏Component-&Physics选项,可选择不同的碰撞体类型,这样就在该对象上添加了碰撞体组件。7.2.1碰撞体型介绍1.Box Collider:盒碰撞体是一个立方体外形的基本碰撞体。Is Trigger:触发器。勾选该项,则该碰撞体可用于触发事件,并将被物理引擎所忽略。Material:材质。采用不同的物理材质类型决定了碰撞体与其他对象的交互形式。Center:中心碰撞体在对象局部坐标中的位置。Size:大小。碰撞体在X、Y、Z方向上的大小。2.Sphere Collider:球形碰撞体3.Capsule Collider:胶囊碰撞体4.Mesh Collider:网格碰撞体5.Wheel Collider:车轮碰撞体7.2.2碰撞体相关的知识点介绍7.3 Character Controller:角色控制器7.4布料7.4.1交互布料7.4.2蒙皮布料7.4.3布料渲染器7.5关节7.5.1铰链关节7.5.2固定关节7.5.3弹簧关节7.5.4角色关节7.5.5可配置关节7.6力场7.7物理引擎实例chap9导航网格寻路9.1概述NavMesh(导航网格)是3D游戏世界中用于实现动态物体自动寻路的一种技术,它将游戏场景中复杂的结构组织关系简化为带有一定信息的网格,在这些网格的基础上通过一系列相应的计算来实现自动寻路。Unity从3.5开始集成了导航网格功能,并提供了方便地用户界面。导航时,只需要给导航物体挂载导航组件,导航物体便会自行根据目标点来寻找最直接的路线,并沿着该路线行进到目标点。chap12游戏开发基础知识在游戏引擎中使用的矩阵通常为4*4矩阵,因为它可以描述向量的平移、旋转、缩放等所有的线性变换。如果引入齐次坐标,则可以使用(x,y,z,1)来表示坐标点,而使用(x,y,z,0)来表示向量。四元数Q可记作:Q=[w,(x,y,z)]在3D数学中使用单位四元数/欧拉角/矩阵来表示旋转,对于三维空间中旋转轴为n,旋转角度为a的旋转,如果用四元数表示,四个分量分别为:w=cos(a/2),x=sin(a/2)cos(b_x),y=sin(a/2)cos(b_y),z=sin(a/2)cos(b_z)其中cos(b_x),cos(b_y),cos(b_z)分别表示旋转轴的x,y,z分量。Unity中物体的前方向为局部坐标系z轴的正方向可编程管线的核心就是Shader。在Direct3D 9中,渲染管线主要有9个处理阶段构成。分别是:局部坐标变换→世界坐标变换→观察坐标变换→背面消隐→光照计算→裁剪→投影→视口计算→光栅化。对于可编程管线,顶点变换和光照可以通过编写Vertex Shader来控制,光栅化则可以通过编写Pixel Shader来控制。chap13 Unity脚本开发基础在Unity中,游戏交互通过脚本编程来实现。脚本可以理解为附加在游戏对象上的用于定义游戏对象行为的指令代码。通过脚本,开发者可以控制每一个游戏对象的创建、销毁以及对象在各种情况下的行为,进而实现预期的交互效果。Boo是Python语言在.NET上的实现,使用者相对较少。Unity的脚本语言基于Mono的.NET平台上运行,可以使用.NET库,这也为XML、数据库、正则表达式等问题提供了很好的解决方案。Unity里的脚本都会经过编译。Unity的3种脚本语言实际上在功能和运行速度上是一样的,区别主要体现在语言特性上。Unity官方示例中的脚本基本都是用JavaScript写的。有人将Unity使用的JavaScript称为UnityScript。大多数的Unity第三方插件都是用C#编写的。C#基本语法在Unity中,C#变量声明方式为:变量前面可以添加访问修饰符public、protected、private,其中public的变量可以在监测视图中查看和编辑,不添加访问修饰符默认为private(在JavaScript中默认为public)。JavaScript/C#中可用的变量类型:数值类型字符串布尔值在C#中只能使用内建数组虽然不能使用Array数组,但是可以使用ArrayList、List等容器来达到同样的目的。C#中的操作符与JavaScript操作符一致。C#中的条件判断语句、循环语句、switch语句的使用与JavaScript语句一致。参数可以使用关键字ref声明为传引用参数,在函数调用时的实参数前也需要添加ref。另外,函数参数前可以使用关键字out实现返回多个数值。在使用C#编写脚本时还需要注意以下几个规则:1、凡是需要添加到游戏对象的C#脚本类都需要直接或间接地从MonoBehaviour类继承。2、使用Start或者Awake函数来初始化,避免使用构造函数。不使用构造函数的原因是在Unity里无法确定构造函数何时被调用。3、类名要与脚本文件名相同。这里要求与文件名同名的类指的是从MonoBehaviour继承的行为类,普通的C#类可以随意命名。4、协同函数(Coroutines)返回类型必须是IEnumerator,并且用yield return替代yield。5、目前Unity里的C#不支持自定义命名空间。在Unity中有两种新建脚本文件的方法,操作方法分别为:1、打开菜单栏中的Assert|Create|Javascript项或者是C# Script项2、在项目视图上方单击Create按钮,或者在视图区域右击,在快捷菜单中选择Create|Javascript项或者是C# Script项来创建脚本#pragma strict禁用了脚本的动态类型,强制使用静态类型。脚本必然事件(Certain Event):在满足某些条件时由Unity自动调用。Start、Update正是最常用的两个。层次视图中的游戏对象:Player1监测视图的属性项目视图中的脚本Player1.cs&在Unity中,开发者编写的每一个脚本都被视为一个自定义的组件,游戏对象可以理解为能容纳各种组件的容器。游戏对象的所有组件一起决定了这个对象的行为和游戏中的表现。作为一个组件,脚本本身是无法脱离游戏对象独立运行的,它必须添加到游戏对象上才会生效。MonoBehaviour是Unity中一个非常重要的类,它定义了基本的脚本行为,脚本必然事件就是从MonoBehaviour继承而来。除了必然事件,MonoBehaviour定义了对各种特定事件的响应函数,这些函数名称均以On作为开头。表13-7常用的事件响应函数OnBecameVisible对于任意一个相机可见时调用OnBecameInvisible对于任意一个相机不可见时调用13.6.4访问组件一个游戏对象可能由若干组件构成。Transform用于定义对象在场景中的位置、角度、缩放参数;Mesh Filter用来从资源文件中读取模型;Mesh Renderer用来在场景中渲染Player1模型;常用的组件及其对应的变量Transform,transformRigidbody,rigidbodyRenderer,rendererLight,lightCamera,cameraCollider,colliderAnimation,animationAudio,audio如果游戏对象上不存在某组件,则该组件对应变量的值将为空值null。组件引用函数GetComponetGetComponetsGetComponetInChildrenGetComponetsInChildren这几个函数比较耗时,因此应

我要回帖

更多关于 unity3d 物体旋转 的文章

 

随机推荐