unity中国Plane放大缩小

3.1.5 Scene视图
本文所属图书&>&
本书结合Unity这种多平台的集成引擎和编辑器,介绍如何使用Unity创建游戏、添加交互性,以及修饰游戏并发布游戏的所有知识。本书分为五部分,每一章都介绍一个独立的概念,并且循序渐进地讲述新的概念,还使用一...&&
Scene视图是编辑器中最重要的视图之一&&它是游戏世界或是关卡的一个可视化表示(见图3-7)。在这里可以对Hierarchy视图中的所有物体进行移动、操纵和放置,创建供玩家进行探险和交互的物理空间。
正如你所看到的,在Hierarchy视图中列出的对象都会在Scene视图中显示出来。可以在Hierarchy视图中单击对象的名字来选中它,或是在Scene视图中手动单击它。在Scene视图或是Hierarchy视图中单击不同的对象,将会在Inspector视图中显示该对象所对应的数据。
注意 如果你在Hierarchy视图中可以看到对象列表,但是Scene视图看上去空空如也,可能是你的Scene视图缩得太小了,以至于无法看到各个资源。要修正这个问题,可以在Hierarchy视图中选中某个对象,移动鼠标指针并让它悬停在Scene视图上,随后按F键来放大显示。
注意,通过在Hierarchy视图中单击Primitives对象,你实际上在Scene视图中选择了它所有的子对象。在Scene视图中并不会显示一个单独的&Primitives&对象,所以,如果想要选择某个父节点之下的所有对象,必须在Hierarchy视图中这样做。
1. 摄像机导航
学会怎样在Scene视图中迅速移动,是使用编辑器时需要掌握的最重要的方面之一(如果你会使用Autodesk& Maya,很可能会熟悉这些控制方法)。你可以把Scene视图想象成为一个虚拟摄像机的输出或焦点。为了在场景中进行移动,你需要移动摄像机的视野,就好像你在看着不同的对象。
r Tumble(旋转,Alt+鼠标左键):摄像机会以任意轴为中心进行旋转,从而旋转视图。
r Track(移动,Alt+鼠标中键):在场景中把摄像机向左、向右、向上和向下移动。
r Zoom(缩放,Alt+鼠标右键或是鼠标滚轮):在场景中缩小或放大摄像机视角。
r Flythrough(穿越)模式(鼠标右键+WASD键):摄像机会进入&第一人称&模式,使得你可以在场景中迅速地移动和缩放。
r Center(居中,选择游戏对象并按F键):摄像机会放大并把选中的对象居中显示在视野中。鼠标光标必须位于Scene视图中,而不是在Hierarchy视图中的对象上方。
r Full& Screen(全屏)模式(空格键):按下空格键可以使得当前激活的视图占据编辑器所有可用的显示空间。再次按下它可以返回之前的布局。当前激活的视图就是鼠标所悬停的视图。
如果你的鼠标只有一个键(或者你只希望使用鼠标左键),也不会完全无法使用所有的功能;别担心。在工具栏中选择&手形&工具(或是在键盘上按Q键),让鼠标进入&移动&(Move)模式。
r Tumble(Alt+鼠标键):摄像机会以任意轴为中心进行旋转,从而旋转视图。
r Track(鼠标键):在场景中把摄像机向左、向右、向上和向下移动。
r Zoom(Ctrl+鼠标键):在场景中缩小或放大摄像机视角。
尝试不同的移动控制,直到越来越熟悉和习惯它们。能够在游戏场景中精确地迅速移动,这会使你的开发过程更为迅速并且更为愉快。
Scene视图还包含一个名为Scene gizmo的特殊工具,如图3-8所示。这一特殊工具使你可以迅速地获取场景摄像机的朝向,从而迅速地把摄像机视角切换到预设的视角上。
术语 gizmo就是一个图标或者记号,它通常用来表示那些在真实世界中没有可视化表示的东西。在3D程序(例如Unity)中,通常使用gizmo来表示移动和摄像机控制。
尝试单击Scene gizmo上的各个箭头来看看Scene视图如何更新。每个箭头改变摄像机的视角,使其沿着一个不同的正交(orthogonal)或是二维方向,例如,上、后、前、右(参见图3-9)。有时你想要切换到这些视角中的某一个,以便在场景中正确地排列一个对象。单击这一gizmo中的居中立方体图标,可以把Scene视图恢复到默认的透视(Perspective)视图。
注意 在某些侧视图中,Plane(平面)对象可能看上去就像是消失了,这是因为它是一个2D对象&&平面通常使用两条坐标轴来进行定义,并且没有高度。如果你的任何2D对象看上去像是消失了,请切换到一个不同的正交视图。
如果你按Shift并单击中间的立方体,会进入和透视视图类似的一个模式,它叫做等距(isometric)视图。透视视图模拟一个真实的三维空间,随着对象越来越远,它们会变得越来越小。然而,在等距视图中,随着对象越来越远,它们的大小和形状并不会改变,而是保持相同的大小;这个摄像机视角缺乏对透视的模拟。你可能在某些较老的游戏中见过它(参见图3-10)。
还需要注意,每个箭头的颜色和游戏世界中某条坐标轴的颜色是匹配的:红色对应于X轴,绿色对应于Y轴,蓝色对应于Z轴。Unity的工作区使用笛卡尔坐标系统,X和Z构建了地平面,Y轴定义了游戏世界的高度和深度。游戏世界的中心位于这三条轴的交点,也就是原点(0,0,0)。这通常用向量标记方式表示为x=0、y=0、z=0,或者更通用地表示为(x,y,z)。
注意 如果你更习惯于使用与默认颜色不同的颜色来表示游戏世界的坐标轴,可以单击Edit&Preferences&Colors,然后修改你喜欢的任何颜色。
图3-11中所显示的Scene视图的控制栏可以改变摄像机查看场景的方式。其默认设置可以使你对于场景在游戏中渲染后的样子有一个很好的认识,它还会显示一个网格以帮助你定位和移动对象。
第一个下拉列表(绘制模式)可以控制在游戏场景中对象是怎样绘制的。默认值为Textured(带有贴图的)&&即对象会使用你为其指定的颜色或贴图进行绘制。单击这个菜单把绘制模式修改为Wireframe(线框)&&这会显示对象的物理网格,而不带有任何贴图。最后的选项,TexWire(带有贴图的线框)会把对象的贴图和它们的线框叠加在一起显示。这些选择中的任何一个都不会改变游戏的显示方式,它只会改变你在Scene视图中查看这些对象的方式。
2. 高级视图操作
如果想要通过对对象进行微调来优化你的游戏场景,那么Render Modes(渲染模式)下拉列表是非常有用的。默认值(RGB)会以通常情况下带有颜色的方式来显示所有的对象。
在下拉列表里面选择Alpha,会使用对象的Alpha值来显示场景中的所有对象&&完全不透明的对象会用白色渲染,完全透明的对象会用黑色渲染,半透明的对象会使用不同深度的灰色渲染。Overdraw模式会显示场景中有多少时间是消耗在重复绘制上。最后一个选项Mipmaps会试图显示对象所使用的最理想的贴图大小。使用蓝色绘制的对象的贴图太小了,而使用红色绘制的对象的贴图太大了。当然,这并不一定是完全正确的,它取决于游戏的分辨率。
Scene Lighting(场景光照)按钮可以在Scene视图是使用默认的内置光照还是使用你自己实现的光照之间来回切换。如果你没有在场景中放入任何光源,使用内置光照设置会比较有用。最后一个切换按钮Scene Overlay(场景叠加)可以对摄像机进行更新,使得场景的显示方式就像在游戏中一样&&网格隐藏了,其他的效果(如雾化效果、GUI元素以及天空盒)也会渲染。
尝试使用不同的选项来看看它们的效果。
3. 操作对象
除了把摄像机视角四处移动以外,还需要在场景中重新定位和移动对象。这些操作称为对象变换(object transform),它们可以处理任意选中对象的位置、旋转和大小(相对尺寸)。对象变换方式有以下两种方式:可以在Inspector视图中为这些变换输入新的值,也可以通过gizmo手动地移动和操作这些对象。
在Hierarchy视图或者Scene视图中单击Sphere对象,以使其信息显示在Inspector视图中,如图312所示。每个对象列出的第一个属性就是变换,它保存了该对象当前的位置、旋转和缩放。单击这些输入框中的任意一个进行输入,以修改里面的数字。Unity的基本单位是米,因此让y=2会把Sphere移动到空中两米。让y=-2会把Sphere对象移动到平面之下两米。
除了输入这些离散的值以外,你也可以在任何这些输入框中拖动这些值。在变换组件框中单击任何坐标轴的标签(X、Y或者Z)然后左右拖动鼠标。这个对象会随着你的改变而移动或是变形。这并不是一种精确地定位或操作对象的方法,但是,这是一种快速而粗糙的方法,可以将对象大致放置到位以便随后微调。
也可以通过Transform工具来对对象进行变换。你可以手动地在工具栏中选择一个工具,也可以使用下一节介绍的热键在工具之间快速切换(强烈推荐)。
图3-13中所示的Translate工具可以在场景中移动选中的对象的位置,可以沿着三条坐标轴中的某一条移动,也可以在整个空间自由移动。在Hierarchy视图中单击Sphere对象并且按W键来激活移动工具。
抓住其中的一个手柄,可以把对象沿着该坐标轴在游戏世界中移动(再强调一下,红色就是沿着X轴,绿色是沿着Y轴,蓝色是沿着Z轴)。注意,Inspector视图中的值会根据你的修改而进行更新。
也可以通过单击该工具的中心(或是这个对象自身)然后在场景中拖动,以将这个对象沿着所有三条坐标轴自由地移动。然而,这通常不是最好的方法,因为你不能精细地控制放置的位置。你会发现,在不同的正交视图(例如,前视、右视)中切换,对于精确地放置对象有很大的帮助。
图3-14中所示的Rotate工具可以把对象按照任何给定的坐标轴进行旋转。单击Cube对象并按E键来激活这一工具。
这个工具的手柄就好像三个带有颜色的环包着一个球体。拖动这些手柄或者直接拖动鼠标就可以旋转对对象。注意,这些环的颜色指明了这个对象会按照哪条轴来旋转。例如,如果拖动蓝色的手柄,这个盒子就会沿着Z轴旋转。这一工具还有一个简单的黄色环围绕在另外三个环的外侧。可以单击并拖动这个黄色的环来让对象按照所有的三条坐标轴进行旋转。
最后一个变换工具是Scale工具,可以在键盘上按R键来访问它。如图3-15所示,这个工具和Translate工具的用法很相似&&可以拖着一个手柄,把这个对象在这条坐标轴上缩放,或者使用中间的黄色方块来把对象在所有三条坐标轴上一致地缩放。
在场景中三个对象中的任意一个上尝试使用该工具。
使用这个工具对网格进行缩放是有风险的。这看上去像一个非常快速的方法,可以用来改变任何资源的大小,但是,如果使用太多缩放过的对象或是把贴图拉伸到完全不相称的地步,这可能会影响游戏的性能。调整缩放最好的方法就是,确保3D应用程序中的网格在最开始时其大小就是正确的。
注意 可以在Edit&Preferences&Keys中改变这些工具中任何一个的默认键。
4. 移动多个对象或是具有父子关系的对象
到目前为止,我们只是在移动单个对象,也就是Primitives对象的子对象。尝试在Hierarchy视图中选中Primitives对象并把它移动到点(0,-35,0)。整个Primitives对象组(包括其所有子对象)都会移动到新的位置。现在单击任何子对象并在Inspector视图中查看它们的信息。注意到了什么?这些子对象各自的位置变换并没有随着你把Primitives对象移动到新的位置而更新或改变,即使你清楚地看到它们的位置是改变了的。这是因为,子对象从它们的父对象那里继承了所有的变换数据;子对象的变换值实际上是相对于其父对象的相对值,而不是在世界坐标系中的值。
例如,在Inspector视图中查看Cube对象的位置数据。Y坐标的值并不意味着它位于y=1.5米的位置,而是意味着它位于其父对象上方1.5米。改变父对象在世界坐标系中的位置,并不会改变Cube对象在其上方1.5米处这一事实。子对象的位置在局部坐标系(local coordinate)中,而父对象的位置在全局坐标系(global coordinate)中。
由于这个原因,在你要把一个对象设置为父对象之前,先手动地把它放置到原点,然后再将其设置为其他子对象的父对象,这通常是一个比较好的做法。以后,一旦你需要放置成百上千个彼此相关的资源时,这会更为简单。
也可以在用鼠标左键选择不同的对象时按Shift键,以便在Scene视图中选择多个对象。如果你不小心选中了一个本不想选中的对象,可以按Ctrl键并且左击这个对象,将其从你的选择中去除。
5. 变换Gizmo切换按钮
还记得控制栏上的变换Gizmo切换按钮吗?它们决定了Transform工具的行为和功能。第一个切换按钮,Pivot(原点)/Center(中心),可以改变工具在空间中的位置。在Hierarchy视图中选择Primitives对象并激活Rotate工具。默认值Pivot,会把工具放在这个对象的原点(pivot point),也就是在空间中变换这个对象时的参照点。(原点通常是在创建这个对象时预先定义的,并且可以在3D应用程序中很容易地移动它。)把Scene视图切换到某个正交视图,例如正视图或者后视图,并且把这个对象绕着某条坐标轴旋转。注意,这个对象在旋转时和原点的相对距离总是不变的。
现在,按下原点切换按钮把它切换到中心方式&&Rotate工具跳到了选中的对象在局部坐标系中的中心位置。再一次尝试对这个对象进行旋转。此时,这个对象会围绕其中心进行旋转,而不是围绕空间中那个虚构的原点旋转。根据自己的需要来使用圆点或是中心模式,在把资源移动到某个位置时这会省去很多麻烦。
回到Perspective视图,这次选择Plane对象并把它沿着Y轴旋转45&。激活Translate工具。当局部坐标系(Local)切换按钮激活时,Translate工具的坐标轴保持与这个对象的位置的局部坐标系对应。按下局部坐标系切换按钮,切换到全局坐标系,并且看看该工具是怎样更新的,它现在更新为以世界坐标系为参考。能够将一个对象在其局部坐标系或是全局坐标系中移动是非常有用的,尤其是当这个对象以杂乱的角度进行旋转之后。图3-16~图3-19显示了当选中某个对象后,它在不同模式之间的位置和视觉效果。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
unity3D学习之制作简单的游戏场景
下载积分:1000
内容提示:
文档格式:DOC|
浏览次数:6|
上传日期: 15:38:15|
文档星级:
该用户还上传了这些文档
unity3D学习之制作简单的游戏场景.DOC
官方公共微信查看: 403|回复: 5
最后登录注册时间阅读权限90积分24186
资深设计师, 积分 24186, 距离下一级还需 25814 积分
纳金币25393 精华8
2010安装插件,输出FBX的类型导入中。默认情况下,3dsmax8可以和U直接融合,自动转换为FBX物体。
1.面数控制
在MAX软件中制作单一Game Object物体的面数不能超过65000个三角形,即32500个多边形Poly,如果超过这个数量的物体会进行自动拆分。
打开MAX场景,选择File/Properties/Summary Info可以打开文件属性记录。
其中Faces可以看到每个物体的实际数量,模型面数要少,个体数量尽量不超过65000个Faces面。
有特殊效果的模型需要单独制作,物体命名要统一(SanLou_YanHuiTing_JingZi或者SanlouYanhuitingJingzi),但不能出现重复,否则整合模型会被覆盖,给后期工作造成不必要的麻烦。
2.建模控制
Unity3D软件支持Line渲染和编辑之后所产生的模型。大部分模型都依靠Polygon进行制作。在模型表面可以承认多出四边形的面,但不渲染交错的面。
默认情况下,U3D引擎是不承认双面材质的,除非使用植物材质球Nature类型。
所以在制作窗户、护栏等物体,如果想在两面都能看到模型,那需要制作出厚度,或者复制两个面翻转其中一个的Normal法线。
3.文件的放置
模型可以继承MAX的材质,但是文件的设置要按照以下形式进行放
在项目的Assets文件夹内,新创建一个Object文件夹。
并在其中创建Materials和Texture文件夹(分别自动存放材质球和贴图)。
模型物体并列保存在Object文件夹内。
这个规律模式不要打乱,否则会破坏整个系统逻辑。
4.材质数量控制
物体材质要赋予默认的标准材质standard,特殊材质需要特殊调节(玻璃,镜面等),透明材质需要给双面
如果一个物体给与一个材质球,那么Unity3D对于材质数量和贴图数量没有任何的限制。
如果一个物体给与多个材质球,我们需要用Multi/SubObject来实现,但是这种罗列的材质球的数量没有严格的控制,但尽量保持在10以内,过多的数量会导致一些错误。
如果不使用Multi/SubObject材质球,也可以选择一些面,然后给与一个材质球。这样系统会自动将其转换成Multi/SubObject材质。
综合而言Unity3D软件对于材质的兼容还是很好的。
5.物体的质感
Diffuse Bumped
Bumped Specular
这三种类型为常用类型,其中Bumped需要增加Normal法线贴图来实现凹凸。
这种材质为贴花材质,即相当于Mask类型,可以再Decal(RGBA)贴与一个带有Alpha通道的图像,形成和原图像相叠加的效果。
Diffuse Detail
这种材质可以创造出污迹和划痕的效果,即相当于Blend混合材质。
Reflective
其中各种类型可以创造出金属反射效果,需要增加Cubmap贴图。
Transparent
其中各种类型可以创造出透明的效果,需要增加具有Alpha的通道贴图。
注意:如果要做玻璃贴图,Alpha如果全是灰色或黑色(即要求全透明),那么Alpha就会失效,如果要全透明,材质Alpha其中必须至少有1像素为白色。
其中Soft Occlusion Leaves类型主要应用于片状的树叶材质。
6.物体尺寸
默认情况下U3D系统单位1等于1米,等于软件1单位。如果我们制作是按照实际大小比例制作,那么导入U3D引擎会自动变成原来的1%的大小。
因为默认情况下,U3D的FBXImporter中的Scale Factor的数值为0.01。
那个我们可以将Scale Factor的数值恢复为1,但是这样会占用模型资源,比较消耗物理缓存。
我们也可以将这个物体从Hierarchy中选择,并使用Scale放大100倍,这种设置可以有很多好处,并且还能通过用脚本制作动画。
7.关于复制
场景中的灯光布局,重复的模型物体都可以使用系统Prefab进行关联复制,这样可以改变一个参数的同时将所有关联物体属性改变。
8.山脉控制
在创建山脉之后,选择Terrain/Set Resolution可以设置山脉的大小和属性。
需要注意的是,默认情况下Terrain Width和Terrain Height为1000米。如果设置这个数值太小,那么绘制草的时候会产生偏移,因为草的尺寸必须减少到0.1的单位。
也就是说,山脉在处理0.1单位的时候会产生0.01的偏差,如果模型太小,这种偏差是显而易见的,所以建议用户不要让模型过小。
9.光晕控制光晕又称为Lens Flare即灯光光效。
可以选择一个GameObject物体给与Component/Rendering/Lens Flare,并在Flare中增加一个Standard Assets/Light Flares/50mm Zoom项目。这样在运行之后就会产生光晕。
但有时候如果光晕太远太高却看不到。
一种办法是将光晕离近,另一种办法是将所有机Camera的Far clip plane的数值增加。
10.摄影机控制
如果场景中有多架摄影机,那么如何确定第一打开时间所显示的摄影机,就需要设置Camera属性中的Depth数值,数值越大的摄影机越优先显示。
最后登录注册时间阅读权限90积分6719
高级设计师, 积分 6719, 距离下一级还需 3281 积分
纳金币2715 精华0
Very good article !
最后登录注册时间阅读权限90积分5074
高级设计师, 积分 5074, 距离下一级还需 4926 积分
纳金币7315 精华0
Thanks for sharing !
最后登录注册时间阅读权限10积分64
设计初学者, 积分 64, 距离下一级还需 36 积分
纳金币0 精华0
不错。。。谢谢分享。。。
最后登录注册时间阅读权限70积分3048
中级设计师, 积分 3048, 距离下一级还需 1952 积分
纳金币1089 精华0
感谢分享!!!
最后登录注册时间阅读权限90积分11307
资深设计师, 积分 11307, 距离下一级还需 38693 积分
纳金币-2 精华0
总结得很好,多谢!
站长推荐 /1
纳金名模第42期摇椅3d模型:数量67个,大小465M。完全免费下载哦!接下来一起猜猜下期是什么模型咯!猜对就奖现金。这样的福利我和我的小伙伴们都惊呆了!!下载地址:
400-067-3919
Powered by - X2.5
Narkii Inc.程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之IOS触摸屏手势控制镜头旋转与缩放(八)
Unity3D研究院之IOS触摸屏手势控制镜头旋转与缩放(八)
围观17699次
编辑日期: 字体:
前几篇文章介绍了很多Unity3D引擎自身的一些问题, 今天我们在回到IOS设备上讨论一些触摸屏幕手势,本章的目标是通过触摸iPhone屏幕手势 实现模型左右的旋转,与模型的缩放。
大家想一想模型的旋转,实际上是镜头的旋转。模型的缩放实际上是镜头Z轴方向的坐标。那么实现本章的内容只需要控制镜头的位置方可实现。
我们在游戏场景中创建一些简单的模型做为参照物,插一句 “大家有谁知道 . FBX 的模型那里可以免费找到,我想在博文中加点游戏模型让场景更好看一些,可是苦于找不到有点郁闷,用公司的模型来写博文有觉得有点不合适”哇咔咔 ,如果有知道的哥们 不妨告诉我喔。啦啦啦。
我们创建一个简单的游戏平面, 然后平面中放一个箱子做为旋转缩放的参照物。如下图所示,选中摄像机,给摄像机添加一个脚本名称为Move. 脚本中有一个参数 Target,它的作用是设置摄像头旋转移动参照物,这里把一个箱子赋值给了 Target,那么左右滑动屏幕会发现箱子在旋转,两手缩放屏幕会发现箱子在放大与缩小。
我们看看Move这条脚本,说明一下几个重要的 :
这些方法都是系统自己调用的方法
function Start () : 游戏启动以后只调用一次,可用于脚本的初始化操作,
function Update ():Start()方法调用结束以后每一帧都会调用,可以在这里更新游戏逻辑。
function LateUpdate (): Start()方法调用结束以后每一帧都会调用,但是它是在 Update()调用完后调用。
Move.js完整代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
//用于绑定参照物对象var target : Transform;//缩放系数var distance = 10.0;//左右滑动移动速度var xSpeed = 250.0;var ySpeed = 120.0;//缩放限制系数var yMinLimit = -20;var yMaxLimit = 80;//摄像头的位置var x = 0.0;var y = 0.0;//记录上一次手机触摸位置判断用户是在左放大还是缩小手势private var oldPosition1 : Vector2;private var oldPosition2 : Vector2;&//初始化游戏信息设置function Start () {&&&&var angles = transform.eulerAngles;&&&&x = angles.y;&&&&y = angles.x;& // Make the rigid body not change rotation&&
if (rigidbody)
rigidbody.freezeRotation = true;}&function Update (){ //判断触摸数量为单点触摸 if(Input.touchCount == 1) {
//触摸类型为移动触摸
if(Input.GetTouch(0).phase==TouchPhase.Moved)
&&&&//根据触摸点计算X与Y位置
x += Input.GetAxis("Mouse X") * xSpeed * 0.02;&&&&&&&& y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02;&
} }& //判断触摸数量为多点触摸 if(Input.touchCount &1 )&&&&{&&&& //前两只手指触摸类型都为移动触摸&&&& if(Input.GetTouch(0).phase==TouchPhase.Moved??Input.GetTouch(1).phase==TouchPhase.Moved)&&&& {&&&&
&&&&//计算出当前两点触摸点的位置
var tempPosition1 = Input.GetTouch(0).position;
var tempPosition2 = Input.GetTouch(1).position;&&&&&&&&&&&& //函数返回真为放大,返回假为缩小&&&&&&&&&&&& if(isEnlarge(oldPosition1,oldPosition2,tempPosition1,tempPosition2))&&&&&&&&&&&& {&&&&&&&&&&&&
//放大系数超过3以后不允许继续放大&&&&&&&&&&&&
//这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改&&&&&&&&&&&&&&
if(distance & 3)&&&&&&&&&&&&&&
{&&&&&&&&&&&&&&
distance -= 0.5;&&&&&&&&&&&&&&
}&&&&&&&&&&
{&&&&&&&&&&&&&&&& //缩小洗漱返回18.5后不允许继续缩小&&&&&&&&&&&&&&&& //这里的数据是根据我项目中的模型而调节的,大家可以自己任意修改&&&&&&&&&&&&&&&& if(distance & 18.5)&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&
distance += 0.5;&&&&&&&&&&&&&&&& }&&&&&&&&&&&& }&&&&&&&&&&&&//备份上一次触摸点的位置,用于对比&&&&&&&& oldPosition1=tempPosition1;
oldPosition2=tempPosition2;&&&& }&&&&}}&//函数返回真为放大,返回假为缩小function isEnlarge(oP1 : Vector2,oP2 : Vector2,nP1 : Vector2,nP2 : Vector2) : boolean{ //函数传入上一次触摸两点的位置与本次触摸两点的位置计算出用户的手势&&&&var leng1 =Mathf.Sqrt((oP1.x-oP2.x)*(oP1.x-oP2.x)+(oP1.y-oP2.y)*(oP1.y-oP2.y));&&&&var leng2 =Mathf.Sqrt((nP1.x-nP2.x)*(nP1.x-nP2.x)+(nP1.y-nP2.y)*(nP1.y-nP2.y));&&&&if(leng1&leng2)&&&&{&&&&
//放大手势&&&&&&&& return true;&&&&}else&&&&{&&&& //缩小手势&&&&&&&&return false;&&&&}}&//Update方法一旦调用结束以后进入这里算出重置摄像机的位置function LateUpdate () {&&&&&//target为我们绑定的箱子变量,缩放旋转的参照物&&&&if (target) {
&&&&& //重置摄像机的位置
y = ClampAngle(y, yMinLimit, yMaxLimit);&&&&&&&&var rotation = Quaternion.Euler(y, x, 0);&&&&&&&&var position = rotation * Vector3(0.0, 0.0, -distance) + target.position;&&&&&&&&&transform.rotation = rotation;&&&&&&&&transform.position = position;&&&&}}&static function ClampAngle (angle : float, min : float, max : float) { if (angle & -360)
angle += 360; if (angle & 360)
angle -= 360; return Mathf.Clamp (angle, min, max);}
在Untiy3D 中运行用鼠标手势点击上看不到任何效果的,必需在iPhone真机上才可以触摸感应到效果喔 . 嘻嘻~
OK 接下来将Unity3D 导出成Xcode项目,导出的方法有谁还不会??? 我的第一篇文章有说明噢。哇咔咔~~ 然后运行项目只能在真机上运行哦。。 看看我在iPhone 上的截图。
触摸iPhone屏幕镜头旋转与缩放以后的效果,这个图确实有点不太好截,我一会把项目的源代码工程下载地址贴上来,方便大家阅读与学习,哇咔咔~~
镜头任意的旋转与缩放,还不错噢,大家快点来学习Unity3D游戏开发吧,哇咔咔~~
最后欢迎各位盆友可以和MOMO一起讨论Unity3D游戏开发,哇咔咔~~~ 附上工程的下载地址,文件名称是zoom.unitypackage,下载完毕的盆友们双击就可以自动在Unity3D 下打开它啦。然后导出成iPhone项目就可以运行了。
今天回家装个windows 7 最近对wp7的游戏开发有点兴趣哦~ 哦也~回家钻研一下~哇咔咔
下载地址:
本文固定链接:
转载请注明:
MOMO与MO嫂提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!}

我要回帖

更多关于 unity 中心点 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信