赞
踩
从本篇起,我们将进入实战环节,编写一个简单的第一人称射击游戏。在开始制作游戏之前,我们需要一份游戏策划。
1. 游戏介绍:游戏场景中,会有若干个敌人的出生点,定时生成一些敌人。敌人会寻找并攻击主角。游戏的目的就是生存并消灭更多的敌人。
2. UI界面:包括生命值、弹药数量、得分和准星。游戏失败后提供一个按钮重新开始游戏。
3. 主角:由于是第一人称射击游戏,主角本身不会出现在视野范围内。屏幕上能够看到的是一把端在胸前的M16机关枪。按键盘的W、S、A、D来控制主角前后左右移动,移动鼠标旋转视角,点击鼠标左键射击。
4. 敌人:敌人只有一种,具有智能寻路功能,可以躲避障碍物并攻击主角。
1. 在Assets目录下新建文件夹Scenes,将Unity创建的默认场景保存到Scenes文件夹下,并命名为demo.unity。
2. 导入美术资源(解压后复制到Assets目录下),将rawdata/Level目录下的level.FBX添加到游戏场景中。
3. 删除Unity自动创建的Directional Light,在菜单栏选择【GameObject】→【Light】→【Point Light】创建9个Point Light,均匀分布到level游戏体所在的空间,调节各自的灯光颜色、光照范围和光强。将每个光源的Baking属性设为Baked,以便进行灯光烘焙。
4. 选中level游戏体,在Inspector窗口中勾选Static选项将level游戏体设置成静态物体,以便进行灯光烘焙。(一定要勾选!没有设置成Static的物体不会参与灯光烘焙)
5. 在菜单栏选择【Window】→【Lighting】→【Scene】,勾选【Baked GI】。Baked Resolution和Baked Padding属性用于设置烘焙精度和烘焙像素间隔,值越大精度越高,需要的烘焙像素越多,需要的烘焙图数量可能也会增加。Compressed属性指示是否对最终生成的Lightmap进行压缩,可以大幅降低其大小,对于性能相对较差的硬件平台(比如手机)此项非常有用。Lighting窗口下方会显示出预计产生的Lightmaps的大小。点击Build开始烘焙灯光,等待烘焙完成。
6. 保持选中level游戏体,选择【Add Component】→【Rendering】→【Light Probe Group】为level添加一个Light Probe Group(灯光探测器组),使用【Add Probe】命令创建灯光探测器,修改其位置。在我们的游戏场景中,光影效果较为简单,因而可以采取均匀分布的方法。在复杂的游戏场景中,大量创建Light Probe会对性能造成较大影响,此时可以采取的方法是在光影变化较为丰富的地方较为密集地布置Light Probes,在其他地方较为稀疏地布置少量Light Probes。更多有关Light Probes的布置方法,可以参考Unity圣典中的有关内容。布置完的效果如下图所示。
7. 选择level游戏体下的三个模型,在Inspector窗口选择【Add Component】→【Physics】→【Mesh Collider】为它们添加多边形碰撞体。为了得到最精确的碰撞检测,可以直接使用模型本身进行碰撞检测,但因为在实际项目中,模型通常相对比较复杂,模型的外形多边形数量较大,这样做对性能会产生很大影响。比较常用的一种方法是使用一个与模型形状近似的碰撞模型,但尽可能简单,专门用来检测碰撞。这里我们就使用了这个技术。
游戏场景到此就基本建立完毕了。从下一篇起我们将为这个第一人称射击游戏添加主角和敌人,并编写相应的脚本代码。所有的脚本均使用C#编写,关于C#语言,推荐一本Karli Watson等的著作《Beginning C#》(C# 入门经典),由浅入深,讲得很细致也很全面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。