Flash游戏中碰撞检测方法的与实现

时间:2024-01-09 点赞:50391 浏览:102037 作者原创标记本站原创

本文是一篇物体论文范文,物体方面毕业论文参考文献格式,关于Flash游戏中碰撞检测方法的与实现相关大学毕业论文范文。适合物体及算法及信息技术方面的的大学硕士和本科毕业论文以及物体相关开题报告范文和职称论文写作参考文献资料下载。

摘 要:论文对Flash游戏、碰撞检测算法进行了介绍,并研究了如何在Flash中实现碰撞检测的两种方法,一种是采用Flashaction提供的hitTest方法,另一种是采用经典的空间剖分方法,并进行了实验以验证两种方法.

关 键 词:碰撞检测;hitTest;空间剖分法,Flash

中图分类号:TP399文献标识码:A文章编号:1009-3044(2012)10-2369-03

TheCollisionDetectionMethodResearchandRealizationinFlashGame

LILi-hua,LULing,ZHANGLi-lei

(EastChinaInstituteofTechnology,InformationEngineeringCollege,Fuzhou344000,China)

Abstract:ThisarticleintroducedontheFlashgame,collisiondetectionalgorithm,andstudytwokindsofmethodsonhowtoachievethecollisiondetectioninFlash,thefirstisusingthehitTestmethodinFlashaction,andanotheristheclassicspacepartitionmethod,atlastgivingtheexperimentstovalidatethetwomethods.

Keywords:collisiondetection,hitTest,spatialdepositionmethod,,Flash

1Flash游戏现状

随着网络技术的发展、计算机动画技术条件的日趋成熟,网络动画得到了蓬勃的发展,其中以Flash动画的发展尤为迅速.Flash软件不仅可以实现多种动画特效、它在游戏方面的设计与制作的优点更是很突出.利用Flash的动画技术制作的游戏容量非常小,在网络

上非常容易传播,再加上强大的ActionScript能够制作出可玩性很强的小游戏[1].

Flash游戏也和采用其他技术制作的游戏一样,需要对游戏中角色进行控制,在角色进行移动的过程中,角色与角色,角色与物体之间可能会发生碰撞,该文所要研究的就是在Flash游戏中,在各个元素在移动的过程中,检测可能发生的碰撞,以避免角色与角色,物体与物体,角色与物体之间的穿透现象的发生.

2碰撞检测算法简介

碰撞检测问题来源于现实生活中一个普遍存在的事实:两个不可穿透的对象不可能共享相同的空间区域.碰撞检测算法从时间域的角度,可分为静态碰撞检测算法、离散碰撞检测算法和连续碰撞检测算法三类,从空间域的角度,可以分为基于实体空间的碰撞检测算法和基于图像空间的碰撞检测算法[2].

对于基于实体空间的算法,根据所表示实体的模型不同又可以分为两类:空间剖分法和层次包围盒法.这两种算法都是通过最大限度地减少需要进行相交测试的物体对或基本几何元素对的数目来加速碰撞检测的过程[3].空间剖分法,根据剖分方法的不同可分为均匀剖分、八叉树、BSP树等,层次包围盒法可以分为包围球(sphere)、轴向包围盒(AABB)、方向包围盒(oBB)、离散方向多面体(k-dop)等.


目前,存在的碰撞检测算法种类繁多,应该根据具体的需求,选用不同的技术.因为随着应用场合的改变,对实时性、精确性和完整性的要求也会随之改变.对于具体技术的选择除了要考虑到算法本身的复杂性、可靠性和效率外,还需要考虑到不同算法的特点和所面向的对象.

该文所要研究的是在Flash小游戏中实现碰撞检测的方法.

3Flash游戏简单碰撞检测

当Flash场景中的角色与物体都不是很多时,可以采用把物体与角色所对应的元件实例两两依次进行碰撞检测,实际的实现可以采用hitTest方法来实现[4].

3.1hitTest方法实现碰撞检测

hitTest是用来检测两个物体或目标是否重叠和相交,如果相交或重叠,就执行相应的动作.如果发生相交则返回true,否则返回false.

hitTest方法有两种用法:1)与某点相交的情况,语法格式如下:MC.hitTest(x,y,true或false),这种情况下用于检测MC是否与括号中的x,y所确定的点(x,y)相交.第三个参数如果取值为true,那么将根据MC这个元件实例的实际图形范围进行碰撞检测,如果取值为false则通过MC的外框检测是否与(x,y)相交.

图1hitTest方法

以图1为例,假设该不规则多边形的元件实例名为MC,则MC.hitTest(200,100,true)将会检测此多边形所绘制的区域是否与点(200,100)发生碰撞,此时返回值为false,而采用MC.hitTest(200,100,false)则是检测改元件的外框即图中蓝色线所标志的区域是否与点(200,100)发生碰撞,此时的返回值为true.

