温馨提示:文末附资料包可免费领取
提到游戏开发
人们的脑海中浮现的要么是一个程序员孤军奋战的身影,要么是在发行商赞助下成立的游戏开发公司。
这种情况在游戏开发初期,确实非常普遍,有时候甚至制作一款非常简单的小游戏对于独立开发者来说都十分困难和高成本。因为你需要创建一个游戏引擎——游戏的核心,承载各种不同的技术模块,让游戏流畅运行。
而今天呢就和大家分享零基础如何利用Unity3D引擎开发一款第一人称射击单机小游戏。
温馨提示:U3D安装包可以在文末福利免费领取
当然首先简单介绍一下unity3D,它是由Unity Techologies开发的一款游戏开发引擎,也是目前手机游戏和虚拟仿真领域最活跃、最易用的开发工具。近年来随着移动平台扩张的东风,Unity几乎成为了整个游戏以及虚拟仿真领域的行业标准。
△如国名手游王者荣耀就是采用unity开发
那么先梳理一下游戏设计的思路:
1.1.1游戏类型
基于Unity3D和C#脚本开发的一款FPS射击类游戏。大概剧情就是玩家可以利用手中的散弹枪击杀暴走的机器人,且需要在规定的时间内在地图内寻找到“真实的钥匙”,如果时间耗尽或者被机器人击杀则游戏失败。
△随便弄的初始界面好吧我知道很丑
1.1.2 逻辑流程图:
1.2游戏主要功能描述
⑴界面部分:主要为登陆游戏界面制作。
⑵地形部分:主要为人物模型以及游戏场景地形
⑶粒子特效火焰粒子特效、爆炸粒子特效
⑷音效:开枪音效、背景音乐、爆炸音效
⑸动作控制:玩家的前进后退左转右转子弹发射
Unity3D与Xml的交互
单机小游不需要数据库,通过自定义一个Xml储存数据。以登录界面的设计为例:
这是一个名为UserInfo的内容
<?xml version=”1.0”encoding=”UTF-8”standalone=”no”?>
<users>
<users1 姓名=”张三” 密码=”123”>我是张三</user1>
<users2 姓名=”李四” 密码=”123”>我是李四</user2>
上面的Xml有两层,父节点叫users,子节点有两个,分别为user1和user2,每个节点有两个属性,姓名和密码。每个节点有一段文字内容,要求能够读取每个节点的名称内容和属性,并且能够添加节点和属性。
这是一个操作Xml读取的类,默认继承Object,这个类里面主要有三个函数
Load(string filePath):通过文件路径来加载Xml的文件内容
LoadXml(string xmlFile):通过加载Xml文件内的文本内容加载Xml。
GetRootNode():用来获取Xml的根节点,有了这个根节点,就可以访问每一个子节点。
代码如下:
建立一个UI界面,如图为一个简单的登陆界面
我知道界面很丑!重要的是学习方法!
将Xml文件加载进来的代码如下:
readXmIFile=new ReadXmlFile();
//发布为EXE访问本地Xml的时候使用这种加载方式,这种方式发布网页不支持。
readXmlFile.Load(Application.dataPath+”/Data/Xml/UserInfo.xml”);
开始登陆验证,首先判断是否存在这个用户,如果存在获取这个Xml节点,将节点密码这个属性与用户输入的属性进行比较,相同则登陆成功,否则失败。
部分代码如下
粒子特效实现
喷射的火焰,滚滚的浓烟、萤火虫、雨、雾或者你可以想到的其他任何效果,这些效果通常称为粒子效果(particle effect)这里主要讲述的是枪支射击火焰效果的实现。
首先导入枪支模型,为了增加真实性。在枪口位置设置一个子物体,其子物体展示粒子效果(GameObject——ParticleSystem)其粒子效果充当火焰特效。
游戏粒子效果如图所示:
动画的运用
动画的基本知识
动画是预制的可视动作集,在2D游戏中,这涉及具有多福顺序的图像,并且可以非常快的翻转他们,结果就是对象看似在移动。这种效果类型于老式的翻转书,3D世界里的动画有很大的差别。在3D游戏中,使用模型来表示游戏实体,不能简单地在模型只见切换,以提供运动的幻觉。
Animation运用
射击及换子弹动画的实现,首先在Unity Asset Store中下载所需的模型并导入,动画通常是作为模型的一部分出现的,Animations选项卡中包含管理内置的动画所需的所有属性和控制选项。
将动画拖到Animation组件的Animations属性上,把它们应用于模型,这样使动画可供模型使用,但是不会实际的创建模型的动画,在多个动画间的切换通过脚本完成,C#脚本如下:
触碰效果的应用
首先我们要制作一个玩家需要去收集的物体,从Assert store下载并导入一3D模型。如图导入的一个书本模型:
然后为了让它能够和玩家物体发生交互,我们将为它添加一个原型碰撞器。点击菜单Component——Physice——Box Collider 因为我们不希望玩家在收集它的时候突然撞上去然后停止运动,所以我们将它的碰撞器设置为触发模式,在组件中勾起Is Trigger。
部分C#脚本如下:
△游戏运行的截图
游戏爱好者福音
从单机到网游、从PC端到移动端,短短三十年的发展,国内游戏产业已有千亿规模,而电子竞技正式入围亚运会也标志着游戏行业又踏入了一个新的阶段。
如果你也喜欢玩游戏,为何不将游戏作为职业呢,刨去丰厚的物质薪资,让更多的人玩到自己开发的游戏,或许这成就感会比单纯只是玩游戏更加充实!
这一次我们邀请到曾就职于国内顶尖游戏团队西山居的行业大咖带来一场U3D技术分享课,给大家演示一款游戏究竟是如何一步一步打造而成!
听说夏天的炽热,与学习的热情更配哦——
Unity3d游戏开发交流群
进群领取 Unity安装破解教程以及脚本编辑器Vs2013以及更多学习资料包
扫描二维码加入Unity3d游戏开发交流群,不定期有单机游戏,局域网游戏,大型商业游戏(王者荣耀,英雄联盟等等项目实战),以及UI,AI,VR,AR核心技术的讲解免费知识分享课。
长按识别二维码或
直接搜索QQ群号:786053881