制作3D射击游戏+心得
1 需求分析
设计一个基于Unity的射击游戏,实现“增减玩家血量”、“使用切换武器”、“自动生成敌人”、“敌人攻击玩家”、“房屋躲避”、“游戏HUD”等功能,具体要求如下:
1.1主菜单
打开游戏,进入游戏主界面,如下:
点击Play:直接进入游戏界面进行游戏
点击Instructions:初始界面出现游戏介绍
点击Quit:直接退出游戏
1.2各项功能
1.2.1 增减玩家血量(blood值)
先设置玩家初始血量为100。当玩家遭受敌人攻击时,血量减去遭受的伤害值;当玩家捡到“救援包”时,血量增加10(一个救援包增加10个血量值)。
1.2.2 使用切换武器
当玩家收集电量数量达到2个时,才可以启动“切换武器”这个功能。不同的武器的子弹或导弹发射口都是枪口处,需新建子对象放在相应枪口处。为此需先建立各种子弹的预制体。
建立Weapon脚本,实现武器切换函数selectWeapon(int)
并新建各种武器发射子弹的脚本,并附在相应对象上。
1.2.3 自动生成敌人
首先创建敌人即Robot预制体,实现AI随意寻走(这里参考教案代码,不多介绍)。我在这里添加了Robot脚本,实现JS文件和CS文件的跨类型调用,当检测到该敌人die后,Robort文件就调用Inventory脚本(玩家所有)里的enemyNumber,使其加一。
当kill了3个敌人,就判定游戏成功,玩家获胜。
其次再实现自动生成敌人,即运用Random.Range。这里新建对象EnemyCloner及其脚本。
1.2.4 敌人攻击玩家
与前面玩家“增减血量”一样实现,只不过敌人只能减少血量。
创建脚本CharaterDamage:
同时创建敌人被杀后的状态:
1.2.5 实现游戏HUD
创建三个GUITexture和三个GUIText,分别显示blood(血量),energy(能量值),enemy(杀敌数)对于收集“救援包”和“能量块”,在分别对象建立相应的脚本Rescue和PowerCell,使用触碰器,当玩家触碰到“救援包”或者“能量块”就会收集。
1.2.6 实现房屋躲避
添加房屋,为房屋的门添加触碰器,当玩家靠近门时,门就会开。
新建脚本PlayerCollisions:
2 系统设计
流程图
3 系统测试
4 总结
这是大三时的课设,现在回想起当时写该游戏心情还是十分快乐的,毕竟一开始就是对3D的浓厚兴趣才使我走上了计算机的道路。虽然资源有限,当时“血量包”的图片还是我自己去网站上到处爬的,但总的来说我做出了我想做的成果,答辩时老师也满意,还不错哈哈😊。