APP下载

基于摄像头感测的体感游戏设计与开发

2020-04-21刘俊杰丁厶琦林东民

无线互联科技 2020年5期
关键词:摄像头

刘俊杰 丁厶琦 林东民

摘   要:在深入分析和研究体感游戏的关键特征与Flash AS编程技术的基础上,文章设计并开发了一个基于摄像头感测的体感游戏。利用Flash绘图功能实现游戏的界面设计,利用Flash AS编程技术完成游戏功能的实现,包括摄像头获取用户肢体动作、碰撞检测、计分功能和退出机制。在游戏的过程中,用户可以摆脱鼠标、手柄和键盘的限制,通过自己的肢体动作来操作游戏,身临其境地与游戏内容互动。

关键词:Flash动作脚本语言;摄像头;体感游戏

随着科学技术的发展,用户对游戏操作的要求越来越高。为了提高用户体验,具有高度互动性的体感游戏应运而生[1],并且越来越受到人们的关注。传统的游戏是通过鼠标、手柄或者键盘来进行操作,而体感游戏则是通过用户的肢体动作与游戏内容互动,突破了传统的交互方式。其中,基于摄像头感测的体感游戏是随着图形图像技术的发展而产生的一种新的游戏形式,其实现方法是通过摄像头捕获用户的肢体动作来完成游戏的体感控制,摆脱了传统交互方式的限制,给游戏者以全新的互动体验。对用户来说,基于摄像头感测的体感游戏不仅提高了游戏中交互的自然性与高效性,还极大地提高了游戏的沉浸感。另外,在一些体感游戏中,对硬件的要求比较高,有的通过高科技的摄像头来实现体感控制;有的通过头戴式显示器或者手持式显示器来实现体感控制。本游戏无须特殊的硬件支持,用户通过普通的电脑和摄像头即可进行游戏操作,极大地降低了体感游戏对硬件的依赖。

1    功能需求分析

本游戏在交互功能的实现和交互规则的建立方面具有创新性,突破了传统游戏的交互方式的限制,让用户通过肢体动作就可以完成游戏的各种操作。即只需要普通的摄像头与Flash AS编程技术结合,无须安装特殊硬件,就可以实现获取用户肢体动作、游戏角色与障碍物的碰撞检测、游戏计分、退出游戏等诸多功能。具体来说,本系统需要完成以下几项功能:(1)用户端零部署安装,只需要普通电脑和摄像头,就可以进行游戏。(2)游戏能够稳定运行,操作简便。(3)用户在摄像头前挥动双手,控制游戲角色的移动。(4)游戏角色每通过一个障碍物得1分,以此累计直到游戏结束。(5)游戏角色碰到障碍物或超出游戏界面,则游戏结束。(6)游戏结束后,在屏幕上显示游戏得分与历史游戏最高分。

2    系统结构与工作流程

2.1  系统结构

本游戏主要由用户界面和动作脚本两部分组成。使用Flash CS6的绘图功能完成用户界面的设计,用户界面主要将游戏中所有的功能模块集合起来,对各个功能模块进行调度和显示;使用Flash CS6自带的动作脚本语言ActionScript3.0实现摄像头捕获用户的肢体动作,实现用户肢体动作和游戏角色之间的交互,实现对游戏角色移动的控制,同时实现用户界面和后台数据之间的通信,实现游戏进程与交互结果的实时刷新。系统结构与功能模块分布如图1所示。

2.2  工作流程

本游戏通过普通摄像头获取用户的肢体动作,对玩家的肢体动作进行识别,并将其转化为对游戏角色的实际控制数据,从而控制游戏角色进行相应的操作。根据游戏规则来判断游戏是否结束,同时不断刷新游戏障碍物直到游戏结束。游戏具体工作流程如图2所示。

3    系统实现的技术与原理

3.1  摄像头获取用户肢体动作

