基于游戏引擎的第三人称射击类案例制作解析

来源:优秀文章 发布时间:2022-11-18 点击:

章国雁

(安徽工商职业学院 信息工程学院,安徽 合肥 231131)

随着网络的发展、计算机硬件性能的提升以及智能化系统的不断完善,游戏产业的发展也日臻成熟,目前无论是网游还是手游都处在了发展的黄金时期,而射击类游戏在游戏市场有着浓墨重彩的一笔。射击类游戏具有竞技性强的特点,但也兼顾了公平性,以知名游戏《绝地求生》为例,所有玩家在一张地图上竞技,需要玩家自己收集枪械和补给品,玩家可以单人或者组队进行战斗,保持了公平性的同时也加强了游戏的趣味性。游戏行业的发展带动了游戏开发技术的进步,为了提高开发效率,业内普遍采用各类型游戏引擎进行开发,其中主要以Unity3D引擎和Unreal虚幻引擎为主。Unity3D 引擎具有较好的跨平台特性,开发完成后可以轻松部署到十几种平台上,对硬件性能要求低,因而在国内拥有大量的开发者;
Unreal虚幻引擎具有较好的画面效果,但对硬件要求较高,普遍用于次世代游戏开发,但随着近些年硬件性能的提高,Unreal 引擎应用越来越广。

众多学者对使用游戏引擎进行游戏开发进行了大量的研究,2018 年张策在文中讲解了使用Unity3D 引擎开发的一款以战车为主体的射击类游戏开发研究与实现;
2019 年蔡国宇等人在文中讲解基于Unity3D 引擎人工智能系统制作的一款第三人称射击类游戏;
谢宏兰在文中讲解了使用Unity3D 引擎NetWork 组件开发的射击类游戏,实现了局域网的多人对战游戏,增强了游戏的视听效果和乐趣性;
2020 年黄冈对基于Unreal 虚幻引擎的FPS 第一人称射击游戏开发与设计进行了研究;
陈丽梅等人在文中讲解了基于Unreal 虚幻引擎结合KBE 服务端引擎,使用C++语言与蓝图脚本做客户端开发,实现具有联网功能的第三人称射击动作类游戏。以上研究对于使用游戏引擎进行游戏开发提供了很好的帮助。

1.1 案例介绍

本文以Unity3D 引擎官方案例“恶魔射手”为参照讲解其制作过程,案例资源使用Unity官方提供的免费资源,游戏人物主角和怪物模型为卡通风格,游戏场景设置在一间梦幻风格的场所中,摆设有一间屋子、放大的抽屉、椅子、闹钟、玩具汽车以及一些儿童玩具等物件,游戏主角为一个小男孩拿着一把枪,可以做出射击、奔跑、受到伤害、死亡等动画,游戏设置了3 个不同类型的怪物,每个怪物含有生命值、攻击力等属性,可以做出发动攻击、受到伤害、死亡等动画效果。

1.2 游戏功能设计

本案例采用Unity3D 游戏引擎和Visual Stu⁃dio 为开发平台,使用C#为开发语言,游戏主要功能包含以下方面:游戏资源的导入和场景搭建、游戏主角的设置、主角移动功能、生命值、受到伤害及死亡功能、主角射击功能、摄像机的跟随、动画状态机设置和播放、游戏怪物的设置、怪物AI、怪物生命值、受到伤害及死亡功能、背景音乐和音效、游戏界面UI制作等功能。

2.1 资源导入和场景搭建

导入下载的官方免费资源包SurvivalShooter,包含了游戏物体模型文件夹Models、音效文件夹Audio、图片资源文件夹Textures、预制体文件夹Prefabs 等。在预制体文件夹Prefabs 中的拖动En⁃vironment 环境预制体到Scene 窗口中,进行游戏场景的搭建。

2.2 游戏主角移动、攻击功能的设置

拖动Models 模型文件夹中的Player 模型到Hierarchy 窗口中,给模型添加Rigidbody 刚体组件和CapsuleCollider 胶囊体组件,刚体组件锁定Freeze Position Y 轴和Freeze Rotation X、Z 轴值,防止主角在Y 轴上产生位移,X 轴和Z 轴产生旋转。

