基于Unity 3D的寻宝游戏的设计与制作

2020-10-09 10:24张胜男司占军
电脑知识与技术 2020年22期
关键词:寻宝动画游戏

张胜男 司占军

摘要:基于虚拟现实技术,以各类生活知识为线索,通过Unity 3d引擎设计开发一款以拓展知识为目的的寻宝游戏,使玩家用户在体验游戏乐趣的同时能够了解更多的生活知识。游戏设计过程中,需要利用3Ds Max、PS等软件完成游戏场景、道具的设计以及图形UI界面、场景贴图等内容的制作,利用Unity 3D完成场景漫游、背景音乐、开箱状态等各类功能的实现,使玩家可以通过游戏中场景中的不断探索获得宝箱所在位置,通过线索道具的搜集获得开箱密码,最终获得友好的人机交互页面,增加用户的游戏乐趣与沉浸感。

关键词:Unity 3D;虚拟现实技术;游戏制作

中图分类号:TP391 文献标识码:A

文章编号:1009-3044(2020)22-0037-03

开放科学(资源服务)标识码(0SID):

本设计基于Unity 3D引擎进行游戏的开发,使用Unity平台进行游戏制作,可以实现多平台一次性开发,具有更优越的效果和更高的扩展空间,跨平台游戏在全球范围内的占有率越来越高该引擎的在游戏场景、画面、脚本等方面都展现出强大的设计能力;并且Unity跨平台游戏的兼容性也很强,可以轻易实现同一款游戏在各大主流游戏平台的无缝并存以及跨平台对决,利用Unity引擎进行游戏的开发正在成为主流[1-2]。Unity3D是一款发展成熟的开发程序,极大程度上方便了个人进行游戏的开发设计,降低使用的难度,提高了开发者的效率。寻宝类游戏作为一种经典游戏类型,考验玩家的观察能力、线索串联能力,受到大量玩家的欢迎。采用Unity3D引擎开发一款具有娱乐和教育意义的寻宝游戏,有良好的市场前景。

1 开发环境

建模环境以及Unitv3D场景搭建环境为Windows 10,英特尔Core(TM)i5-5200U CUP2.20GHz,8GB内存,64位操作系统。使用的软件有Autodesk 3ds Max 2018,Adobe Photoshop CC2018, Unity 2018.3.14f1(64-bit), Visual Studi0 2019 CommuniW.

2 游戏的开发思路

如何将寻宝游戏设计得更加缜密、线索合理,首先需对市场上相似游戏进行调研分析。本游戏选择以教学楼为寻宝场景,在各类教室中放置不同类型的线索。此游戏的具体设计流程图如图1所示,游戏系统的设计主要包括场景与剧情的构思,UI界面、三维模型的制作.图像素材的处理,场景搭建、各类交互设计及逻辑的实现。

3 设计与制作

3.1 三维模型的制作

三维模型的制作主要包括游戏场景以及道具模型的制作。在Auto CAD中设计的教学楼平面图的基础上,在3Ds Max中建出相应的三维教学楼的楼体(如图2所示),完成楼体的建模后,确定教学楼内各个房间以及房间内不同物体摆放的位置。图3为书本线索的制作,主要通过UVW展开进行贴图渲染,主要目的是得到正确的模型贴图,它可以根据展开后每个面的轮廓调整面贴图的图案和形状,方便在复杂模型上准确的贴图。

3.2 交互功能的实现

1)第一人称视角漫游。游戏采用第一人称视角进行移动,需要使用相应的控制器。先导人标准资源包,在Charactor Con-trollor中包含两种视角模式:第一人称视角和第三人称视角,选择First Person Controllor,将里面的FPSControllor拖动到Hierar-chy面板中,并调整人物的范围和高度,人物一般使用胶囊体碰撞体。同时调整摄影机的高度和坐标,摄影机的位置即游戏的开始视角,设置好的FPSControllor。此外,可以根据需要调整游戏人物移动的速度和跳跃的高度移动时头部的抖动等要素。要注意摄像机的位置一定要处于人物胶囊碰撞体的内部,否则发生碰撞后,视角依旧进入墙体中。

