unity3d游戏制作教程,开发制作游戏的相关步骤_游戏制作的基本步骤
unity3d游戏制作教程,开发制作游戏的相关步骤_游戏制作的基本步骤详细介绍
本文目录一览: unity3D基础入门教程?
unity3D基础入门教程
1.本部分是你开始Unity的关键。这里将解释Unity的界面,菜单项,使用资源,创建场景,和发布。当你完全阅读了该部分后,你将能够理解Unity是如何工作的,以及如何使其更加有效的工作,和如何将简单的游戏放置在一起
2.现在我们开始学习Unity,如果你还没有打开Unity,你可以通过双击位于Application->Unity文件夹中的Unity图标来运行它,当它第一次运行时你将看到如下的场景:Unity运行时的缺省场景,如果你打开过任何实例,你的屏幕会与上图不同有很多需要学习的东西,让我们花费点时间来观察理解上述界面。
我们将介绍每一个接口元素。概要主窗口的每一个部分都被称为视图(View)。在Unity中有多种类型的视图,但是,你不需要同时看见所有的视图。不同的布局模式(Layoutmodes)包含的视图是不同的。
通过单击布局下拉控件来选择不同的布局,该控件位于窗口的右上角。布局模式选择下拉列表现在,单击布局选择,并单击Animation,切换到动画布局(Animationlayout)。还可以从菜单中选择Window->Layouts->Animation来切换。动画布局包含所有的视图,这是昀好的用来介绍它们的方法
3.通过视图左上角的名称你可以迅速的分辨这些视图。这些视图是:场景视图(SceneView)-用于放置物体游戏视图(GameView)-表示游戏在运行时的外观层次视图(Hierarchy)-当前场景中的游戏物体的列表工程视图(Project)-显示当前打开工程中所有可用的物体和资源检视视图(Instpector)-显示当前选中物体的细节和属性时间线(Timeline)-用于为当前选中物体创建基本的时间线动画场景视图(SceneView)
4.场景视图(SceneView)是一个可交互的沙盘。你将使用它来选择并在场景中定位所有的游戏物体(GameObjects),包括玩家,摄像机,敌人等。在场景视图中操纵并修改物体是Unity非常重要的功能。这是昀好的通过设计者而不是玩家的角度来查看场景的方法。在场景视图中你可以随意移动并操纵物体,但是你应该知道一些基本的命令以便有效的使用场景视图。
第一个你应该知道命令是FrameSelected命令。这个命令将居中显示你当前选中的物体。你可以在层次视图(Hierarchy)单击任何物体,然后移动你的鼠标到场景视图上并按F键。场景视图将移动以居中显示当前选择的物体。这个命令是非常有用的,你将在场景编辑的时候经常使用它。在场景视图中操作在场景视图的上方有一个包含布局模式选择的工具栏
5.尽管现在的工具栏没有附着在场景视图窗口上,但是位于左侧的四个按钮可用来在场景视图中导航并操纵物体,中间的两个用来控制选中的物体轴心如何显示。左边的第一个ViewTool将在以后说明。后面的工具为操纵工具(ManipulationTools),中间的两个为手柄位置工具(HandlePositionTool)选中任何操纵工具可允许你交互时的移动,旋转或缩放物体。当你已经选择了一个工具时你可以在场景视图中单击任何一个物体选中它,现在按下F键使得该物体居中显示。
6.当选中一个物体时你将看到Gizmo坐标,每个工具有不同的Gizmo坐标形式,平移旋转缩放。
7.点击并拖动当前Gizmo坐标的任何一个坐标轴以便平移,旋转或缩放当前选中物体的变换(Transform)组件。你也可以通过单击并拖动Gizmo坐标的中心来在多个轴上操纵物体。如果你有一个三键的鼠标,你可以通过单击中键来调整昀后调整的轴而不用直接点击它。
8.参考变换组件(TransformComponent)部分获取更多内容。手柄位置工具(HandlePositionTool)用来控制物体或一组选中的物体的轴心如何和在哪里显示。选择中心(Center)意味着使用当前所选所有物体的共同轴心,选择轴心(Pivot)意味着将使用各个物体的实际轴心手柄位置设置为中心,使用物体的共同轴心手柄位置设置为轴心,使用实际的物体轴心。
9.在场景视图中导航根据使用的鼠标的不同,有很多不同的方式可以在场景视图中导航。使用三键鼠标按住Option按钮并拖动鼠标左键可以使用旋转模式(Orbitmode)按住Option按钮并拖动鼠标中键可以使用拖动模式(Dragmode)按住Option按钮并拖动鼠标右键可以使用缩放模式(Zoommode)。也可以使用滚轮来缩放(略)视图工具模式视图工具的拖动模式快捷键Q。
10.在拖动模式(DragMode)下,在场景视图中单击并拖动鼠标来上下左右移动视图。旋转(Orbit)和缩放(ZoomModes)模式也是昀常用的视图工具。保持视图工具选中并按住Option键即可进入旋转模式。单击并拖动鼠标,可以看到视图是如何旋转的。同时注意视图工具按钮从手型变成了眼睛。
11.你可以通过按下Command按钮进入缩放模式。在这种模式下,单击并拖动鼠标将前后缩放你的视图。注意缩放模式的图标是一个放大镜。
unity3d 教程 Unity 3D创建项目教程
1、启动 Unity 3D 后,在弹出的 Project Wizard(项目向导)对话框中,单击 Create New Project(新建项目),创建一个新的工程,可以设置工程的目录,然后修改文件名称和文件路径。
2、新建项目:在 Project name 下(项目名称)中输入项目名称,然后在 Location(项目路径)下选择项目保存路径并且选择 2D 或者 3D 工程的默认配置,最后在 Add Assets Package 中选择需要加载的系统资源包。设置完成后,单击 Create project 按钮完成新建项目。Unity 3D 会自动创建一个空项目,其中会自带一个名为 Main Camera 的相机和一个 Directional Light 的直线光。
3、加载资源包:创建好新项目后,由于每个项目中可能会有多个不同的场景或关卡,所以开发人员往往要新建多个场景。新建场景的方法是:选择 Unity 3D 软件界面上的菜单 File(文件)→New Scene(新建场景)命令即可新建场景。
4、创建游戏物体:选择 GameObject(游戏对象)→3D Object(三维物体)→Plane(平面)命令创建一个平面用于放置物体。
5、创建平面:选择 GameObject(游戏对象)→3D Object(三维物体)→Cube(立方体)命令创建一个立方体。
6、创建立方体:最后使用场景控件调整物体位置,从而完成游戏物体的基本创建。
7、添加游戏物体组件:游戏物体组件可以通过 Inspector(属性编辑器)显示,这些组件还可以附加很多组件。例如要为 Cube(立方体)组件添加 Rigidbody(刚体)组件,选中 Cube,执行 Component(组件)→Physics(物理)→Rigidbody(刚体)菜单命令,为游戏物体 Cube 添加 Rigidbody 组件。
8、rigidbody组件:Rigidbody 添加完成后,在 Scene(场景)视图中单击 Cube 并将其拖曳到平面上方,然后单击 Play 按钮进行测试,可以发现 Cube 会做自由落体运动,与地面发生相撞,最后停在地面。
9、项目保存:执行 File(文件)→Save Scene(保存场景)菜单命令或按快捷键 Ctrl+S。
10、保存场景命令:在弹出的保存场景对话框中输入要保存的文件名。此时在 Project(项目)面板中能够找到刚刚保存的场景。
如何使用unity3D制作游戏
1、图形引擎:使用的是Direct3D、OpenGL和自有的APIs。资源导入:项目资源会被自动导入,并根据资源的改动而更新。Unity支持的主流三维建模有3dsmax、Maya、Blender等。着色器(shaders):编写使用ShaderLab。
2、使用本身UGUI,UGUI是Unity官方推出的最新UI系统,UI就是UserInterface。把摄像机的投影改为正交投影,不考虑Z轴.使用Untiy自身的2D模式,在2d模式中,层级视图中只有一个正交摄像机,场景视图选择的是2D模式。
3、到最后到学习Unity3d的地形编辑、摄像机控制、Unity3d物理控制、使用C#编程语言对Unity3d编程、Unity3d粒子开发系统、Unity3d寻路系统、使用NGUI制作界面、跨平台发布作品。
如何在unity3d
unity3d如何导入资源文件如果你以原始格式(例如.max、.blend、.mb、.ma)从大部分3D软件包保存3D文件到你的项目Assets文件夹中,它们将被导入到打开的3D包FBX导出插件中。或者你以FBX格式从你的3D应用程序导出3D文件到unity项目中。
首先,我们需要在3dmax里设置单位。然后将显示单位和系统单位比例都设置成厘米,然后确定。
首先打开unity界面,在Asset目录下创建文件夹FBX,将需要导入的fbx预制体或整个文件夹拖入创建的FBX文件夹下,然后选中需要的fbx预制体并拖至场景中,双击定位到当前物体。
在unity3d中如何制作鼠标点击按钮,传送人物到目的地。菜鸟需要代码,急...functionOnGUI(){if(GUI.Button(Rect(Screen.width/2,Screen.height-30,50,30),aTexture)){Application.LoadLevel(0);}}在这个脚本赋予前一个scene的camera,Application.LoadLevel(0);输入下一个scene的level就可以了。
让别人给你写代码自己没进步的。我思路告诉你:按钮的点击有一个unity里面已经有的方法:OnClick()事件。你也可以自己写方法。
voidOnMouseDown(){Destroy(obj.gameObject);}可以尝试看看这个鼠标点击事件,放在脚本与update同级就可以了。新手,如果见解不当,请指正,多谢了。
如何使用unity3D制作游戏1、图形引擎:使用的是Direct3D、OpenGL和自有的APIs。资源导入:项目资源会被自动导入,并根据资源的改动而更新。Unity支持的主流三维建模有3dsmax、Maya、Blender等。着色器(shaders):编写使用ShaderLab。
2、使用本身UGUI,UGUI是Unity官方推出的最新UI系统,UI就是UserInterface。把摄像机的投影改为正交投影,不考虑Z轴.使用Untiy自身的2D模式,在2d模式中,层级视图中只有一个正交摄像机,场景视图选择的是2D模式。
3、到最后到学习Unity3d的地形编辑、摄像机控制、Unity3d物理控制、使用C#编程语言对Unity3d编程、Unity3d粒子开发系统、Unity3d寻路系统、使用NGUI制作界面、跨平台发布作品。
Unity3D中如何用代码实现物体的左右循环移动?1、主要讲述使用javascript脚本使游戏组件实行按WSAD键移动,学习完此脚本后可以将脚本附加在物体上,使物体能实现移动。
2、定义需要移动的物体列表。可以使用数组或列表来存储需要移动的物体。编写移动代码。可以使用for循环遍历需要移动的物体,对每个物体进行移动操作。将代码添加到适当的位置。
3、碰撞发生后使用Random.Range(0,1)生产随机数0或者1,然后0左转、1右转即可。说白了就是用随机数么。
4、摄像机也是一个gameObject对于移动摄像机的方法其实与移动gameObject的方法是一样的。这是我的一个方法,放到Update方法里面即可。写得可能不太好,请见谅。功能是鼠标移动到屏幕边框移动摄像机。
unity3d中如何用脚本控制自动显示百分数在uislider里面挂个共有变量publicUILablelabel在值改变的函数里面。label.text=val。
新建工程,创建C#脚本,名称自拟。双击脚本打开MonoDeveloper,写下如图所示代码:切换回场景,将脚本绑定到模型上。点击运行按钮调试,默认物体隐藏。点击按钮,物体显示,但不影响按钮的隐藏和显示。
Unity3D目前支持三种语言的脚本程序,包括C#、JavaScript、Boo,在一个游戏中开发者可以使用一种或者同时使用多种语言来实现脚本的控制。
Game窗口右上方的Status,里面有一个Tris,可以查看整个场景的面数。
unity3D基础入门教程?1、第三步,学习创建基本场景的一些基本概念:游戏对象、组件、脚本。在界面上分别体现在层次视图,项目视图及属性视图,要理清彼此之间的关系,可以到网上看一些Unity3D教程。
2、第一阶段应该先去学习一些基础c#语言,之后跟着视频去做几个简单的案例,熟悉一下引擎的基本操作英语好的可以去看官方的案例,英语一般的同学这里推荐去看siki老师的教程。
3、用unity3D自带的角色,在project工作区内的右边中单击右键。在弹出的选项框中找到ImportPackage——Characters,即导入人物角色包。点击Import开始导入。将人物放置合适的位置,接下来要做的是为人物添加动画。
4、需要一定的英语基础和c#基础,最好还会一些fw,maya的技术。
5、而他们的操作都是封装好的可视化的,直观。通过这些3d建模软件能很快去理解这些要点的意思。
开发制作游戏的相关步骤_游戏制作的基本步骤
制作一款游戏包括游戏策划、游戏美术、游戏程序三部分。手机软件目前无法做到设计一款游戏。但是pc端的软件有包括制作一款游戏的主要软件。
1、游戏策划制作常用的软件是:office系列软件、mindmanger、Unity3D。游戏策划也就是游戏的内容,好的游戏内容才会吸引到用户下载。
2、游戏美术制作常用的软件是:PS、AI、DW、FL、axureRP、HTML、CSS、Maya、3dsMax、Bodypaint、illusion、ZB。
游戏美术制作相当于游戏的外貌,这款游戏是否够夺人眼球,就要看游戏美术制作人员。
3、游戏程序制作常用的软件是:C、WIN32、DirectX、Box2D、Unity3d、cocos2d-x。游戏程序就是讲游戏内容转化为数据,一款游戏能否良好运营,游戏程序制作承担了很大的作用。
制作一款游戏的团队配置:
一、前期策划:包括主策、数值、功能、文案、执行等等,就是编辑剧本、写述职报告、计算数值、设计场景角色。
二、美工:美工一般分为场景、角色、后期。
三、程序:所要做的是游戏场景与角色的碰撞块、角色的属性与怪物的属性。根据策划师给出的数值,编写代码,把属性现实化也就是让玩家看的见。
如何使用unity3D制作游戏
方法/步骤
打开unity3D游戏引擎,会弹出开始的窗口,选择新建项目。以下用U3D简称unity3D游戏引擎。
设置游戏的类型,U3D虽然叫做3D游戏引擎,但也可以制作出精美的2D,2.5D的手游,网游,单机游戏,Flash游戏等等。
我们选择3D类型,游戏名称尽量不要出现汉字。点击创建。
这样我们就进入了U3D的开发界面,界面设计还是很人性化的。这里的所有窗口都可以随意拖动,但是屏幕太小有时可能会影响游戏设计,游戏视图可以放到第二屏幕,这就是为什么游戏制作都要好几块屏幕的原因。
我们现在创建一个游戏对象——一个方块。在 Hierarchy下方点击Create,有2D和3D的游戏对象,我们选择3D下的cube,创建方块,这时场景中会出现一个方块,可以点击cube,修改属性和大小位置。
导入游戏素材,一般都是unitypackage后缀的文件,Maya制作的fbx文件也可以导入,导入方法直接将文件拖动到下方的文件夹区域,注意不要出现中文路径,否者会出错,这是因为U3D对中文不支持,很容易出现不可知错误。
图片也可直接拖入,记得键文件夹分类。文件夹在下方右键ASSETS,create选择folder。
地形制作是游戏中最重要的元素之一,一个精美的地图场景会给游戏带来亮点。
点击hierarchy下方的create创建 Terrain,右方有各种制作地形的工具。
U3D新版本没有自带素材包,需要到U3D的商店下载或者上网自己找。
最后注意scene的右边有Game的选项卡,切换后这里看到的才是游戏最终呈现的,如果没有任何东西就要调节主摄像机,选中摄像机,点击GameObject中的Align with view 对准当前场景视图。上方的播放暂停键是运行游戏和暂停的。虽然没有任何脚本,但你可以给任意物体Add Component添加rigid body属性,运行,物体会掉落下去,这就是物理引擎帮我们自动完成的。
如何正确的使用UNITY3D制作FPS游戏
第一部分:简介
这个教程中,我们详细了解下如何制作一个简单的第一人称射击游戏(FPS)。其中将介绍一些基本的3D游戏编程的概念和一些关于怎样如游戏程序员般思考的技巧。
前提
这个教程假定你已经熟悉软件Unity基本操作,掌握了基本的脚本概念。
创建新工程
下载FPS_Tutorial.zip压缩文件,解压,在Unity中打开工程文件。
从Unity安装目录导入Standard Assets资源包。
导入工程后,你会在Unity工程面板中的“Standard Assets”文件夹下看见这些资源内容。当我们导入新资源时,最好安装按照资源功能对其分组,例如:火箭、爆炸、音频等。
设置游戏环境
导入资源后,你会注意到在工程面板中有许多文件夹。
工程面板中,从文件夹“Object/mainLevelMesh”中选择“mainLevelMesh”。
在参数面板,FBXImporter选项中,你会发现“Generate Colliders”选项,勾选此选项。如果不做这一步,游戏中玩家会穿越地面直接掉下深渊(实际是开启“碰撞”,产生交互)
把“mainLevelMesh”拖放到场景中。
场景中不需要添加灯光,这关全部场景已经全部应用了灯光贴图。整个场景对所有灯光进行了灯光贴图渲染,使用了“预烘焙阴影”。灯光贴图对显示效果有很大帮助,特别是复杂灯光环境。
下面可以在场景中添加一个角色了。
添加主要角色
下面在场景中增加一个可以操控的角色物体。Unity针对第一人称射击游戏预置了许多内置的控制器,在工程面板Standard Assets->;Prefabs下。
添加第一人称控制器,点击工程面板Standard Assets旁边的小三角,弹出资源列表。找到Prefabs文件夹,点击小三角形,弹出资源列表。把“First person controller”拖到场景里。
这时场景中会出现一个代表玩家的圆柱体,三个大箭头代表物体在3D空间中的位置(如果没有看见箭头,选择物体,按“W”键),白色面代表物体当前视角。现在FPS控制器处于默认视角位置,通过移动它可以改变游戏视野。把角色移动到游戏环境关卡地面上面的位置。
Main Camera现在已经没有用处了,可以删掉了。
点击“Play”键,现在应该可以通过使用鼠标和键盘在本关卡地形中四处移动了(光标或者“W,A,S,D”)
现在我们创建了一个非常简单的FSP,下面我们给角色添加武器。
增加武器
下面我们将给游戏角色一个类似榴弹的物体,可以在游戏中发射。要实现这个功能,需要创建一些脚本语言来在Unity中告知这个武器如何动作。
那么我们具体要实现什么呢?我们要使游戏角色能在摄像机的任意位置开火。但是,我们还是首先来思考一下游戏角色和武器。游戏角色游戏中是第一人称的视角,所以摄像机的位置与眼睛平行。如果玩家使用武器射击,武器应该是在角色的手部位置开火而不是眼睛的位置。这样我们就要增加一个“game object”(游戏物体)来代表榴弹发射器,同时把它放置在游戏角色手持武器时武器所处的位置。这样就保证了开火的位置没有问题。
创建武器发射器
首先,创建一个“game object”代表榴弹发射器。游戏物体是3D世界中的任一物体(角色、关卡、声音),零件就是游戏物体的属性。因此我们还需要对游戏物体添加零件:
从主菜单栏选择GameObject>Great Empty,并在层级面板中(Hierarchy)命名为“Launcher”。注意,空物体在场景中是看不见的,只是用它来作放置飞弹发射器。
现在在场景中把视野推近到FPS控制器,便于我们放置武器发射器。
层级面板中选择FPS控制器,确保鼠标处于场景视图中,按“F”键。使窗口以当前选择的物体为中心。
层级面板中选择发射器,主菜单栏选择Game Object>Move to view。注意发射器如何移动到FPS控制器附近的。然后使用手柄,把发射器移动到大概角色手部的位置。
注意:可以通过设置这个物体的位置来设定游戏角色是左撇子还是右撇子,不需要写代码。
使Unity窗口模式是“2by3”模式(window>Layouts>2by3),点击播放键(play)。确保层级面板中点选了发射器,四处移动角色,同时观察场景窗口。你将发现发射器并没有随着角色一起运动(现在再次点击播放键停止运行游戏)
下面来解决这个问题,层级面板中,把发射器拖放到FPS控制器下面的主摄像机上。弹出的对话框点击“是”。再次运行游戏,观察场景窗口,发射器已经和角色运动一致了。这样我们就把发射器与摄像机关联起来了。
创建飞弹
下面我们来创建在玩家点击开火键时能够发射出来的飞弹。
我们先用一个简单物体-球体-代替飞弹。Unity主菜单栏点击Assets>Creat>;Prefab创建一个预制(Prefab)物体,命名为“Missile”
创建一个球体(GameObject>Create Object>Sphere)
层级面板中,拖放球体到飞弹预制物体上(Missile),这时预制物体图标会变化。你可以从层级面板中删除球体。
技巧:游戏运行中产生的任何游戏物体都应该是预制物体(Prefab)。
编写飞弹发射器脚本
FPS控制器是一个包含了几个游戏物体和部件的预制物体。FPS控制器本身是一个只能沿Y轴旋转的圆柱体,因此,如果我们直接把发射器脚本赋予FPS控制器的话,是实现不了上下开火的。所以我们把脚本赋予控制器中的能够四周转动的主摄像机。
下面我们来编写第一个描述发射器行为的JavaScript代码。
点击Assets>Greate>JavaScript,创建一个空的JavaScript文档。一个名为“NewBehaviourScript”资源将会出现在工程面板中,把它更名为“MissileLauncher”
技巧:通过Unity>;Preferences点击External Script Editor,可以自定义外部脚本编辑器。
工程面板中创建一个“WeaponScripts”文件夹,放置我们所有的武器脚本。把MissileLauncher脚本和飞弹预制物体(Missile Prefab)拖到这个文件中。
我们来看看飞弹发射器的完整JavaScript脚本。
进一步思考一下,我们到底想实现什么效果?我们要检测玩家是否按了开火键,然后产生一枚飞弹,然后把它沿着玩家朝向的方向按照一定的速度发射出去。我们仔细的解剖一下脚本:
var projectile: Rigibody;
var speed=20;
function Update( )
{
这是脚本的开头部分,定义了一些属性,开启了“Update”的功能
if(Input.GetButtonDown(“Fire1”))
首先我们要检测玩家是否按了开火键,“开火1”映射的是鼠标左键和当前配置的键盘上的按键(可以通过主菜单栏的Editor>;Project Settings>Input设定)
{
var instantiatedProjectile: Rigidbody=Instantiate(
projectile, transform.position,transform.rotation);
我们用变量来定义产生的物体。变量的类型是Rigibody(刚体),因为飞弹是具有物理属性的。
Unity中产生新物体使用的函数是Instantiate,它有三个参数,分别是:产生的物体、产生物体的3D空间位置、物体的旋转。它还有另一个语法结构,参照API手册,这里我们只使用这种结构。
第一个参数,projectile,代表我们想创建的物体。那么到底发射什么物体?具体产生的物体是可以手动设定的。实现方法:把Projectile定义为函数的外部变量,这样就可以在参数面板中显示出来。发射的物体也可以通过代码来创建,但如果你想使一个变量可调的话,还是用上面的方法。
第二个参数,transform.position,使产生的物体与发射器的空间位置一致。为什么就是发射器呢?因为如果要使飞弹产生的位置没有问题,脚本就要关联给发射器。(transform读取的transform数据就是被赋予脚本的游戏物体transform数据)
第三个参数transform.rotation,与第二个类似,只是它的值与发射器的旋转值是一样的。
代码的下一部分使飞弹产生运动。为了实现运动,我们要赋予飞弹一个速度,但是在哪个方向上(X,Y,Z)产生速度呢?在场景中,点击FPS控制器,出现运动箭头(如果没有出现,按“W”键),其中一个箭头是红色、一个是绿色、一个是蓝色。红色代表X轴,绿色代表Y轴,蓝色代表Z轴。因为蓝色指向的方向,与玩家面朝的方向一致,所以我们要在Z轴上给飞弹一个速度。
(Velocity)速度是instantiatedProjectile的一个属性。我们怎么知道的呢?因为instantiatedProjectile是刚体的一种,如果我们看看API手册,我们就会知道速度是刚体的属性中的一种。同时也看看刚体的其它属性。要设置速度,我们就必须在各个轴向上设定数值。但还有个小问题。3D空间中的物体一般使用两种坐标模型:本地坐标系和世界坐标系。在本地坐标系中,物体的轴向只与物体本身有关。在世界坐标系中,轴向是绝对的,例如:向上,对所有物体来讲向上的方向都是一样的。
Rigidbody.Vellocity刚体物体速度必须使用世界坐标系。因此,定义速度时,需要把本地坐标系中的Z轴(朝前的方向)向转换成世界坐标系中的相应方向。可以用函数transform.TransformDirection,它有三个向量作为自变量。变量speed也应该定义成外部变量,便于后面在编辑器中直接调节数值。
最后,我们要关闭飞弹与游戏角色之间的碰撞。如果不这样做的话,飞弹产生的时候就可能与角色发生碰撞。可以在API手册IgnoreCollision下查询详细信息。
MissileLauncher.js全部完整代码如下:
把脚本MissileLauncher赋予FPS控制器中的发射器。在层级面板中点击发射器,检查一下参数面板下面是否显示了MissileLauncher script。
先前创建的飞弹的预制物体还没有与脚本中的变量projectile创建关联,我们需要在编辑器中创建一下。变量projectile只能与刚体关联,因此,首先我们要赋予飞弹一个Rigidbody。
工程面板中点击飞弹,然后从主菜单栏选择Components>;Physics>Rigidbody。这样将会给我们想开火发射的飞弹一个刚体属性。我们必须确保想在游戏中发射的物体类型与脚本中外部变量要求的物体类型是同一类型的物体。
创建飞弹与脚本中变量projectile的链接。首先在层级面板中点击发射器,然后把飞弹的预制物体从工程面板中拖拽放置在发射器参数面板中MissileLauncher script部分上。
运行游戏的话,你会发现点击开火键可以发出一个受重力影响的小球了。
飞弹爆炸
下面,当飞弹与其他物体发生碰撞时,增加一个爆炸效果。要实现这个效果,我们要编写一段新脚本赋予飞弹。
创建一个新脚本,命名为Projectile。拖放到工程面板的WeaponScripts文件夹下。
那么我们想要脚本Projectile实现什么样的效果呢?我们要检测飞弹是否发生碰撞,然后在碰撞点产生一个爆炸效果。代码如下:
函数OnCollisionEnter内的程序代码的作用是计算被赋予脚本的物体是否与其他物体发生碰撞。
在函数OnCollisionEnter中我们主要是要实现在3D空间中飞弹发生碰撞的点产生一个新爆炸。那么在何处了碰撞的呢?函数OnCollisionEnter就有个记录这个信息的功能。碰撞发生的点的信息储存在变量ContactPoint中。
这里我们使用函数Instantiate来创建一个爆炸。我们已经知道函数instatiate有三个参数:(1)产生的物体(2)物体的3D空间位置
(3)物体的旋转。
第一个参数,后面我们将会赋给一个带粒子系统的游戏物体。同时我们还想通过编辑器来实现这个功能,所以我们把变量设置为外部变量。
第二个参数,爆炸产生的点的位置,就是碰撞发生的位置。
第三个参数,爆炸旋转的设置,需要解释一下。我们需要爆炸体的Y轴方向与飞弹和其他物体发生碰撞的那个表面的法线方向一致。这就是说如果是墙面那么爆炸就面向外,如果是地板就朝上。那么实际上我们就是要使爆炸体在本地坐标系的Y轴与飞弹与之碰撞的物体的表面法线方向(世界坐标系)一致。
最后,我们要让飞弹碰撞后就从游戏中消失,通过函数Destroy()实现,它的参数是gameObject(gameObject代表被赋予这个脚本的物体)。
Projectile.js全部代码如下:
把脚本赋予飞弹预制物体(Missile prefab)。
下面我们要创建飞弹发生碰撞时所产生爆炸的爆炸效果物体。
首先,创建一个新的预制物体(命名为Explosion)用来存放爆炸效果资源。
标准资源包中(standard asset)有个不错的爆炸预制物体,粒子系统和灯光都设置好了。把这个爆炸预制物体(在Standard Assets/Particles/explosion中)拖放到层级面板。
调节这个爆炸效果的各个参数直到你觉得满意,然后把它从层级面板中拖放到工程面板中的爆炸预制物体(Explosion Prefab)中。
现在把爆炸配置给飞弹:
点选飞弹预制物体(Missile Prefab),在参数面板Explosion变量栏,拖放工程面板中的爆炸到上面。
定义爆炸的行为
下面我们要再创建一个脚本来定义爆炸自身的特性。
创建一个新的脚本-Explosion,放在Weapons文件夹中,双击脚本进行编辑。
脚本中另一个常用函数称为Start()。当它配置给的物体是在游戏中产生的时候,函数Start()中的代码只被执行一次。我们要实现的效果就是在一定时间后,在游戏中删除爆炸。我们通过函数Destroy()的第二个参数实现,它的作用是定义执行删除前的时间长度。
变量explosionTime设置成外部变量,方便调节。
新建脚本插入以上代码时,要删除函数Update()。
把脚本Explosion赋予给爆炸预制物体。
音效
目前的游戏世界太安静了,让我们给爆炸效果增加点音效。
首先,给爆炸预制(Prefab)添加一段音频。
给爆炸添加音效前,我们首先要添加一个音源部件(Audio Source),在主菜单点击Component—Audio—Audio Source。你会发现音源部件有一个Audio Clip的属性。
把“RocketLauncherImpact”音效添加给爆炸预制体的AudioClip外部变量。Unity支持多种音频格式。
运行游戏,发射飞弹的时候就有声音了!
添加图形界面
下面我们来添加GUI,有点像头部显示设备(HUD)。我们要做的GUI非常简单,就一个准星。
添加一个准星:
工程栏中创建一个GUI的文件夹。
创建一个新脚本,命名为“准星”(Crosshair),拖到GUI文件夹。
Crosshair中写入下面的脚本:
首先我们设定了两个变量。第一个变量是定义我们将要用可选的方式来选择图形纹理。第二个变量定义了一个方形区间,它是图形纹理在屏幕上的位置范围。
在start( ) 中函数用来设定图形纹理在屏幕上的位置。函数中,有四个参数,用来定义方形区域的大小和位置。第一个参数定义了方形区域的左边框,第二个是底边框,第三和第四个参数定义了宽和高。
OnGUI( )函数中,使用GUI类程序来让图形显示在屏幕上。DrawTexture( )函数的参数position和crosshairTexture将使准星显示在屏幕的中央位置。
保存脚本。
创建一个新的空物体,命名为“GUI”。
把脚本“Crosshair”赋予给GUI物体。
点选GUI物体,把在文件夹Texturelaim下的欲使用的图形拖放到参数面板变量Crosshair Texture中。
运行游戏,屏幕中就会有准星显示了。
物理特效:
现在,我们想要游戏中的物体效果越真实越好,这是通过添加物理特效实现的。在这一节中,我们将在环境中添加一些物体,他们能被飞弹击中后有相应的反应。首先有几个新概念要解释下。
校正(Update)
先前,我们在函数Update()中写入代码,这样可以在每一帧都执行其中的代码。其中有个例子是检测玩家点击开火键。帧速并不是一个固定值,它是根据场景复杂度等因素来定的。各帧之间的时间差会导致不稳定的物体反应。因此,如果想在场景中添加有物理反应的物体(刚体等),代码就应该写在函数FixedUpdate()中。Unity中deltaTime的值用来测定渲染两个连续帧的所用时间。
一般而言,函数Update与FixedUpdate之间的区别如下:
Update()-其中的代码通常用于角色行为、游戏逻辑等。这个函数中的deltaTime值并不是固定的。
FixedUpdate()-其中的代码通常用于刚体物体(物理属性的行为)。函数中deltaTime的值通常是固定的。
FixedUpdate函数被调用的频率是主菜单中Edit-Project Settings-Time的FixedTimestep属性确定的,当然也是可以更改的。第二个属性Time Scale是读取每秒的帧速和相应的倒数值。
技巧:定义FixedTimestep值时,要注意把握好一个平衡:值越小,物理效果越真实越好,但影响游戏运行速度。应该同时确保游戏运行速度和物理效果的真实性。
最后说一下yield,它相当于暂停当前正在执行的函数。
回到游戏,我们想实现的效果:
使玩家可以发射飞弹(已经实现了)。
如果飞弹与其它刚体物体发生碰撞,检测其范围类是否有其它被赋予刚体属性的物体。
对爆炸冲击力范围内的每个刚体物体,均给予一个upwards方向上的力,使它们对飞弹产生反应。
让我们看看修改后的爆炸脚本(Explosion Javascript)
首先检测下飞弹落点周围是否有带碰撞器的物体。函数Physics.OverlapSphere()有两个参数:3D位置和半径值,然后返回一组检测到的在半径内的碰撞器的数组。
一旦得到这些数组后,就会对每个对应碰撞器的刚体物体一个在特定方向上的力。
然后我们在飞弹的炸点处,向上的方向增加一个力(ExplosionPower)。但是,爆炸效果是随着距离而递减的,作用力大小不能在整个半径内都一样。圆周位置的刚体物体受到的作用力应该比炸点中心处小。函数把这种效果也考虑在内的。通过调节外部变量explosionPower和explosionRadius的值,可以较容易的得到想要的效果。
unity3d入门全套教程百度云盘共享
你可以先去【绘学霸】网站找“游戏特效/unity3D”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=306&zdhhr-11y04r-1380047259027 想要系统的学习可以考虑报一个网络直播课,推荐CGWANG的网络课。老师讲得细,上完还可以回看,还有同类型录播课可以免费学(赠送终身VIP)。自制能力相对较弱的话,建议还是去好点的培训机构,实力和规模在国内排名前几的大机构,推荐行业龙头:王氏教育。 王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】:www.cgwang.com/course/gecoursemobilecheck/?zdhhr-11y04r-1380047259027 在“游戏特效/unity3D”领域的培训机构里,【王氏教育】是国内的老大,且没有加盟分校,都是总部直营的连锁校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合基础差的学生。大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html
教程可以到一个网站里面找,初学者应先对c#有基本的了解,不要求深入,但起码应了解循环语句,类的封装继承,接口,委托等知识。
了解unity3d的使用 这方面可以看官方教程,
等基本知识差不多了之后,就可以慢慢跟着教程开始做游戏了,在做游戏的过程中不断学习新的知识丰富自己
上面提到的教程基本都是SiKi学院上面的(不是打广告啊,但不得不承认SiKi教程的质量算是比较高的)
如何开始学习用Unity3D制作2D游戏
你可以先去【绘学霸】网站找“游戏特效/unity3D”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web/AppWebClient/AllCourseAndResourcePage?type=1&tagid=306&zdhhr-11y04r-1380067995740 想要系统的学习可以考虑报一个网络直播课,推荐CGWANG的网络课。老师讲得细,上完还可以回看,还有同类型录播课可以免费学(赠送终身VIP)。自制能力相对较弱的话,建议还是去好点的培训机构,实力和规模在国内排名前几的大机构,推荐行业龙头:王氏教育。 王氏教育全国直营校区面授课程试听【复制后面链接在浏览器也可打开】:www.cgwang.com/course/gecoursemobilecheck/?zdhhr-11y04r-1380067995740 在“游戏特效/unity3D”领域的培训机构里,【王氏教育】是国内的老大,且没有加盟分校,都是总部直营的连锁校区。跟很多其它同类型大机构不一样的是:王氏教育每个校区都是实体面授,老师是手把手教,而且有专门的班主任从早盯到晚,爆肝式的学习模式,提升会很快,特别适合基础差的学生。大家可以先把【绘学霸】APP下载到自己手机,方便碎片时间学习——绘学霸APP下载: www.huixueba.com.cn/Scripts/download.html
制作开头loading时的Logo界面,4秒后进入下一个界面:
建一个空Project,将屏幕分辨率改为800*600.
File---Build Settings---- PC and Mac Standalone--- Player Settings--- Resolution and Presentation
创建一个GUI Texture,重命名为Logo,然后Logo图片放到这个GUI Texture上,修改其参数如下:
2
创建一个Scene,命名为PlayScene。然后把Scene都加入到build中
3
我们来写个脚本实现界面切换功能,然后将这个脚本赋给LogoScene中的camera,将Level值改为1,OK,运行试试吧!
END
Unity3D美工步骤-Play界面
目标:制作Play界面的背景,并实现背景循环滚动的效果
利用GUITexture搭建背景。这个就跟上面的操作方法一样了,就是注意下每个Texture的位置就行了,拼成一个大背景。拼完就建立一个空的GameObject,把那些Texture组合起来,方便统一管理。
注意:修改Z轴数值可以改变各个Texture的前后显示,比如,让Texture1显示在Texture2前面,就使Texture1的Z轴数值大些就可以了
写脚本使背景循环移动原理很简单,就是利用两张背景图循环切换就行了。
注意:如果在两张背景图循环切换时发现有空隙,可以使每张背景图的宽度稍微大于屏幕显示宽度就行了。
代码很简单:
目标:改变鼠标样式,使其变成小手
原理很简单,就是将原理的鼠标光标隐藏了,然后在OnGUI里在相应的鼠标位置绘制自己喜欢的鼠标图片就行了,点击时和未点击时用不同的图片样式。OK, 试试效果吧!
目标:给Play界面添加一个个性化的Play按钮,添加按钮,我们得用GUI.Button,但是我们需要修改样式,用一个图片作为Button的背景。这就需要GUISkin或者GUIStyle了,两者选一就可以,其实GUISkin就是一堆GUIStyle的组合。本例中我们使用GUISkin,因为后续的界面还要用到别的样式的Button。1. 创建一个GUISkin, Assets---Create---GUI Skin, 然后在Custom Styles添加你想要的按钮图片。
接下来我们写代码,添加这个个性化的按钮,我先上代码了
目标:给Play界面添加一个退出界面和背景音乐
添加一个退出按钮,方法和第四讲添加Play按钮一样
添加一个弹出的窗口,用来给用户选择退出还是不退出。
这个代码里涉及到一个新的GUI,那就是Window。使用方法也简单,创建时跟其他GUI控件类似,只不过这里面多一个参数是函数,在这个函数里用户可以绘画自己想要的窗口,以及做自己想做的事!
未完,第二季后期呈现!