从3ds max中创建的物体 要在unity 获取子物体中添加碰撞器 要加哪一个碰撞器 我之前加了个box c

您所在的位置: &
Unity3D开发:向Unity3D中导入外部模型
Unity3D开发:向Unity3D中导入外部模型
本文属于Unity3D引擎开发基础教程系列,Unity3D支持多种外部导入的模型格式,这里列出了它支持的外部模型的属性,并且以3D MAX为例,导出FBX文件给Unity3D使用。
Unity3D支持多种外部导入的模型格式,但它并不是对每一种外部模型的属性都支持。具体的支持参数,您可以对照如下列表:
Maya的.mb和.mal格式
3D Studio Max的.maxl格式
Cheetah 3D的.jasl格式
Cinema 4D的.c4dl 2格式
Blender的.blendl格式
Lightwavel
Autodesk FBX的.dae格式
XSI 5的.xl格式
SketchUp Prol
3D Studio的.3ds格式
Wavefront的.obj格式
Drawing InterchangeFiles的.dxf格式
在下面的实例中,我们利用3D MAX来制作一个完整的动画,并导出FBX的格式给Unity3D使用。
第一步:创建新的工程文件。
创建一个名为&Turret&的项目文件夹。然后打开Unity3D软件,选择 498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="24" alt="6.JPG" src="/wyfs01/M01/08/1E/wKioJlF4kMWAWT1yAAADoZDpfwc794.jpg" id="aimg_67999" style="display:" /> &&& 498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="86" alt="7.JPG" src="/wyfs01/M00/08/1E/wKioJlF4kMXTU4WtAAAFjKLJOBg736.jpg" id="aimg_68000" style="display:" /> ,创建一个新工程项目,在项目路径中点击 498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="84" alt="8.JPG" src="/wyfs01/M01/08/1E/wKioOVF4kMXT95KkAAAF8bH_X4o182.jpg" id="aimg_68001" style="display:" /> 找到我们刚才创建的&Turret&文件夹,并点选我们需要导入的包文件,然后点击 498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="119" alt="9.JPG" src="/wyfs01/M00/08/1E/wKioOVF4kMXiRvzfAAAGrn7fEZ0875.jpg" id="aimg_68002" style="display:" /> 来创建一个新的工程文件。需要注意的是,以上步骤千万不能乱,因为Unity3D是无法以非空的文件夹作为工程文件夹来创建项目的。
在此为了节省时间,笔者直接使用刚才创建好的场景来进行示范。
第二步:制作一个炮塔模型。
打开3D MAX软件制作一个炮塔模型,并将制作好的模型保存在&Assets&【资源】文件夹下面。3D MAX中的模型样图如图8.1所示:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="558" alt="10.JPG" src="/wyfs01/M00/08/1E/wKioJlF4kMaworouAAA6wNA9MRM183.jpg" id="aimg_68003" style="display:" />
第三步:将炮塔模型放入场景。
重新来到Unity3D的软件环境中,这时大家已经能在Project【项目文件栏】看到我们刚才用3D MAX导出的模型文件和材质贴图文件了。接着我们在地形场景中找到一个合适的位置,将我们的炮塔拖拽进去。如图8.2所示:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="558" alt="11.JPG" src="/wyfs01/M01/08/1E/wKioJlF4kMbAPquGAACNGcm024M467.jpg" id="aimg_68004" style="display:" />
但是我们发现,这样似乎太小了一点。在改变外部模型尺寸的时候,有一个技巧,您不必在场景中修改它。儿科一道该模型的属性面板中去修改它的&Scale Factor&大小。如图8.3所示:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="345" alt="12.JPG" src="/wyfs01/M00/08/1E/wKioOVF4kMaghqLqAACvmrCblcU625.jpg" id="aimg_68005" style="display:" />
它的默认值都是0.01,我们在这里将它改为0.1,并在属性面板的最下方找到 498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="47" alt="13.JPG" src="/wyfs01/M01/08/1E/wKioOVF4kMaCbLGJAAAELzgU_p0480.jpg" id="aimg_68006" style="display:" /> 按钮,点击它让模型尺寸在Unity3D中得到改变。如图8.4所示:
498)this.width=498;' onmousewheel = 'javascript:return big(this)' width="558" alt="14.JPG" src="/wyfs01/M01/08/1F/wKioJlF4kMbip2I3AACBDUvS67s546.jpg" id="aimg_67991" style="display:" />
怎么样,我们的炮台是不是雄壮了许多?但是,我们并不赞同这样的模型导入方法。因为根据官方的说法,他们建议您将做好的模型导出成为FBX格式的模型文件
给Unity3D使用。也许这样会使模型在Unity3D中的运行速度得以提高吧。所以说我们还是回到3D MAX的软件环境下面,将模型导出。
第四步:将炮塔模型导出。
MAX中,点击File【文件】&&&Export【导出】,将模型文件导出为FBX文件,保存到我们创建的文件夹中的&Assets&【资源】文
件夹下面。注意一下弹出的&FBX
Export&面板,这里包含了模型动画、骨骼工具、材质等等一系列的导出设置。如果您没有在模型中添加这些东西,就需要将不必要的复选框勾选掉。
第五步:将炮塔模型再次放置到场景中。
回到Unity3D的软件环境,在Hierarchy【层次清单栏】中选中原先的炮塔模型,按下&Delete&键将其删除。然后在Project【项目
文件栏】中找到刚刚导入的FBX模型,点击选中,用前面修改模型尺寸的方法来修改FBX模型的尺寸。然后将其放置在场景中合适的位置上。于是从3D
MAX中导出的模型就顺利的导入到Unity3D的场景中了。【编辑推荐】【责任编辑: TEL:(010)】
关于&&的更多文章
Unity,也称Unity3D,是近几年非常流行的一个3D游戏开发引擎,跨
既然强大的Android Studio来了,有什么理由不去用呢?
随着秋的到来,各路才子佳人渐渐开始回到学校上课。不
百度推出轻应用引起业界火热议论,收购91和推出轻应用
App搜索对应用的影响不容忽视,目前应用商店仍采用最
本书依据最新版《软件设计师考试大纲》的考核要求,深入研究了历年软件设计师考试试题的命题风格和试题结构,对考查的知识点进行
Windows Phone专家
Android开发专家
51CTO旗下网站1,当你给模型UVW处理完后保存UV为*.uvw文件.2,创建一个新的uvw并改变它的通道为2.载入你刚才创建的uvw文件,当你用automatic uvw时候,它会给你更好的效果.用于Lightmap的UV不能重叠。3,按下"0"键打开render to texture对话框.选择"Use Existing Channel",改变通道为"2",选择添加"Lightingmap".4,预览窗口看到的图片不是最终的,实际图片在你选择的保存目录中,通常在"My Documents/3dsmax/sceneassets/images"下.名称和你所选择的物体名相同并有"LightingMap"标志的类型为TGA的文件.5,打开材质球对话框,用"Pick Material from Object"并复制"Pick Material from Object"到一个空的材质球中,因为*.fbx导出器目前还不支持"Shell Material".6,完成后将这个新材质球赋予你的模型,导出这个模型为fbx格式,本例中用cm单位,勾选了embed texture.7,当你打开你的Unity项目并导入这个模型,你仅能看到只导入了diffuse贴图.而没有LightMap贴图.我的方法是把Lightmap贴图复制添加到这个模型的fbm目录中.8,将Shader改为Lightmapped,并将Lightmap贴图拖拽到空位处.完成了!————————————————————————————————————————————这样处理出来的Lightmap没有AO,以下是3dmax里面用mentalray制作AO的流程:1、把渲染器设置为mentalray2、在材质编辑器里面建立个mentalray材质3、然后在mentalray材质下的BasicMaterial里的surface上给予一个Ambient/reflection Occlusion(basic)的shader4、将要做AO的物体赋予此材质,如果是全部物体的话可以用更方便的方法,毕竟要把材质一个个改回来也是不容易的。F10打开渲染菜单->process->translator Options->Material Overidde 构选enable 并将AO材质拖到右边5、进行适当的采样等参数设置后可以渲染了然后可以进入PS里面进行合成,叠加模式一般选择“柔光”或者“叠加”,用“叠加”将会对比度比较强。如果只要叠加AO层的阴影的话可以使用蒙版等,各种方法就看自己喜好了^_^  现以吉林动画学院虚拟校园开发为例,研究了以Unity3D引擎作为虚拟现实的开发平台,采用3ds Max为场景建模工具," />
免费阅读期刊
论文发表、论文指导
周一至周五
9:00&22:00
基于Unity3D的虚拟校园漫游系统
2015年1期目录
&&&&&&本期共收录文章20篇
  现以吉林动画学院虚拟校园开发为例,研究了以Unity3D引擎作为虚拟现实的开发平台,采用3ds Max为场景建模工具,结合JavaScript脚本语言实现交互控制,达到游览校园的目的。该漫游系统运行效果较好,说明将Unity3D引擎用于虚拟校园的实现具有实用与参考价值。 中国论文网 /1/view-6745543.htm  【关键词】虚拟现实 Unity3D 校园漫游 交互技术   虚拟校园建设是校园信息化的重要组成部分。传统的虚拟校园都是建立在二维平面地图和影像地图的基础之上,已经不能满足学校对外招生宣传、校园导航、信息化管理的多元化功能需求。利用最新的计算机虚拟现实技术和网络技术,产生了最先进的三维虚拟校园技术,三维技术比二维平面更加直观形象,更接近于校园的实景。近几年,很多高校都开展了虚拟校园建设工作,构建数字校园。   1 系统概述   本文介绍了基于Unity3D综合型游戏开发技术在虚拟校园漫游系统中的应用。Unity3D是由Unity Technologies开发的专业游戏引擎,可以让玩家轻松创建三维视频游戏、实时三维动画、建筑可视化等类型互动内容的多平台的综合型游戏开发工具,是目前最具发展前景的专业游戏引擎。现以吉林动画学院校园为虚拟漫游空间,3DMax建模软件为场景建模工具,在Unity3D开发平台下实现校园漫游系统,具有一定人机交互能力的,有利于用户更加便利、直观的了解学校。   2 系统开发流程   根据校园的规模和特点,本系统主要采用3ds Max软件进行建模,Photoshop等图像处理软件处理贴图,将模型导入Unity引擎中添加组件以及交互脚本,最后利用Unity发布系统。系统开发的流程如图1所示。   2.1 数据和素材采集   校园的数据主要包括整个校园建筑、道路、树木、草坪的位置和尺寸。一种方式是利用校园CAD规划图纸,另外一种方式就是实地测量。由于条件所限,这里的数据主要利用百度地图的测距功能采集校园整体尺寸,结合实地测量确定尺寸。   校园的素材主要包括校园各主要建筑物表面、墙面、道路、花草、树木等的电子照片。利用Photoshop等图像处理软件将这些照片进行处理,做成3D模型贴图。   2.2 三维建模   对虚拟校园场景中的主要建筑、道路、树木、花草等进行三维建模。由于场景中的各物体都比较复杂,所以采用专业的建模软件3ds Max等进行三维建模,然后对物体进行材质贴图,使模型更具有视觉真实感。   2.3 Unity3D漫游   将建模得到的模型导入Unity3D成为游戏对象(GameObject),然后添加Unity3D组件和脚本,为游戏对象赋予交互功能,从而构建一个完善的校园场景和具有一定交互性的虚拟校园漫游系统。   2.4 发布   漫游系统制作完成后,只需在“File”菜单里的“Build Settings”子菜单中选择对应的打包平台,Unity便可轻松实现跨平台的打包和发布。   3 关键技术   3.1 场景建模技术   场景建模有两种方式,一种是使用 Unity3D自身提供的建模功能,另一种是从外部导入第三方软件所建模型。Unity3D内置了一些常见的3D模型如长方体、球、圆柱体、胶囊、平面等,其内置的标准资源包也能够进行复杂建模,如地形、树木、水、草等。Unity3D支持第三方软件建模,可以从外部导入模型,常见支持的格式包括fbx、obj、3ds等。3ds Max是一款优秀的三维软件,利用它能够创建高品质的三维模型。在3ds Max中对实物进行建模,然后将模型文件保存为fbx格式,勾选“嵌入的媒体”,便可将贴图同模型一起导出。将fbx文件放入Unity3D工程中Assets目录下,Unity3D将会自动识别,在Project视图中就能够找到模型与材质等相关的资源文件。如图2所示。   3.2 交互技术   虚拟漫游是校园漫游系统的关键,交互功能是实现漫游的重点。Unity3D已经实现了“上”、“下”、“左”、“右”、“跳跃”这些逻辑操作,并且将它们封装成了角色控制器组件,不用编写任何代码可以轻松实现第一人称主角。第一人称视角的控制原理其实是控制摄像机对象的移动,所以屏幕显示的始终是主角正前方的画面。在Unity3D中将角色控制器组件导入工程后,将Project视图中的“First Person Controller”拖到Hierarchy视图中,此时它是以一个胶囊体对象的形式出现在Scene视图中。在Inspector视图中设置其位置,但y轴一定要高于地面,因为角色控制器是具有一定物理引擎的,运行程序后当它发现地面没有支撑物,就会感应重力落到地面之下。在Inspector视图中可以看到这个对象共绑定了三个脚本,“MouseLook”脚本用来控制第一人称视角如何通过鼠标来移动整个视图,“CharacterMotor”脚本用来监听键盘事件,控制主角“前”、“后”、“左”、“右”移动。“FPSInputController”脚本用来监听“Space”按键,实现第一人称视角的跳跃功能。也可以在这三个官方提供的脚本基础上进行拓展功能,从而达到更好的控制效果。如增加QE键盘事件,控制主角向“左”、“右”转身,这样就可以完全使用键盘控制主角在系统中漫游。下面例举向右转身的代码:   function Update() {   if(Input.GetKey(KeyCode.E)){   transform.Rotate(Vector3.up*Time.deltaTimer*speed);   }   }   3.3 碰撞检测技术   碰撞检测是模拟物体遇到障碍物时物理反应,例如主角遇到墙壁时,则不能继续前进。碰撞检测是漫游系统的最基本条件。游戏对象如果需要感应碰撞,那么必须给其添加碰撞器。Unity3D一共为对象提供了5种碰撞器,分别是Box Collider、Sphere Collider、Capsule Collider、Wheel Collider、Mesh Collider。设置物体的物理属性,给每个对象添加相应的碰撞器,物体便能够执行组件实现碰撞检测,主角就不会“穿墙而过”。也可以在脚本语言中实现控制基本碰撞检测。   3.4 运行效果   由于本系统采用了多平台的Unity3D引擎,它的发布运行不需要额外的安装程序,单机时直接点击EXE文件即可运行。效果如图3所示。   4 结语   随着虚拟现实技术的不断发展,借助目前流行的Unity3D引擎生成三维虚拟校园漫游系统是一个很好选择。本系统实现了场景驱动、交互,使用户能够通过运行该系统游览整个校园的风貌,对学校的宣传起到了积极的作用。事实证明,Unity3D是一款适合制作游戏的专业引擎,用它来开发虚拟校园,具有很好的用户体验。   参考文献   [1]欧阳攀,李强,卢秀慧.基于Unity3D的虚拟校园开发研究与实现[J].现代电子技术,2013(4):19-22.   [2]朱惠娟.基于Unity3D的虚拟漫游系统[J].计算机系统应用,2012(10):36-39.   [3]宣雨松.Unity3D游戏开发[M].北京:人民邮电出版社,2012.   作者简介   郑立国(1964-),男,黑龙江省人。现为吉林禹硕动漫游戏科技股份有限公司研究员。主要从事企业管理研究。   作者单位   吉林禹硕动漫游戏科技股份有限公司 吉林省长春市 130012