2)场景跳转功能。新建场景用于存放游戏的界面,将制作好的主界面、二级界面和按钮导人Unity中,并将格式改为可调用的精灵模式(Sprite 2D and UI)。為按钮添加点击进行场景跳转的脚本。打开文件菜单栏中的build settings,把模型所在的场景和游戏界面所在的场景加入scenes in Build中,这样添加脚本时才能找到脚本中所提及的场景。新建一个C# script,命名为“changescenes”用来存放场景跳转的脚本。因为是点击按钮进行跳转,所以需要先引用Unity UI的命名空间和场景存放的命名空间,在声明返回值为空的方法实现跳转。保存好代码后,需要进行事件监听,即赋予按钮的事件何时会发生,设置的方法如图4。

3)密码开箱功能实现。游戏中模型需要通过动画控制器播放动画,动画的制作如门窗的开关、宝箱开关效果在3D嘛Max中完成实现制作,通过unitY 3D中的动画控制器以及脚本代码的调用实现动画状态变化,通过监听按钮事件调用脚本实现密码开箱功能,其关键代码如下:

public GameObject passwordbox;

public string password=””;

public Animator animator;

private bool isTrigger= false;

private BoxCollider checkBox;

public InputField my_ip;

public Button Iny—btn;

void Startn

{

if fanimator==nul11

animator=GetComponent0;

void UpdateO

{

password=my—ip.text;

private void onTriggerEnter(Collider other)

{

isTrigger=tme;

private void onTriggerExit(C01lider other)

{

isTrigger=false;

private void onGUI()

{

if(isTrigger)

{

passwordbox.SetActive(tme);

if((Input.GetMouseButtonDown(0))&&password==”1234”1

0penCaseTiaoJian0;

passwordbox.SetActive(false);))

else

{passwordbox.SetActive(蹦se);

public void openCaseTiaoJianO

{animato r.SetBool(”0penCase”,tme);”

在密室逃脱游戏中,线索不能够轻易被发现,只有执行了指定的动作或者进入了指定的区域内,才有被触发的可能。本游戏中发现线索的逻辑是这样的:玩家进入指定区域后,游戏道具会以高亮的轮廓线框提示玩家,玩家处于可触发的范围内点击道具,就能查看道具的详细信息,按Z键可以关闭详情页。功能实现通过添加触发器与碰撞器并利用bool值进行条件判断,具体实现代码如下:

using cakeslice;//调用OutlineE{fect的命名空间

public Gameobject tupianl;

public Gameobject tupian2;

public outline m—outline;

private bo()l isTrigger=false;//声明游戏组件、高亮组件和布尔

private void onTriggerStay(Collider other)

{

if(other.tag.Equals(”Player”))//玩断玩家是否进入触发器中

{

if(Input.GetKeyDown(KeyCode.Z))

{

tupianl.SetActive(f'alse);

tupian2.SetActive(false);

1//输入Z键图片消失

public void openPaper0//建立鼠标的点击事件

{

if (isTrigger)//判断布尔值是否为真

{

tupianl.SetActive(true);//為真时点击模型可以示图片

3.3 调试与完善

完成游戏基本内容及功能实现之后,通过为游戏添加声音特效等提高玩家的游戏的体验效果。同时针对游戏内容进行测试各环节是否能够正常运行,测试无误后可进行发布。

4 总结

此次设计通过Unity引擎完成了动画播放、背景音乐、场景跳转、场景漫游、线索查看等功能的实现。同时,将生活知识应用于游戏中,通过游戏探索的方式使玩家用户更加轻松简易的方式接收信息。寻宝游戏设计过程中在开发游戏的娱乐功能的同时,更加注重游戏所能带来的教育意义。将教育元素或社会现象引入游戏设计中,将会使玩家用户引起思考与重视,具有重大的教育意义。

参考文献:

[1]李兵川.基于Unity 3D游戏开发流程分析[J].山东工业技术,2018(7):148.

[2]黎勇.关于休闲益智类手机游戏的UI和特效开发思考[J].计算机产品与流通,2017(11):132.

【通联编辑:谢媛媛】

作者简介:张胜男(1995-),女,山东禹城人,硕士在读,研究方向为虚拟现实技术;司占军(1971-),男,河北人,教授,硕士,研究方向为数字出版媒体。

猜你喜欢
寻宝动画游戏
做个动画给你看
动画发展史
寻宝
寻宝大行动
爆笑游戏
我是动画迷