一种2d游戏的碰撞检测方法和装置的制造方法
【技术领域】
[0001]本发明涉及图像检测的技术领域,特别是涉及一种2D游戏的碰撞检测方法和一种2D游戏的碰撞检测装置。
【背景技术】
[0002]2D游戏即二维游戏,可以根据用户的需求而进行互动。
[0003]在2D游戏中,一般存在模拟重力和阻挡物的存在,而在游戏中的业务对象,例如人物、飞机、宠物、道具物品等,受到用户的操作控制,需要实现业务对象在地面上行走、掉落、不可通过地形的阻挡等移动,或者,需要实现诸如射击类游戏中的子弹等道具物品飞行、命中等动作,经常在游戏中发生碰撞。
[0004]因此,在2D游戏中需要进行碰撞检测,戏检测出游戏中的业务对象是否发生碰撞,防止发生业务对象穿墙而过等与现实不符的情况发生。
[0005]常见的碰撞检测方法是flash自带的检测方法,动态地检测两个业务对象是否重叠来进行是否发生碰撞的检测。具体地,通过判断两个业务对象(例如人物的显示对象)之间,是否有像素点的重叠,如果有,则判断这两个业务对象发生碰撞,如果没有,则判断这两个业务对象没有发生碰撞。
[0006]但是,flash自带的检测方法计算量大,计算时间长,尤其是射击类游中需要频繁进行检测,占据了诸如CPU、内存等大量的系统资源。
[0007]而当2D游戏为网页游戏时,2D游戏的客户端为浏览器,限制于浏览器的性能,flash自带的检测方法会使得游戏运行不畅,更有可能引起浏览器的崩溃,用户体验十分差。
[0008]因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种2D游戏的碰撞检测机制,在保证准确度的同时,减少计算量,减少计算时间,降低系统资源的占用,提升用户体验。
【发明内容】
[0009]本发明实施例所要解决的技术问题是提供一种2D游戏的碰撞检测方法,在保证准确度的同时,减少计算量,减少计算时间,降低系统资源的占用,提升用户体验。
[0010]相应的,本发明实施例还提供了一种2D游戏的碰撞检测装置,用以保证上述方法的实现及应用。
[0011]为了解决上述问题,本发明公开了一种2D游戏的碰撞检测方法,所述2D游戏的地图划分成一个或多个指定几何形状的地图格子,所述的方法包括:
[0012]将待检测的第一业务对象转换为匹配的一个或多个目标格子;所述目标格子与所述地图格子的大小相同;
[0013]在所述目标格子上选取一个或多个检测点;
[0014]依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞。
[0015]优选地,所述地图格子包括以下的至少一种:
[0016]阻挡格子、非阻挡格子、斜坡格子;其中,
[0017]所述阻挡格子为水平方向和竖直方向为阻挡属性的格子;
[0018]所述非阻挡格子为水平方向和竖直方向为通行属性的格子;
[0019]所述斜坡给子为水平方向为通行属性、竖直方向为阻挡属性的格子。
[0020]优选地,当所述目标格子为矩形时,所述检测点包括特征格子四个角对应的像素点之间,在水平方向上任意一个像素点,在竖直方向上指定的像素点;其中,所述特征格子为所述目标格子组成的格子。
[0021]优选地,所述依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞的步骤包括:
[0022]当所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
[0023]和/ 或,
[0024]当所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为非阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞;
[0025]和/ 或,
[0026]当所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
[0027]和/ 或,
[0028]当所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为非阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞。
[0029]优选地,在所述判定所述第一业务对象与所述地图格子对应第二业务对象发生碰撞的步骤之后,所述的方法还包括:
[0030]在所述第一业务对象的移动方向上模拟对应的碰撞事件;
[0031]和/ 或,
[0032]在所述判定所述第一业务对象与所述地图格子对应第二业务对象未发生碰撞的步骤之后,所述的方法还包括:
[0033]在所述第一业务对象的移动方向上模拟对应的移动事件。
[0034]优选地,所述在所述第一业务对象的移动方向上模拟对应的通行事件的步骤包括:
[0035]当所述第一业务对象在斜坡格子上时,采用所述第一业务对象在水平方向上的移动速度和所述斜坡格子的预置斜率,计算所述第一业务对象在竖直方向上的移动速度;
[0036]采用所述水平方向上的移动速度和所述竖直方向上的移动速度,模拟所述第一业务对象在所述斜坡格子上的移动事件。
[0037]本发明实施例还公开了一种2D游戏的碰撞检测装置,所述2D游戏的地图划分成一个或多个指定几何形状的地图格子,所述的装置包括:
[0038]模型转换模块,用于将待检测的第一业务对象转换为匹配的一个或多个目标格子;所述目标格子与所述地图格子的大小相同;
[0039]检测点选取模块,用于在所述目标格子上选取一个或多个检测点;
[0040]碰撞检测模块,用于依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞。
[0041]优选地,所述地图格子包括以下的至少一种:
[0042]阻挡格子、非阻挡格子、斜坡格子;其中,
[0043]所述阻挡格子为水平方向和竖直方向为阻挡属性的格子;
[0044]所述非阻挡格子为水平方向和竖直方向为通行属性的格子;
[0045]所述斜坡给子为水平方向为通行属性、竖直方向为阻挡属性的格子。
[0046]优选地,当所述目标格子为矩形时,所述检测点包括特征格子四个角对应的像素点之间,在水平方向上任意一个像素点,在竖直方向上指定的像素点;其中,所述特征格子为所述目标格子组成的格子。
[0047]优选地,所述碰撞检测模块包括:
[0048]第一判定子模块,用于在所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
[0049]和/ 或,
[0050]第二判定子模块,用于在所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为非阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞;
[0051]和/ 或,
[0052]第三判定子模块,用于在所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
[0053]和/ 或,
[0054]第四判定子模块,用于在所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为非阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞。
[0055]优选地,还包括:
[0056]碰撞事件模拟模块,用于在所述第一业务对象的移动方向上模拟对应的碰撞事件;
[0057]和/ 或,
[0058]移动事件模拟模块,用于在所述第一业务对象的移动方向上模拟对应的移动事件。
[0059]优选地,所述移动事件模拟模块包括:
[0060]竖直移动速度计算子模块,用于在所述第一业务对象在斜坡格子上时,采用所述第一业务对象在水平方向上的移动速度和所述斜坡格子的预置斜率,计算所述第一业务对象在竖直方向上的移动速度;
[0061]斜坡移动事件模拟子模块,用于采用所述水平方向上的移动速度和所述竖直方向上的移动速度,模拟所述第一业务对象在所述斜坡格子上的移动事件。
[0062]与【背景技术】相比,本发明实施例包括以下优点:
[0063]本发明实施例预先将地图化简成一个或多个指定几何形状的地图格子,在碰撞检测时