基于unity3D游戏引擎与leap motion体感控制器的体感音乐交互类游戏

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于unity3D游戏引擎与leap motion体感控制器的体感音乐交互类游戏相关的知识,希望对你有一定的参考价值。

参考技术A 体感音乐游戏融合了音乐,运动和游戏元素,使游戏玩家获得多种感官体验,受到

游戏玩家特别是年轻玩家的青睐。本文利用 unity3D 游戏引擎配合 leap motion 体感控

制设备实现了一种体感音乐交互游戏。主要使用了手势检测、节奏分析、碰撞检测等关

键技术实现游戏模式选择模块,音乐选择模块,游戏模块与分数结算模块。设计的游戏

利用 leap motion 体感控制设备将体感音乐融入到游戏环境中,游戏玩家可以通过手势

或键盘操纵游戏过程。由于加入体感控制设计,使游戏模式更加丰富,增强了游戏的可

玩性与玩家的活动范围。改变了传统的游戏模式,使得游戏过程更加灵活,更利于玩家

的身心健康。使用 DOTween 游戏动画引擎在游戏中添加的补帧动画效果使游戏界面更

加灵活,大大提升了玩家体验感。最后对实现的游戏进行了测试。

关键词 人机交互  Leap Motion 控制器  Unity3D  体感游戏  节奏分析

1.选择游戏模式

玩家进入游戏后,将会观看游戏进入指南与操作手势帮助(如图17、18所示),之后无需玩家操作,经过一段时间后自动进入模式选择场景。

玩家在此处可选择将手左滑锁定本地歌曲模式,这时可以看到写有“custom music”的游戏对象面积小幅度变大,而玩家将手右滑锁定内置歌曲模式时,可以看到写有“select music”的游戏对象面积以同等程度变大。

之后玩家握拳选定模式,这时被选中的模式相对应的游戏对象面积进一步增大,之后整个游戏场景逐渐消失黑屏数秒后进入相应的歌曲挑选场景,值得注意的是在场景黑屏之前取消握拳动作意味着玩家放弃选定,游戏对象的大小会恢复并等待玩家的下一次操作。

2.选择游戏歌曲

2.1本地模式

通过选定写有“custom music”的游戏对象进入本地歌曲挑选界面,玩家可以通过屏幕中显示的虚拟手型确定自己手部相对屏幕所处的位置 ,此时对于屏幕中所显示的歌曲对象,可以做出点击手势点击“listen”按钮试听音乐,点击“play”按钮开始所选择歌曲的游戏。

此时若界面中罗列了超出屏幕显示数量的歌曲,玩家可以通过手的上下滑动浏览歌曲列表。

2.2内置模式

通过选定写有“select music”的游戏对象进入内置歌曲挑选界面,玩家可以通过屏幕中显示的虚拟手型确定自己的手势动作,通过手的左右挥动来选择不同的歌曲,锁定歌曲后,玩家可以通过将手掌反转180°的操作来更换歌曲游戏的难易度,每翻转一次玩家都可以通过屏幕中的难易度栏来确认目前的游戏难易度,锁定难易度后,玩家通过握拳操作选定当前歌曲并且以此歌曲开始游戏,此时可以观察到屏幕中显示歌曲封面的对象面积逐渐增大,之后场景透明度降低,在数秒的黑屏缓冲后进入游戏场景。

值得注意的是,如果在场景进入黑屏之前取消握拳手势,则被认定为放弃进入游戏,屏幕中的封面游戏对象会逐渐恢复此前大小并等待玩家的下一次操作。

3.进入游戏

玩家进入游戏后可以看到以宇宙为背景的游戏场景,跟随音乐的节奏会在屏幕中出现蓝色节奏点,节奏点在运动至与屏幕下方的两个光球相同的z坐标位置时,玩家需要操纵两个光球,使其与节奏点x坐标重合,也就是所谓的“接住”节奏点。玩家“接住”节奏点时,屏幕上出现hit字样并增加玩家的生命值(如图23所示),当玩家错过某个节奏点时,屏幕上出现miss字样并减少玩家的生命值(如图24所示)。若玩家连续“接住”节奏点且没有任何一个点被错过时,玩家的连击数会根据“接住”的节奏点数量增加,一旦玩家错过了某一个节奏点,则连击数立即归零。

玩家通过手的左右滑动来操纵光球,光球时刻保持与玩家手所在位置相同的x坐标,而除此之外的y,z则保持游戏默认值不变,在游戏开始时玩家若判断音乐前奏过长影响游戏体验,可以通过握拳的手势跳过音乐前奏部分。在游戏进行的任何时间玩家都能够使用将手掌反转180°的方式更改游戏背景的颜色以享受更加舒适的游戏过程。

4.游戏结束

(1)显示游戏成绩

在歌曲结束后,游戏界面在数秒的黑屏缓冲后进入游戏分数结算场景,场景中会显示玩家当前游戏的得分与失分,也就是“接住”与错过的节奏点的数量,此外还会显示玩家的连击数与游戏等级,以此来判断本局游戏玩家的表现是否出色。

(2)选择下一步动作

此时屏幕右下方存在两个游戏对象分别写有“retry”与“back”字样,玩家通过手的左右挥动来做出不同的选择,被选择的游戏对象面积将会增大,锁定选择后玩家通过握拳动作进入相应的下一个场景,选择“retry”对象时,玩家将再次体验与上一局游戏相同的歌曲与难易度,选择“back”对象时,玩家将会回到相应的音乐挑选场景,从本地音乐模式进入时玩家回到本地音乐挑选场景,从内置音乐模式进入时玩家回到内置音乐挑选场景。

HTC Vive 与Leap Motion 出现位置错误的问题

Leap Motion已经支持VR, 但是官方没有支持HTC Vive的例子。

按照官方的文档, 其实是有问题的:

https://developer.leapmotion.com/documentation/unity/unity/Unity_Custom_Rig.html

 

Add the LeapVRTemporalWarping script component to the LeapSpace component you just created. Double check that the Head Transform property has been set to your MainCamera and that TrackingAnchor has been set to the TrackingAnchor game object you created a few steps earlier. Apply the following settings to the script:

Set Tween Rotational Warping to 1.
Set Sync Mode to LOW_LATENCY.

问题在于这句话:“Head Transform property has been set to your MainCamera”

如果你按照官方这样设置, 两只手的模型, 永远都会在你脑袋上方, 而不是在你前方。

 

正确的是什么呢?

 是这样的:

因为对steamVR来说, 有点特别, head 是一个Camera, eye也是一个Camera, 而实际上,这里Head tranform用Camera(head)才是正确的。

对应的, Tracking Anchor就是Camera(head)的父对象了。

 

以上是关于基于unity3D游戏引擎与leap motion体感控制器的体感音乐交互类游戏的主要内容,如果未能解决你的问题,请参考以下文章

如何利用Leap Motion创建支持手势操控的Web游戏

如何利用Leap Motion创建支持手势操控的Web游戏

如何在Unity中开发Leap Motion桌面版(Non-VR)APP

leap motion怎么对应屏幕上的位置

HTC Vive 与Leap Motion 出现位置错误的问题

Leap Motion 之Unity 开发指南(一. 基本概念与制作手预制件)