在FixedUpdate()函数中,根据玩家在A、D 按键和W、S 按键的操作,通过输入管理器Input.Ge⁃tAxisRaw()函数获取水平轴Horizontal 和垂直轴Vertical 的值,调用游戏主角刚体组件的MovePo⁃sition()函数实现移动功能,其核心代码如下所示:

当玩家按下鼠标左键时,游戏主角发动攻击,实现思路为:在枪头的位置向前发射一条射线,判断射线与物体是否进行碰撞,如果碰撞的物体为怪物,则怪物受到攻击,减少怪物的生命值,如果碰撞的是其他没有生命值的物体,则不做处理,其核心代码如下所示:

2.3 摄像机跟随功能

当游戏主角进行移动时,为了方便玩家进行游戏控制,摄像机需要保持跟随状态。摄像机实时跟随主角移动,镜头画面容易产生过度的晃动,造成玩家视觉上眩晕的问题,为了避免这一情况,我们通过使用插值函数来保障摄像机的平稳位移,其核心代码如下:

2.4 动画状态机设置和播放

当游戏物体进行移动、攻击、受到伤害、死亡等动作时,需要同时播放相应的动画效果,我们使用Unity3D引擎中的Mecanim 动画系统进行制作,以游戏主角Player 为例,我们进行动画状态机的设置,其详细步骤如下:(1)在Project 窗口中创建动画状态机控制器PlayerAnimatorController;
(2)在Animator 窗口中,创建游戏主角Player 物体的空闲状态机Idle、移动状态机Move 和死亡状态机Death;
(3)创建状态机的转移条件参数Iswalking(是否移动)和Die(是否死亡),类型均为布尔值Bool;
(4)连接状态机之间的条件转移,其转移条件为:当Iswalking 为真True 时,Idle->Move 转移;
当Iswalking 为假False 时,Move->Idle 转移;
当Die为真时,Any State->Death 转移。状态机创建完成后,如图1所示。

图1 创建动画状态机

2.5 游戏怪物的设置

怪物物体需要添加刚体、胶囊体碰撞器、球形触发器、NavMeshAgent 导航网格、声音来源等组件,刚体组件用于实现怪物的移动功能,胶囊体碰撞器避免物体之间相互穿插,触发器检测玩家是否进入攻击范围,NavMeshAgent 导航网格用于怪物自动寻路,让它具有一定的AI 功能,声音来源组件用于播放怪物相关的音效。

游戏的功能开发完成后,还需要对游戏进行发布和测试,根据测试结果进行进一步的优化。我们对所制作的游戏进行发布到PC平台上,运行后游戏画面效果如图2所示。

图2 游戏画面

本案例讲解了Unity 官方第三人称射击类案例的制作过程,包含了主角攻击和怪物攻击、怪物AI 等核心功能,但目前为单机版本,游戏的趣味性有限,后期可以此为基础进一步扩展功能,添加游戏服务端,制作多人在线联网版本。本文针对第三人称射击类案例的制作解析,对于游戏开发研究具有较好地实用性。

猜你喜欢 怪物组件引擎 点燃企业发展的“引擎”共产党员·下(2022年4期)2022-05-17打造信息化建设的“党建引擎”党的生活(黑龙江)(2022年4期)2022-04-25创建Vue组件npm包实战分析计算机与网络(2021年8期)2021-06-20智能机械臂发明与创新·中学生(2021年4期)2021-04-20车坛往事4:引擎进化之屡次失败的蒸汽机车人民交通(2020年4期)2020-04-16失踪的怪物等学生天地·小学低年级版(2018年5期)2018-09-13Women in the Workplace, Fighting Spam, Money in the Museum, and the Mood for Food汉语世界(The World of Chinese)(2016年5期)2016-01-10曾被误认为怪物的伞智慧与创想(2013年7期)2013-11-18嵌入式组件技术的研究及应用现代电子技术(2009年6期)2009-05-31One Engine Left只剩下一个引擎中学生英语·外语教学与研究(2008年4期)2008-03-18推荐访问:射击类 解析 案例
上一篇:适用于变压器油火的泡沫灭火剂评价指标体系与方法
下一篇:基于项目化的安徽省中等职业教育高质量发展研究与实践

Copyright @ 2013 - 2018 优秀啊教育网 All Rights Reserved

优秀啊教育网 版权所有