摄像头获取用户肢体动作部分通过使用Flash AS文件实现摄像头和用户肢体动作的交互,对于摄像头的视频运动检测等相关处理都在游戏内部实现[2]。主要思路是使用Camera类实现对摄像头图像的捕获,Camera.get()方法返回对于捕获视频的Camera对象的引用[3]。然后创建一个video对象,将实例对象_camera附加到Video上。

var _camera:Camera;

Camera = Camera.get();

var _video:Video;

_video.attachVideo(_camera);

3.2  实现碰撞检测

实现碰撞检测部分通过变量gdsprite.numChildren获取游戏界面上的障碍物,利用Flash CS6内置的hitTestObject() 函数比较游戏角色与屏幕上所有障碍物实例的边框,检测是否发生碰撞。如果发生碰撞,返回true值,调用lost()函数退出游戏。关键代码如下:

for(var i1=0;i1

if(mc1.hitTestObject(gdsprite.getChildAt(i1))) {

lost();

return; }  }

3.3  游戏计分功能

比较游戏角色与障碍物的位置坐标X,即通过1个障碍物,游戏得1分。关键代码如下:

for(var i2=0;i2

if(mc1.x > gdsprite.getChildAt(i2).x + gdsprite.x ) {

scores ++;  } }

3.4  游戏退出机制

本游戏有两种退出机制:第一种是游戏角色与障碍物发生碰撞,通过调用lost()函数退出游戏;第二种是游戏角色移动出游戏界面上下边界,同样调用lost()函数退出游戏。关键代码如下:

if(mc1.y<17||mc1.y>=390) {

lost();

return;  }

4    結语

体感游戏摆脱了传统交互方式的束缚,让用户可以身临其境,与游戏内容互动,提高了用户在游戏过程中的参与度,增强了人机之间的交互性;能让用户在较低的硬件环境下,实现传统游戏无法实现的游戏效果,体验到前所未有的游戏快感[4]。本文运用Flash内置的Camera类对用户肢体动作进行捕获,利用Flash AS脚本文件实现交互,从而开发了一款简单有趣的躲避障碍物的体感游戏,其操作方法简单,不需要安装特殊的硬件设备,可以直接进行人机互动,游戏的操作性能基本满足用户的游戏需求。

[参考文献]

[1]周书贤.在线开放课程中视频答疑模块的设计与实现[J].无线互联科技,2016(6):71-72.

[2]杜丙新.基于摄像头的交互式教育游戏设计研究[J].电化教育研究,2016(7):74-81.

[3]余亮,高峰.Flash摄像头游戏课件设计与开发[J].现代教育技术,2008(1):107-111.

[4]张英烈,夏梦,陈临强.基于视频跟踪的体感游戏设计[J].计算机工程与应用,2015(17):44-47.

Design and implementation of somatosensory games based on camera sensing

Liu Junjie, Ding Siqi, Lin Dongmin

(School of Educational Science and Technology, Nanjing University of Posts and Telecommunications, Nanjing 210023, China)

Abstract:On the basis of further analysis and research on the key features of somatosensory games and Flash AS programming technology, this paper designs and develops a somatosensory game based on camera sensing. Flash drawing function is used to design the interface of the game, and Flash AS programming technology is used to complete the realization of game functions, including camera acquisition of user body movements, collision detection, scoring function and exit mechanism. During the game, users can get rid of the restrictions of mouse, gamepad and keyboard, operate the game through their body movements, and interact with the game content immersively.

Key words:f lash actionscript; camera; somatosensory game

猜你喜欢

摄像头
我起不来呀
浙江首试公路非现场执法新型摄像头
摄像头连接器可提供360°视角图像
特斯拉已激活车载摄像头 驾驶员将被Autopilot监控
基于太赫兹技术的新一代摄像头及其在安防领域的应用探讨
PowerEye无人机
一种电脑专用摄像头
无法开启摄像头的解决方案
购买摄像头的经验
找出摄像头花屏的“罪魁祸首”