Unity3D射击游戏中人工智能与摄像机的运用
2018-02-28王功利钟健麒
王功利 钟健麒
摘要
本文介绍一款基于Unity3D引擎的射击游戏。针对游戏市场上射击游戏的相关调查和分析,着重介绍开发射击游戏中人工智能与摄像机模块的设计运用。人工智能在射击游戏中的运用体现在敌人动作行为,射击行为中。摄像机模块会在瞄准镜,小地图雷达功能等方面有所运用。这些功能的运用能够完善一款射击游戏的细节,给玩家带来更便捷,更刺激的游戏体验。
【关键词】Unity3D 人工智能 虚拟摄像机
1 引言
射击游戏根据游戏视角不同,可划分为第一、第三人称、俯视以及平面射击游戏等。其中第一人称视角是射击游戏的主流,相比其它游戏视角,第一人称视角会带给玩家身临其境的感受,真实感和交互感会大大增强,让游戏给玩家带来视觉刺激感。
人工智能目前成为很多高新技术产品开发过程中的核心技术,同样也是数字媒体游戏作品中的重要技术,成为游戏产品创新的核心动力,给游戏玩家带来更具可玩性和满足感的体验,使游戏在市场竞争中占据主导地位。本文将以制作第一人称射击游戏的过程中人工智能和摄像机的相关问题展开介绍,为开发者在Unity3D游戏引擎中相关技术的设计具有一定指导作用。
2 相关工作
玩家视角切换设计与运用是第一人称射击游戏的重点。游戏过程中时刻要使用视角,例如玩家使用武器瞄准镜,小地图侦查等。
人工智能具有多变性,健壮性和平衡性的特点。射击游戏中,多变性体现在敌人的战术动向的多变,让玩家无法完全预知敌人行动;健壮性体现在算法在程序中的健壮性和游戏逻辑合理性;平衡性表现在算法会给玩家带来的操作性和趣味性之间的平衡感。射击游戏运用好人工智能算法。不仅能激发玩家的游戏兴趣,又能让玩家愿意挑战自己的操作实力。
3 人工智能与摄像机的运用
3.1 AI在敌人行为中的实现
射击游戏很多情节中,玩家想完成任务就要击败敌人。而作为敌人就需要有一定的“能力”去阻止玩家完成任务。这需要开发者给敌人赋予人工智能算法,让敌人通过算法执行某些智能操作。对于玩家,想要击败敌人就要知道敌人会在那里出现,会如何组织对玩家的进攻。
3.1.1 寻找玩家
敌人生成后,需要在场景中寻找玩家对象。通过物体对象在Inspector编辑的Tag属性,根据不同标签判断物体是否为“玩家”。脚本中定义游戏对象作为敌人变量,利用GameObject.FindGamcObjectWithTag()方法寻找带有“Player”标签的对象,从而认定这类对象就是玩家目标。
3.1.2 追踪与撤离
敌人接近玩家需要时刻改变其旋转角度和位置。脚本利用三维向量的MoveTowards方法控制敌人走位。获取任意时刻敌人位置、玩家位置以及敌人的移动速度。让敌人在单位时间内以玩家位置为目的地移动;利用Quatemion.LookRotation获取面向玩家的旋转朝向,Quatemion.Slerp对敌人的旋转进行控制。
敌人追赶玩家进行围攻与否同样要借助人工智能进行判断。定义脚本控制敌人追击行为。当敌人距离玩家太近时就不再靠近玩家,距离太远时则进行追赶;对于玩家,在主动追击敌人时,敌人需要躲避。这些需要通过判断玩家与敌人的间距是否到达某个限定值。脚本中定义浮点型变量规定停止和继续追赶的距离。运行中对敌人和玩家之间距离与这些变量进行比较,根据比较结果来控制追击,停止或撤退动作。
3.2 Unity摄像机属性运用
3.2.1 小地图
小地图用于判断场景中玩家与敌人之间的相对位置,通过给敌人的正上方加上标记,让标记在小地图中以二维形式显示出来而不在玩家视图中展现。
敌人模型的标记中需要调节Layer属性,在Inspector的“Layer”选项中调节敌人模型和标记的层属性使其互不相同。在场景中添加摄像机并固定在玩家正上方,在层次结构上附属于玩家对象,使相机与玩家位置绑定。用该相机的绘制画面作为小地图展示内容,最后在UI玩家界面中添加RawImage,显示小地图相机实时绘制渲染出的画面。最后在相同位置加上小地图的背景图片。
相机属性的Culling Mask表示摄像机要绘制的层。在这里将小地图相机绘制层选项中,只选择代表敌人标记的“Mad”,而在玩家主相机的选项中,将除了Mark以外的所有其他层进行勾选。这样在游戏运行中主视图不会绘制出敌人标记而正常绘制出其他内容,而小地图只会把敌人的标记绘制出来并显示在主相机UI中,达到预期效果。
3.2.2 瞄准镜功能
瞄准镜实现利用了摄像机视图变换功能。场景中新建摄像机用于制作瞄准镜视图。添加脚本用于控制玩家在点击瞄准按键时切换到瞄准视图。定义GameObject并绑定场景中的瞄准镜相机,再定义 Camera对象并使用其中的FieldOfView属性调整视图的放大倍数。最后界面中添加Image并附着瞄准镜的背景图片。当玩家瞄准时,既切换了摄像机视图,又能让瞄准镜背景可视化。
4 总结
人工智能技术的发展在基于Unity3D引擎的射击游戏设计中被广泛运用。射击游戏中玩家对视角功能的依赖性与需求,要求开发者对摄像机功能设计有较好的掌握。本文在对Unity3D引擎的射击游戏进行基本设计的基础上,对人工智能算法,摄像机功能的技术在开发过程中的运用继续深入探讨,并简述相关设计的流程。该游戏目前在开发阶段,在关卡设计,敌人和场景的内容仍然需要继续完善与探究。
参考文献
[1]李锦荣,郭磊,谭忠扬.基于Unity3D平臺的射击游戏的开发[J].福建电脑,2015,31(02):8-9+11.
[2]刘丹奕.浅谈人工智能在游戏开发中的应用[J].黑龙江科技信息,201406):128+69.
[3]郑铭楷,吴子朝.基于unity3d的射击游戏设计与实现lil.电脑迷,2018(04):29.
[4]孙可言,陈根.基于Unity射击游戏的人工智能与碰撞检测的研究[J].科技风,2016(24):11+18.