转载请注明来源。原文地址:
【xzbu】郑重声明:本网站资源、信息来源于网络,完全免费共享,仅供学习和研究使用,版权和著作权归原作者所有,如有不愿意被转载的情况,请通知我们删除已转载的信息。
xzbu发布此信息目的在于传播更多信息,与本网站立场无关。xzbu不保证该信息(包括但不限于文字、数据及图表)准确性、真实性、完整性等。3dsmax 如何导入修改器动画到unity3d中_百度知道
3dsmax 如何导入修改器动画到unity3d中
用ffd修改器调了一个动画,但是倒不出来。之前用躁波做的一个动画也倒不出来。网上都查不到,有说什么要弄成顶点动画的,要用到点缓存文件,会很耗内存。难道unit缉梗光妓叱幻癸潍含璃y3d只能用骨骼动画吗?但是有些动画骨骼做不到呀?跪求大神指教,急!
您的回答被采纳后将获得:
系统奖励20(财富值+经验值)+难题奖励10(财富值+经验值)+提问者悬赏50(财富值+经验值)
我有更好的答案
针对这个问题,unity开发商提供了一个插件,叫M缉梗光妓叱幻癸潍含璃ega Fiers。专门的物体变形插件。你可以看看。
其他类似问题
为您推荐:
您可能关注的推广
3dsmax的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁【Unity】3.2 利用预设(Prefab)制作可复用的组件
分类:Unity、C#、VS2015 创建日期: 一、简介 预制体(Prefab,也叫预设)是“存储在工程视图(Project View)中”的一种特殊的资源,是一种可重复使用的游戏对象(GameObject)的容器。 如果在Project中有多个预制体(Prefab),为了容易查找,可将这些预制体全部保存到Project视图中Assets文件夹的Prefabs子文件夹下。 Prefabs子文件夹下的的所有预制体都可以放入到多个场景中,而且即使在同一个场景中仍然可以多次使用。 向场景中添加一个预制体就是创建该预制体的一个实例。另外,由于场景(Scene)中所有预制体的实例都会自动链接到Project中的原始预制体(Prefab),因此这些实例本质上就是原始预制体的克隆。或者说,不论场景中有多少个预制体实例,只要仅仅对Project中某个Prefab作出任何更改,你就会看到这些更改马上就能应用于场景中该Prefab的所有实例。 1、在工程视图(Project)中创建预制体(Prefab) 要在Project中创建一个预制体(Prefab),只需将你在场景(Scene)中创建的一个游戏对象 (GameObject)拖放到工程视图(Project View)中的某个Prefab中。 如果层级视图(Hierarchy)中的游戏对象(GameObject)的名称变成蓝色,表示Hierarchy中的该对象是一个已经制作好的预制体的实例。此时,你可以根据需要,决定是保留层级视图 (Hierarchy)中的这个实例还是删除这个实例,不论你是否保留,都不会影响Project中制作好的原始预制体。 2、在层次视图(Hierarchy)中创建预制体的实例 要在“当前场景中”创建一个“预制体的实例”,直接从工程视图(Project View)中将某个预制体拖放到场景(Scene)或层级视图(Hierarchy)中。 Hierarchy视图中的“蓝色”字体表示该对象是某个预制体的实例。 一旦你创建了预制体的实例,该实例就会自动链接到Project中的源预制体,并在层级视图(Hierarchy)中以“蓝色”文字显示。
在这个截图中,有3个游戏对象是蓝色,表示这都是预制体的实例。 3、在检视器(Inspector)中操作预制体 (1)粗体的含义 有时候你可能希望仅更改单个预制体实例的属性,同时还能保持与源预制体的链接完整,此时可看到该实例对应的变量名称变成了粗体,表示这个变量已被重写。注意,所有重写的属性都不会受到源预制体更改的影响。 (2)Select 如果你选择了某个预制体实例,并希望将所做的更改影响到所有实例,此时可直接在检视器(Inspector)中单击【Select】按钮来选择更改的原始预制体。 (3)Apply 如果希望用重写的值更新源预制体及其所有实例,可单击检视器(Inspector)中的【Apply】 按钮。注意,这种“应用”不会对“根位置”和“旋转”起作用,因为这会影响实例的绝对位置并导致所有实例放在同一个位置。但是,Apply会对根的任何子元素或祖先元素的位置和旋转起作用,因为它们是相对于根的变换来计算的。 (4)Revert 如果想放弃对特定实例的所有重写,可单击【(Revert)】按钮。 4、导入预制体 将网格资源放入Assets文件夹下时,Unity会自动导入文件,并生成一些类似于网格之外的看起来像预制体的东西。但是,这实际上不是预制体(Prefab),它只是资源文件本身使用的东西。 注意,资源(asset)图标与预设 (Prefab) 图标略有不同。 资源是作为一个游戏对象(GameObject)存在于场景中的实例,它链接到源资源而不是链接到预制体(Prefab)。你可以向该游戏对象(GameObject) 正常添加、删除组件,。但是你无法对资源本身作任何更改,因为这样会向资源文件本身添加数据!如果你希望创建一些可重复使用的东西,那你就应当把它制作成一个预制体。 选择一个资源实例时,检视器 (Inspector) 中的【Apply】按钮将被替换成【Edit】按钮。单击此按钮将为资源启动编辑应用程序(如 Maya 或 Max)。 二、Prefabs基本用法示例 经过上面的介绍,你应当已经从基本层面上了解了Prefabs的概念:Prefabs本质上是GameObjects(预定义的游戏对象)和Components(组件)组成的集合体,是可在游戏中重复使用的容器对象。 使用Prefabs可以方便地在运行时实例化复杂的GameObjects(游戏对象)。 1、创建游戏对象的方式 在Unity中,有两种创建对象(Game Object)的方式: (1)方式1:全部用C#代码实现。这种方式使用C#代码从头开始创建并初始化游戏对象(GameObjects)。 (2)方式2:利用Prefabs实现。即:先制作预制体,运行时再通过代码实例化预制体。 与方式1相比,方式2(用Prefabs实现)有多个优势: l 可以使用一行代码实例化Prefab,并具有完整功能。而使用代码创建等效游戏对象 (GameObjects),平均需要五行代码,还有可能需要更多。 l 可在场景 (Scene) 和检视器 (Inspector) 中快速设置、测试和修改预制体。 l 可以更改已实例化的预制体,而无需更改实例化预制体的代码。例如,可将一个简单的火箭更改成超级火箭,但无需更改代码。 2、示例—创建一堵墙 为了说明Prefabs的强大,让我们来看看可用得上Prefabs的一些基本情况: (1)在不同位置,多次使用单块“砖”预制体来创建一堵墙。 (2)发射时,火箭发射器实例化一个飞行的火箭预制体。该预制体是一个包含一个网格(Mesh)、刚体 (Rigidbody)、碰撞器 (Collider) 和带有自己的拖尾粒子系统 (Particle System) 的子游戏对象 (GameObject)。 (3)机器人爆炸成许多碎片。此时完整的操作机器人已毁坏,替换成一个残破的机器人预制体。该预制体包含分成多个部分的机器人,所有部分均设有自己的刚体 (Rigidbodies) 和粒子系统 (Particle Systems)。有了预制体,你仅用一行代码就可以将一个对象替换成指定的预制体,从而让机器人炸成许多碎片。 该示例仅仅是为了说明“使用Prefab创建对象”与“使用代码创建对象”相比,前者(使用Prefab创建对象)的优势。 (1)实现方式1 首先演示“使用代码创建对象”的实现方式,因为只有比较,你才能理解这种方式有什么缺点。 先在ch03Demos工程的Project视图的Assets下创建一个名为Scripts的子文件夹,然后在该子文件夹添加一个名为Demo1的C#脚本:
双击Demo1脚本,Unity就会自动启动VS2015并自动在VS2015中打开Demo1.cs文件,而且解决方案资源管理器中Assets下的文件夹结构和Unity中的文件夹结构相同:
将Demo1.cs文件改为下面的内容: using UnityEusing System.Cpublic class Demo1 : MonoBehaviour{
void Start ()
for (int y = <span style="color: #; y & <span style="color: #; y++)
for (int x = <span style="color: #; x & <span style="color: #; x++)
GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.AddComponent&Rigidbody&();
cube.transform.position = new Vector3(x, y, <span style="color: #);
}}保存该文件。切换到Unity,选择主菜单的【GameObject】-&【Create Empty】创建一个空游戏对象,再将Scripts文件夹下的Demo1脚本拖放到刚添加的空游戏对象中。切换到Game视图,单击【播放】按钮观察执行效果。此时将看到完全用代码创建的立方体墙(由于默认使用了重力,墙会自动倒塌): 当然,由于没有添加纹理,所以此时看到的仅仅是一堵白色的墙(倒塌后还是一个一个的立方体)。若想执行附加操作,例如更改砖块纹理、摩擦力或刚体的质量,还需要再添加其他的代码,可见用这种方式实现起来有多么麻烦。删除层次视图中刚创建的空游戏对象。(2)实现方式2第2种中实现方式是先创建一个“墙”预制体,然后再用“创建预制体实例”的办法来创建多堵墙。步骤如下:选择主菜单的【GameObject】-&【3D Object】-&【Cube】创建一个立方体: 此时,刚创建的Cube在层次视图中处于选中状态。将Texture文件夹下的brick_D拖放到层次视图中的这个立方体上。在Project视图的Assets文件夹下,添加一个Prefabs子文件夹: 鼠标右击Prefabs子文件夹,选择【Create】-&【Prefab】: 将新添加的Prefab的名称更改为“Brick”。将在层级视图中创建的立方体拖放到Project视图中刚创建的“Brick”上。 这样就创建好了一个名为“Brick”的预制体(或预设)。创建预设 (Prefab) 后,在层次视图中添加的立方体(Cube)已经用不到了,可以从层级视图 (Hierarchy) 选中它,然后按Delete键删除。重新添加一个空游戏对象 (GameObject)。在VS2015解决方案资源管理器项目中的Scripts子文件夹下,添加一个文件名为Demo2.cs的C#脚本(Demo2.cs),然后将其改为下面的内容:using UnityEusing System.Cpublic class Demo2 : MonoBehaviour{
public Transform B
void Start ()
for (int y = <span style="color: #; y & <span style="color: #; y++)
for (int x = <span style="color: #; x & <span style="color: #; x++)
Instantiate(Brick, new Vector3(x, y, <span style="color: #), Quaternion.identity);
}}按&F5&键将其附加到Unity,然后按&Shift&+&F5&键结束。切换到Unity,将工程视图下的该脚本拖放到刚才添加的Cube上,这就为该对象添加了一个Demo2组件: 另外,此时检视器 (Inspector) 中将出现一个名为“Brick”的新变量,这个Transform类型的变量可以接受任何游戏对象 (GameObject) 或预制体。从工程视图 (Project View) 中,将预制体“Brick”拖放到检视器 (Inspector)视图中的Brick变量的值上(作用是:创建预制体的实例作为Brick变量的值): 按下“播放 (Play)”,就会看到同时使用预制体和C#脚本创建的墙: 可见,这种方式实现的脚本代码不仅非常干净,而且可重复使用这个Brick预制体。刚开始学习时,你可能想知道为什么要这样做,用第1种方式创建立方体不是更灵活和方便吗?为什么还要再搞一个Prefab呢?这是因为使用Prefab,您可以在数秒之内就能完成对它的调整:想要添加或更改所有实例的质量?只需在预制体中添加一个刚体,并一次性调整刚体 (Rigidbody)的重力即可。想为所有实例使用不同的材质 (Material)?只需将材质 (Material) 拖放到预制体上一次。想要更改摩擦力?在预制体碰撞器中使用不同的物理材质 (Physic Material)就行了。想为所有立方体添加一个粒子系统 (Particle System)?向预制体中添加一次子对象即可。当然,如果仅仅是为了学习操作步骤,找不到brick_D.jpg文件时,随便找一副其他的.jpg图片代替也行,反正目标就是给这堵用立方体构造的墙贴满图,理解其含义就行了。
最新教程周点击榜
微信扫一扫}

我要回帖

更多关于 unity 物体碰撞 的文章

更多推荐

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

点击添加站长微信