2)元件实例与元件实例间的相交:MC.hitTest(另一MC)..其中MC是指一个元件实例的名称.如果其返回值为true,说明两个元件实例间发生了碰撞,如果返回值为False,说明两个元件实例没有发生碰撞.

假设主舞台上有两个小球元件,实例名分别为mca和mcb,要检测这两个元件之间是否发生了碰撞,则可以采用以下方式实现:

if(_root.mca.hitTest(_root.mcb))

{//发生碰撞后的处理代码

}

图2两个元件之间的碰撞检测

如图2所示,第一组小球中,两个元件实例的外框发生了交叉,所以两个元件实例发生了碰撞,则_root.mca.hitTest(_root.mcb)的返回值为true,第二组小球中,两个元件实例之间的外框没有发生交叉,所以两个元件实例没有发生碰撞,则_root.mca.hitTest(_root.mcb)的返回值为false.

3.2Flash游戏中空间剖分法碰撞检测算法的设计与实现

1)空间剖分法原理:把整个空间分成不同的区域,然后根据物体所在区域的信息来确定物体之间是否可能会发生碰撞.最普遍应用的一种就是空间均匀剖分法.

2)Flash中地图的划分:采用均匀剖分法把整个Flash场景的地图进行划分.采用二维数组存储地图的初始信息,包含一些不动的物体的初始的存放位置信息.

图3地图的初始化

如图所示的这种情况,可以让声明一个名称为ditu的数组,保存初始的地图信息值如下

[0,0,0,0,0]

[1,0,0,1,0]

[0,0,0,0,0]

[0,0,1,0,0]

这样就把地图采用空间剖分法分成了很多小块.

3)算法的实现:首先保存可能会运动的物体的初始位置信息,随着物体的运动,随时刷新地图的信息,如果同一块地图上出现了两个物体,那么说明此时发生了碰撞.然后再对碰撞进行处理.这样就不需要对场景上所有的物体进行一一成对的检测了.

假设地图上有物体A和B,如图4a)所示.

a)初始情况

b)物体发生了运动的情况

图4有可运动物体的地图

此时可刷新ditu数组的信息为:

[0,0,0,0,0]

[1,0,0,1,0]

[0,0,0,0,1]

[1,0,1,0,0]

A、B物体发生运动后,其位置信息会发生改变,随着位置的改变,同时刷新ditu数组的信息.如图4b)所示

[0,0,0,0,0]

[1,0,0,2,0]

[0,1,0,0,1]

[0,0,1,0,0]

当检测到数组中有一个元素的值为2时,说明发生了碰撞,如图4b)所示,B物体与初始地图上的物体发生了碰撞,此时可以让物体B退到原来的位置以进行后续处理.

4结束语

Flash游戏一开始是作为对大型网游和小型联网休闲游戏的补充而占据了一席之地.在Flash游戏发展尤为迅速的现代,Flash游戏中对碰撞的检测方法和处理方法的研究具有一定的实际意义,在以后的研究中,可以考虑将更多的经典碰撞检测算法应用到Flash游戏中并根据实际情况对其分析改进.

相关论文

梅毒血清学检测方法比较临床应用

本文是一篇梅毒论文范文,梅毒类有关在职毕业论文开题报告,关于梅毒血清学检测方法比较临床应用相关毕业论文的格式范文。适合梅毒及参考文献。

关于计算机软件安全检测方法的讨

本文是一篇计算机软件论文范文,关于计算机软件本科论文开题报告,关于关于计算机软件安全检测方法的讨相关毕业论文格式范文。适合计算机软件。

钢筋的物理检测方法

本文是一篇电化学论文范文,电化学类在职毕业论文开题报告,关于钢筋的物理检测方法相关毕业论文格式模板范文。适合电化学及钢筋及金属材料方。

地铁弓网关系检测方法运用

本文是一篇接触网论文范文,接触网类有关毕业论文提纲,关于地铁弓网关系检测方法运用相关毕业论文开题报告范文。适合接触网及电力机车及网关。

不同检测方法对尿液检测结果的影响

本论文为尿液相关如何写论文摘要,关于不同检测方法对尿液检测结果的影响相关学士学位论文,可用于尿液论文写作研究的大学硕士与本科毕业论。

路基路面压实度检测方法影响因素的

本文关于路基施工及参考文献及路基方面的免费优秀学术论文范文,关于路基施工论文范本,与路基路面压实度检测方法影响因素的相关研究生毕业。

甲醛的检测方法

本文是一篇甲醛论文范文,甲醛类函授毕业论文,关于甲醛的检测方法相关函授毕业论文范文。适合甲醛及纺织品及方法方面的的大学硕士和本科毕业。

建筑节能材料检测方法

本文是一篇建筑节能论文范文,建筑节能相关自考毕业论文开题报告,关于建筑节能材料检测方法相关毕业论文提纲范文。适合建筑节能及建筑节能材。