一种VR摘西瓜游戏制作技术*
2022-05-09魏三强蒋正铨张晓光
魏三强,蒋正铨,张晓光
(1.宿州职业技术学院 计算机信息系,安徽 宿州 234101;2.中国矿业大学 信息与控制工程学院,江苏 徐州 221116)
0 引言
随着人们生活水平的提高和生活节奏的加快,市民对农村的田野生活越来越疏远。城里长大的孩子对蔬菜和水果的生长知识知之甚少,一些家长为了给孩子补充常识,会在周末或节假日带着孩子去城郊或农村采摘园进行采摘活动,采摘蔬菜和水果已成为市民亲近自然、感受自然的一种新型的休闲方式。但是,对那些工作十分忙碌的家长而言,很少有时间带孩子去乡村体验采摘生活[1]。据此,设计与制作了一款VR摘西瓜小游戏,希望能够满足市民足不出户、虚拟采摘西瓜的愿望,从而达到亲近自然、感受自然的目的。
1 游戏设计
1.1 软件工具与方法
使用Unity 3D(2019版)作为游戏开发主软件。使用Maya软件创建游戏3D模型,将“瓜棚”“干草卷”等3D模型导出为.fbx格式文件,并拖到Unity 3D的Project视图中,再逐一添加Mesh Collider网格碰撞体,使用Steam VR插件、射线瞬移和编写C#脚本实现西瓜地的交互式漫游设计[2-3]。使用Quixel Bridge软件制作材质,导入Unity 3D软件中,并赋予3D模型材质(直接将材质库里的西瓜模型导出到Unity 3D中)。将音效文件yinxiao.mp3拖至Unity 3D的Project视图Assets中,通过Component/Audio/Audio Source添加音频源。
1.2 游戏交互设计
在使用Unity 3D软件搭建完成“地形” “树木”等游戏场景后(如图1所示),接着进行游戏交互设计。本游戏的交互设计流程是:首先进入游戏首界面,点“开始游戏”按钮进入游戏,通过射线瞬移可移至西瓜地的每一个角落,用HTC Vive两个手柄的扳机键可以采摘西瓜,可把采摘的西瓜都集中在瓜棚下。
图1 游戏场景截图
2 游戏制作关键技术
本游戏的主要制作流程是:按VR摘西瓜游戏要求调研分析各个模块的功能,如具体制作中,虚拟场景中的模型和纹理贴图都来源于真实场景,使用Maya软件创建游戏3D模型,使用Quixel Bridge软件制作材质,使用Unity 3D软件搭建游戏场景、制作图形界面、设置Steam VR插件、编写C#脚本语句、制作音效和发布游戏[4-5]。
2.1 游戏首界面按钮交互控制
创建脚本ShouJiemian.cs,“开始游戏”按钮、“结束游戏”按钮的代码编写如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class ShouJiemian : MonoBehaviour
{
public void PlayGame( )
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
public void QuitGame( )
{
Debug.Log("QUIT!");
Application.Quit( );
}
}。
2.2 创建玩家预设体Player
在Unity 3D资源商店中搜索并下载安装Steam VR插件,将Project视图中的玩家预设体Player拖入到Scene视图的游戏场景中,关闭主摄像机Main Camera,点播放按钮,戴上HTC Vive头盔,以玩家Player视角进入游戏场景。
2.3 射线瞬移交互控制
首先将SteamVR中的Teleporting.prefab拖到游戏场景中,添加射线瞬移预设体。接着复制一个地面(Plane1)用于传送区域处理,将TeleportArea.cs添加到Plane1上。再找到SteamVR中的TeleportPoint.prefab拖到游戏场景中,点击HTC Vive手柄的触控板控制射线瞬移。按此方法,在西瓜地各角落中添加若干个Teleportpoint.prefab[6-7],可实现整个西瓜地中的定点射线瞬移。
2.4 抓取抛掷制作
为西瓜添加刚体Rigidbody组件、速度估算脚本VelocityEstimator、悬停事件InteractableHoverEvents、抛掷Throwable后,就可以使用HTC Vive两个手柄的扳机键采摘、抛掷西瓜。
2.5 给游戏添加音效
选中西瓜,为西瓜添加Sphere Collider组件。在西瓜上添加一个Audio Source组件,并指定AudioClip为音效文件yinxiao.mp3。取消勾选Play On Awake和Loop复选框。在Project视图中创建一个新的脚本,将其命名为GuaCollider.cs,输入下列代码[8-9]:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GuaCollider : MonoBehaviour
{
//定义一个AudioSource对象
AudioSource guaAudio;
void Start( )
{
//初始化音效
guaAudio = GetComponent
}
//当发生碰撞的时候调用该方法
public void OnCollisionEnter(Collision collision)
{
//播放音效
guaAudio.Play( );
}
}。
2.6 游戏的发布
在Unity 3D的菜单栏中选择File→Build Settings命令,在Platform处选择默认的PC,Mac & Linux Standalone,单击Build按钮[10-11],选择可执行文件保存的路径,然后等待生成可执行文件,即可完成游戏发布到PC平台。
3 实验测试
3.1 实验测试平台
实验测试选用的测试平台是VR图形运算工作站:i7-9700 CPU;操作系统:Windows 10,64位;内存:32GB;显卡:GeForce RTX 2060 SUPER;HTC Vive头盔,HTC Vive操控手柄。
3.2 实验测试与结果分析
直接运行该游戏的.exe文件,进入游戏的首界面(如图2所示)。点“开始游戏”按钮进入游戏,戴上HTC Vive头盔,通过两个HTC Vive操控手柄可实现在西瓜地中的交互式虚拟漫游。
图2 游戏首界面
(1)射线瞬移测试。使用HTC Vive手柄操控,通过射线瞬移可准确地传送到西瓜地中预设的若干个传送点(如图3、图4所示)。本测试通过,定点传送准确。
图3 射线瞬移传送点 图4 射线瞬移测试
(2)采摘西瓜体验测试。通过HTC Vive操控手柄可采摘西瓜(如图5所示),并可搬运西瓜至目的地(如图6所示)。测试通过,体验效果良好。
图5 摘西瓜测试 图6 搬运西瓜测试
(3)音效测试。当西瓜落到地面上时,就会发出音效声。本测试通过,声音效果良好。
4 结语
本研究完成的小游戏实现了VR采摘西瓜的体验效果,能够为体验者带来摘西瓜的喜悦感,达到了亲近自然、感受自然的目的。但游戏的交互体验项目偏少、动景少、天空中无飞鸟、无人物元素等。下一步的研究将增加游戏的交互式体验项目,丰富游戏的动态场景元素,使得游戏场景元素更加丰富、娱乐性能更强。