CN104941180B - 一种2d游戏的碰撞检测方法和装置 - Google Patents
一种2d游戏的碰撞检测方法和装置 Download PDFInfo
- Publication number
- CN104941180B CN104941180B CN201410126675.0A CN201410126675A CN104941180B CN 104941180 B CN104941180 B CN 104941180B CN 201410126675 A CN201410126675 A CN 201410126675A CN 104941180 B CN104941180 B CN 104941180B
- Authority
- CN
- China
- Prior art keywords
- grid
- business object
- map
- slope
- blocking
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明实施例提供了一种2D游戏的碰撞检测方法和装置,所述2D游戏的地图划分成一个或多个指定几何形状的地图格子,所述的方法包括:将待检测的第一业务对象转换为匹配的一个或多个目标格子;所述目标格子与所述地图格子的大小相同;在所述目标格子上选取一个或多个检测点;依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞。本发明实施例地图与第一业务对象的化简减少了进行碰撞检测的检测点,进而减少计算量,在保证碰撞检测准确度的同时,大大降低了系统资源的消耗,提高了游戏的运行效率,提高了用户体验。
Description
技术领域
本发明涉及图像检测的技术领域,特别是涉及一种2D游戏的碰撞检测方法和一种2D游戏的碰撞检测装置。
背景技术
2D游戏即二维游戏,可以根据用户的需求而进行互动。
在2D游戏中,一般存在模拟重力和阻挡物的存在,而在游戏中的业务对象,例如人物、飞机、宠物、道具物品等,受到用户的操作控制,需要实现业务对象在地面上行走、掉落、不可通过地形的阻挡等移动,或者,需要实现诸如射击类游戏中的子弹等道具物品飞行、命中等动作,经常在游戏中发生碰撞。
因此,在2D游戏中需要进行碰撞检测,戏检测出游戏中的业务对象是否发生碰撞,防止发生业务对象穿墙而过等与现实不符的情况发生。
常见的碰撞检测方法是flash自带的检测方法,动态地检测两个业务对象是否重叠来进行是否发生碰撞的检测。具体地,通过判断两个业务对象(例如人物的显示对象)之间,是否有像素点的重叠,如果有,则判断这两个业务对象发生碰撞,如果没有,则判断这两个业务对象没有发生碰撞。
但是,flash自带的检测方法计算量大,计算时间长,尤其是射击类游中需要频繁进行检测,占据了诸如CPU、内存等大量的系统资源。
而当2D游戏为网页游戏时,2D游戏的客户端为浏览器,限制于浏览器的性能,flash自带的检测方法会使得游戏运行不畅,更有可能引起浏览器的崩溃,用户体验十分差。
因此,目前需要本领域技术人员迫切解决的一个技术问题就是:提出一种2D游戏的碰撞检测机制,在保证准确度的同时,减少计算量,减少计算时间,降低系统资源的占用,提升用户体验。
发明内容
本发明实施例所要解决的技术问题是提供一种2D游戏的碰撞检测方法,在保证准确度的同时,减少计算量,减少计算时间,降低系统资源的占用,提升用户体验。
相应的,本发明实施例还提供了一种2D游戏的碰撞检测装置,用以保证上述方法的实现及应用。
为了解决上述问题,本发明公开了一种2D游戏的碰撞检测方法,所述2D游戏的地图划分成一个或多个指定几何形状的地图格子,所述的方法包括:
将待检测的第一业务对象转换为匹配的一个或多个目标格子;所述目标格子与所述地图格子的大小相同;
在所述目标格子上选取一个或多个检测点;
依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞。
优选地,所述地图格子包括以下的至少一种:
阻挡格子、非阻挡格子、斜坡格子;其中,
所述阻挡格子为水平方向和竖直方向为阻挡属性的格子;
所述非阻挡格子为水平方向和竖直方向为通行属性的格子;
所述斜坡给子为水平方向为通行属性、竖直方向为阻挡属性的格子。
优选地,当所述目标格子为矩形时,所述检测点包括特征格子四个角对应的像素点之间,在水平方向上任意一个像素点,在竖直方向上指定的像素点;其中,所述特征格子为所述目标格子组成的格子。
优选地,所述依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞的步骤包括:
当所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
当所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为非阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞;
和/或,
当所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
当所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为非阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞。
优选地,在所述判定所述第一业务对象与所述地图格子对应第二业务对象发生碰撞的步骤之后,所述的方法还包括:
在所述第一业务对象的移动方向上模拟对应的碰撞事件;
和/或,
在所述判定所述第一业务对象与所述地图格子对应第二业务对象未发生碰撞的步骤之后,所述的方法还包括:
在所述第一业务对象的移动方向上模拟对应的移动事件。
优选地,所述在所述第一业务对象的移动方向上模拟对应的通行事件的步骤包括:
当所述第一业务对象在斜坡格子上时,采用所述第一业务对象在水平方向上的移动速度和所述斜坡格子的预置斜率,计算所述第一业务对象在竖直方向上的移动速度;
采用所述水平方向上的移动速度和所述竖直方向上的移动速度,模拟所述第一业务对象在所述斜坡格子上的移动事件。
本发明实施例还公开了一种2D游戏的碰撞检测装置,所述2D游戏的地图划分成一个或多个指定几何形状的地图格子,所述的装置包括:
模型转换模块,用于将待检测的第一业务对象转换为匹配的一个或多个目标格子;所述目标格子与所述地图格子的大小相同;
检测点选取模块,用于在所述目标格子上选取一个或多个检测点;
碰撞检测模块,用于依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞。
优选地,所述地图格子包括以下的至少一种:
阻挡格子、非阻挡格子、斜坡格子;其中,
所述阻挡格子为水平方向和竖直方向为阻挡属性的格子;
所述非阻挡格子为水平方向和竖直方向为通行属性的格子;
所述斜坡给子为水平方向为通行属性、竖直方向为阻挡属性的格子。
优选地,当所述目标格子为矩形时,所述检测点包括特征格子四个角对应的像素点之间,在水平方向上任意一个像素点,在竖直方向上指定的像素点;其中,所述特征格子为所述目标格子组成的格子。
优选地,所述碰撞检测模块包括:
第一判定子模块,用于在所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
第二判定子模块,用于在所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为非阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞;
和/或,
第三判定子模块,用于在所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
第四判定子模块,用于在所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为非阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞。
优选地,还包括:
碰撞事件模拟模块,用于在所述第一业务对象的移动方向上模拟对应的碰撞事件;
和/或,
移动事件模拟模块,用于在所述第一业务对象的移动方向上模拟对应的移动事件。
优选地,所述移动事件模拟模块包括:
竖直移动速度计算子模块,用于在所述第一业务对象在斜坡格子上时,采用所述第一业务对象在水平方向上的移动速度和所述斜坡格子的预置斜率,计算所述第一业务对象在竖直方向上的移动速度;
斜坡移动事件模拟子模块,用于采用所述水平方向上的移动速度和所述竖直方向上的移动速度,模拟所述第一业务对象在所述斜坡格子上的移动事件。
与背景技术相比,本发明实施例包括以下优点:
本发明实施例预先将地图化简成一个或多个指定几何形状的地图格子,在碰撞检测时将待检测的第一业务对象进行化简,转换为匹配的一个或多个目标格子,在目标格子上选取一个或多个检测点,再依据检测点和地图格子判断第一业务对象在移动方向上是否与地图格子对应上的第二业务对象发生碰撞,地图与第一业务对象的化简减少了进行碰撞检测的检测点,进而减少计算量,在保证碰撞检测准确度的同时,大大降低了系统资源的消耗,提高了游戏的运行效率,提高了用户体验。
本发明实施例在碰撞检测的基础之上模拟对应的碰撞事件和/或移动事件,由于碰撞检测的系统资源消耗减少,可以加快碰撞事件和/或移动事件的响应速度,进一步提高了游戏的运行效率。
本发明实施例在斜坡格子上模拟移动事件时,分解成水平方向和竖直方向的移动,更加贴近斜坡格子对应第二业务对象的特性,提高了模拟移动时间的准确率。
附图说明
图1是本发明的一种2D游戏的碰撞检测方法实施例的步骤流程图;
图2是本发明的一种地图格子的示例图;
图3是本发明的一种地图格子的标识示例图;
图4是本发明的一种第一业务对象的转换示例图;
图5是本发明的一种碰撞检测示例图;
图6是本发明的一种在斜坡格子上的模拟移动事件的示例图;
图7是本发明的一种2D游戏的碰撞检测装置实施例的结构框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
参照图1,示出了本发明的一种2D游戏的碰撞检测方法实施例的步骤流程图,所述2D游戏的地图可以划分成一个或多个指定几何形状的地图格子;
应用本发明实施例,可以在2D游戏的地图编辑过程中,根据实际需要,将地图划分成一个或多个指定几何形状的地图格子,每个地图格子由多个像素组成,具体可以为矩形(包括正方形、长方形)、菱形、圆形、三角形等等,本发明实施例对此不加以限制。例如,可以将2D游戏的地图划分为一个或多个20*20(像素)的地图格子。
在具体实现中,所述地图格子可以包括以下的至少一种:
阻挡格子、非阻挡格子、斜坡格子;其中,
所述阻挡格子为水平方向和竖直方向为阻挡属性的格子;
所述非阻挡格子为水平方向和竖直方向为通行属性的格子;
所述斜坡给子为水平方向为通行属性、竖直方向为阻挡属性的格子。
当遇到阻挡格子时,水平方向和竖直方向存在阻挡,不允许通行;当遇到非阻挡格子时,水平方向和竖直方向不存在阻挡,允许通行;当遇到斜坡时,水平方向不存在阻挡,允许通行,竖直方向存在阻挡,不允许通行。
在2D游戏的地图编辑过程中,可以将地面、墙壁、箱子等阻挡物划分为阻挡格子,可以将斜坡、楼梯、拱桥等倾斜的业务对象划分为斜坡格子,剩下的可以划分为非阻挡格子。
例如,参见图2,示出了本发明的一种地图格子的示例图。其中,黑色的格子可以代表阻挡格子,白色的格子可以代表非阻挡格子,一半白色一半黑色的格子可以代表斜坡格子。
在实际应用中,可以采用任意字符串对地图格子进行标识,使得2D游戏的地图可以转化为二维数组。
例如,参见图3,示出了本发明的一种地图格子的标识示例图。其中,1可以代表阻挡格子,2可以代表斜坡格子,3可以代表非阻挡格子。
所述的方法可以包括如下步骤:
步骤101,将待检测的第一业务对象转换为匹配的一个或多个目标格子;所述目标格子与所述地图格子的大小可以相同;
需要说明的是,2D游戏即二维游戏,可以根据用户的需求而进行互动,包括横版2D游戏(即游戏画面固定在水平方向上),也可以包括竖版2D游戏(即游戏画面固定在竖直方向上)。
第一业务对象为受用户的操作信息控制的对象,可以为人物、动物、机械等等,不同类型的游戏可以具有不同的业务对象,本发明实施例对此不加以限制。
在碰撞检测的过程中,首先需要对第一业务对象进行化简。具体地,可以将第一业务对象转换为与其轮廓大小相匹配的一个或多个目标格子。
例如,参见图4,示出了本发明的一种目标格子的转换示例图。在图3所示的示例中,将人物转化为2*3个目标格子(水平方向2个目标格子,竖直方向3个目标格子),分别为“ABHG”、“BCIH”、“GHOM”、“HINO”、“MOED”和“ONFE”,分别对应人物的头部、胸部、腿部三个不同位置,在碰撞检测中可以实现人物的头部、胸部、腿部的碰撞检测,进一步模拟不同的碰撞事件。
需要说明的是,不同业务对象的轮廓不同,转换的目标格子的数量及其组成形式也会不同。例如,人物可以转换为2*3个目标格子,坦克可以转换为3*2个目标格子,宠物可以转换为1*1个目标格子,等等。
步骤102,在所述目标格子上选取一个或多个检测点;
检测点的实质可以为组成目标格子的像素点,用于对第一业务对象进行碰撞检测。
在本发明的一种优选实施例中,当所述目标格子为矩形时,所述检测点可以包括特征格子四个角对应的像素点之间,在水平方向上任意一个像素点,在竖直方向上指定的像素点;其中,所述特征格子可以为所述目标格子组成的格子。
例如,在图4所示的人物转换成的2*3个目标格子中,ACFD为特征格子,其四个角对应的像素点分别为点A、C、F、D。在水平方向上,点A和点D之间的任意像素点可以被选取为检测点,点C和点F之间的任意像素点可以被选取为检测点。在竖直方向上,点A和点C之间的点B及其预设范围之内的像素点可以被选取为检测点,点D和点F之间的点E及其预设范围之内的像素点可以被选取为检测点。
需要说明的是,水平方向上的检测点可以为一个或多个,竖直方向上的检测点可以仅为一个。而竖直方向上的检测点根据第一业务对象的轮廓不同而具有不同的选取范围,例如人物的轮廓为对称图形,可以选取特征格子上下边中点及其预设范围之内的像素点作为检测点,又例如坦克的轮廓不为对称图形,可以选取炮塔中点对应的像素点及其预设范围之内的像素点作为检测点。
步骤103,依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞。
在具体实现中,可以将第一业务对象和第二业务对象的碰撞检测化简为检测点与地图格子的位置检测。
在本发明的一种优选实施例中,步骤103可以包括如下子步骤:
子步骤S11,当所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
在具体实现中,在水平方向的移动方向可以包括水平向左移动和/或水平向右移动。当水平向左移动时,可以采用目标格子最左侧的检测点作为当前检测点进行碰撞检测;当水平向右移动时,可以采用目标格子最右侧的检测点作为当前检测点进行碰撞检测。
例如,如图5所示的第一业务对象,在水平向右移动时,最右侧HF之间的检测点所处的地图格子为1,即阻挡格子,即判定第一业务对象与地图格子1对应第二业务对象发生碰撞,不允许第一业务对象水平向右移动。
和/或,
子步骤S12,当所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为非阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞;
例如,如图5所示的第一业务对象,在水平向左移动时,最左侧AD之间的检测点当前的地图格子都为3,即非阻挡格子,即判定第一业务对象与地图格子3对应的第二业务对象未发生碰撞,允许第一业务对象水平向左移动。
和/或,
子步骤S13,当所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
在具体实现中,在竖直方向的移动方向可以包括竖直向上移动和/或竖直向下移动。当竖直向上移动时,可以采用目标格子最上侧的检测点作为当前检测点进行碰撞检测;当竖直向下移动时,可以采用目标格子最下侧的检测点作为当前检测点进行碰撞检测。
例如,如图5所示的第一业务对象,在竖直向下移动时,最下侧的检测点E所处的地图格子为1,即阻挡格子,即判定第一业务对象与地图格子1对应第二业务对象发生碰撞,不允许第一业务对象竖直向下移动。
和/或,
子步骤S14,当所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为非阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞。
例如,如图5所示的第一业务对象,在竖直向上移动时,最上侧的检测点B所处的地图格子为3,即非阻挡格子,即判定第一业务对象与地图格子3对应第二业务对象未发生碰撞,允许第一业务对象竖直向上移动。
需要说明的是,本发明实施例中,子步骤S11-S14可以选取任意一个、两个、三个或者四个,以任意顺序进行组合。
本发明实施例预先将地图化简成一个或多个指定几何形状的地图格子,在碰撞检测时将待检测的第一业务对象进行化简,转换为匹配的一个或多个目标格子,在目标格子上选取一个或多个检测点,再依据检测点和地图格子判断第一业务对象在移动方向上是否与地图格子对应上的第二业务对象发生碰撞,地图与第一业务对象的化简减少了进行碰撞检测的检测点,进而减少计算量,在保证碰撞检测准确度的同时,大大降低了系统资源的消耗,提高了游戏的运行效率,提高了用户体验。
在本发明的一种优选实施例中,在子步骤S11和/或子步骤S13之后,所述的方法还可以包括如下步骤:
步骤104,在所述第一业务对象的移动方向上模拟对应的碰撞事件;
在具体实现中,不同的第一业务对象与第二业务对象可以对应不同的碰撞事件。例如,在水平方向上墙壁、箱子等阻碍物阻挡人物移动,或者,石头等障碍物与人物发生碰撞;在竖直方向上,地面支撑人物,或者,人物向上跳与障碍物发生碰撞,或者,在下跳后落地,等等。
在本发明的一种优选实施例中,在子步骤S12和/或子步骤S14之后,所述的方法还可以包括如下步骤:
步骤105,在所述第一业务对象的移动方向上模拟对应的移动事件。
在具体实现中,不同的第一业务对象可以对应不同的移动事件。例如,人物在水平方向走动、跑动,或者,飞机在空中飞行,或者,人物在竖直方向上下跳动,等等。
本发明实施例在碰撞检测的基础之上模拟对应的碰撞事件和/或移动事件,由于碰撞检测的系统资源消耗减少,可以加快碰撞事件和/或移动事件的响应速度,进一步提高了游戏的运行效率。
在本发明的一种优选实施例中,步骤105可以包括如下子步骤:
子步骤S21,当所述第一业务对象在斜坡格子上时,采用所述第一业务对象在水平方向上的移动速度和所述斜坡格子的预置斜率,计算所述第一业务对象在竖直方向上的移动速度;
子步骤S22,采用所述水平方向上的移动速度和所述竖直方向上的移动速度,模拟所述第一业务对象在所述斜坡格子上的移动事件。
在具体实现中,第一业务对象需要在斜坡、楼梯等斜坡格子对应的第二业务对象上移动,而斜坡格子在竖直方向上的阻挡属性和阻挡格子相同,都不可通过。为模拟出良好的斜坡移动效果,斜坡格子可以额外存储了当前斜坡、楼梯等的斜率。
当第一业务对象在斜坡上移动时,依据当前水平方向上的移动速度速度和斜率,采用正切或者余切计算出竖直方向上的移动速度,进而模拟实现第一业务对象在斜坡、楼梯等斜坡格子对应的第二业务对象上平滑移动。
例如,参见图6,示出了本发明的一种在斜坡格子上的模拟移动事件的示例图。可以采用VX=VY*cotα,或者VY=VX*tanα计算竖直方向的移动速度,其中,α为斜率,VX为水平方向的移动速度,VY为竖直方向的移动速度,在模拟的移动时间中,合速度为最终的移动方向。
当第一业务对象需要在拱桥等圆弧型斜坡格子对应的第二业务上移动时,可以将这段圆弧(拱桥)分割成多条直线组成的线段,然后每条线段用正切或余切计算竖直方向的移动速度,进而模拟移动事件。
本发明实施例在斜坡格子上模拟移动事件时,分解成水平方向和竖直方向的移动,更加贴近斜坡格子对应第二业务对象的特性,提高了模拟移动时间的准确率。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图7,示出了本发明一种2D游戏的碰撞检测装置实施例的结构框图,所述2D游戏的地图可以划分成一个或多个指定几何形状的地图格子,所述的装置具体可以包括如下模块:
模型转换模块701,用于将待检测的第一业务对象转换为匹配的一个或多个目标格子;所述目标格子与所述地图格子的大小相同;
检测点选取模块702,用于在所述目标格子上选取一个或多个检测点;
碰撞检测模块703,用于依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞。
在本发明的一种优选实施例中,所述地图格子可以包括以下的至少一种:
阻挡格子、非阻挡格子、斜坡格子;其中,
所述阻挡格子为水平方向和竖直方向为阻挡属性的格子;
所述非阻挡格子为水平方向和竖直方向为通行属性的格子;
所述斜坡给子为水平方向为通行属性、竖直方向为阻挡属性的格子。
在本发明的一种优选实施例中,当所述目标格子为矩形时,所述检测点可以包括特征格子四个角对应的像素点之间,在水平方向上任意一个像素点,在竖直方向上指定的像素点;其中,所述特征格子可以为所述目标格子组成的格子。
在本发明的一种优选实施例中,所述碰撞检测模块703可以包括如下子模块:
第一判定子模块,用于在所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
第二判定子模块,用于在所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为非阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞;
和/或,
第三判定子模块,用于在所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
第四判定子模块,用于在所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为非阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞。
在本发明的一种优选实施例中,所述的装置还可以包括如下模块:
碰撞事件模拟模块,用于在所述第一业务对象的移动方向上模拟对应的碰撞事件;
和/或,
移动事件模拟模块,用于在所述第一业务对象的移动方向上模拟对应的移动事件。
在本发明的一种优选实施例中,所述移动事件模拟模块可以包括如下子模块:
竖直移动速度计算子模块,用于在所述第一业务对象在斜坡格子上时,采用所述第一业务对象在水平方向上的移动速度和所述斜坡格子的预置斜率,计算所述第一业务对象在竖直方向上的移动速度;
斜坡移动事件模拟子模块,用于采用所述水平方向上的移动速度和所述竖直方向上的移动速度,模拟所述第一业务对象在所述斜坡格子上的移动事件。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种2D游戏的碰撞检测方法和一种2D游戏的碰撞检测装置,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种2D游戏的碰撞检测方法,其特征在于,所述2D游戏的地图划分成一个或多个指定几何形状的地图格子,所述的方法包括:
将待检测的第一业务对象转换为匹配的一个或多个目标格子;所述目标格子与所述地图格子的大小相同;
在所述目标格子上选取一个或多个检测点;
依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞;
其中,所述地图格子包括以下的至少一种:
阻挡格子、非阻挡格子、斜坡格子;其中,
所述阻挡格子为水平方向和竖直方向为阻挡属性的格子;
所述非阻挡格子为水平方向和竖直方向为通行属性的格子;
所述斜坡给子为水平方向为通行属性、竖直方向为阻挡属性的格子。
2.根据权利要求1所述的方法,其特征在于,当所述目标格子为矩形时,所述检测点包括特征格子四个角对应的像素点之间,在水平方向上任意一个像素点,在竖直方向上指定的像素点;其中,所述特征格子为所述目标格子组成的格子。
3.根据权利要求1所述的方法,其特征在于,所述依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞的步骤包括:
当所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
当所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为非阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞;
和/或,
当所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
当所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为非阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞。
4.根据权利要求3所述的方法,其特征在于,
在所述判定所述第一业务对象与所述地图格子对应第二业务对象发生碰撞的步骤之后,所述的方法还包括:
在所述第一业务对象的移动方向上模拟对应的碰撞事件;
和/或,
在所述判定所述第一业务对象与所述地图格子对应第二业务对象未发生碰撞的步骤之后,所述的方法还包括:
在所述第一业务对象的移动方向上模拟对应的移动事件。
5.根据权利要求4所述的方法,其特征在于,所述在所述第一业务对象的移动方向上模拟对应的通行事件的步骤包括:
当所述第一业务对象在斜坡格子上时,采用所述第一业务对象在水平方向上的移动速度和所述斜坡格子的预置斜率,计算所述第一业务对象在竖直方向上的移动速度;
采用所述水平方向上的移动速度和所述竖直方向上的移动速度,模拟所述第一业务对象在所述斜坡格子上的移动事件。
6.一种2D游戏的碰撞检测装置,其特征在于,所述2D游戏的地图划分成一个或多个指定几何形状的地图格子,所述的装置包括:
模型转换模块,用于将待检测的第一业务对象转换为匹配的一个或多个目标格子;所述目标格子与所述地图格子的大小相同;
检测点选取模块,用于在所述目标格子上选取一个或多个检测点;
碰撞检测模块,用于依据所述检测点和所述地图格子判断所述第一业务对象在移动方向上是否与所述地图格子对应上的第二业务对象发生碰撞;
其中,所述地图格子包括以下的至少一种:
阻挡格子、非阻挡格子、斜坡格子;其中,
所述阻挡格子为水平方向和竖直方向为阻挡属性的格子;
所述非阻挡格子为水平方向和竖直方向为通行属性的格子;
所述斜坡给子为水平方向为通行属性、竖直方向为阻挡属性的格子。
7.根据权利要求6所述的装置,其特征在于,当所述目标格子为矩形时,所述检测点包括特征格子四个角对应的像素点之间,在水平方向上任意一个像素点,在竖直方向上指定的像素点;其中,所述特征格子为所述目标格子组成的格子。
8.根据权利要求6所述的装置,其特征在于,所述碰撞检测模块包括:
第一判定子模块,用于在所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
第二判定子模块,用于在所述第一业务对象的移动方向为水平方向,且当前检测点所处的地图格子为非阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞;
和/或,
第三判定子模块,用于在所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为阻挡格子或斜坡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象发生碰撞;
和/或,
第四判定子模块,用于在所述第一业务对象的移动方向为竖直方向,且当前检测点所处的地图格子为非阻挡格子时,判定所述第一业务对象与所述地图格子对应的第二业务对象未发生碰撞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410126675.0A CN104941180B (zh) | 2014-03-31 | 2014-03-31 | 一种2d游戏的碰撞检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410126675.0A CN104941180B (zh) | 2014-03-31 | 2014-03-31 | 一种2d游戏的碰撞检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104941180A CN104941180A (zh) | 2015-09-30 |
CN104941180B true CN104941180B (zh) | 2018-08-10 |
Family
ID=54156577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410126675.0A Expired - Fee Related CN104941180B (zh) | 2014-03-31 | 2014-03-31 | 一种2d游戏的碰撞检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104941180B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107918945B (zh) * | 2016-10-11 | 2021-11-09 | 腾讯科技(深圳)有限公司 | 一种碰撞检测方法及装置 |
JP7168304B2 (ja) * | 2017-07-11 | 2022-11-09 | 株式会社バンダイナムコエンターテインメント | ゲームシステム、プログラム及び処理方法 |
CN107376351B (zh) * | 2017-07-12 | 2019-02-26 | 腾讯科技(深圳)有限公司 | 对象的控制方法和装置 |
CN109126134A (zh) * | 2018-09-29 | 2019-01-04 | 北京金山安全软件有限公司 | 游戏角色的移动方法、装置和电子设备 |
CN109893856B (zh) * | 2019-04-16 | 2022-07-22 | 珠海金山网络游戏科技有限公司 | 一种检测方法、装置、计算设备及存储介质 |
CN110262729B (zh) * | 2019-05-20 | 2021-11-16 | 联想(上海)信息技术有限公司 | 一种对象处理方法和设备 |
CN112870723B (zh) * | 2021-03-08 | 2024-02-23 | 网易(杭州)网络有限公司 | 游戏地图的检测方法及装置、存储介质和电子设备 |
CN113509725A (zh) * | 2021-07-08 | 2021-10-19 | 杭州炎魂网络科技有限公司 | 一种二维游戏角色移动控制方法、装置及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645163A (zh) * | 2008-06-30 | 2010-02-10 | 英特尔公司 | 向量化并行碰撞检测流水线 |
JP2014000318A (ja) * | 2012-06-20 | 2014-01-09 | Tec One | ゲームプログラム |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4791852B2 (ja) * | 2006-02-27 | 2011-10-12 | 任天堂株式会社 | ゲーム装置、ゲームプログラムおよびゲーム制御方法 |
JP5758085B2 (ja) * | 2010-05-19 | 2015-08-05 | 任天堂株式会社 | ゲームプログラム、ゲーム装置、ゲームシステム、及びゲーム処理方法 |
JP5498437B2 (ja) * | 2011-05-25 | 2014-05-21 | 株式会社ソニー・コンピュータエンタテインメント | 情報処理装置、情報処理方法、情報処理プログラム、情報処理プログラムを記憶したコンピュータ読み取り可能な記録媒体、厚み領域設定装置、厚み領域設定方法、厚み領域設定プログラム、厚み領域設定プログラムを記憶したコンピュータ読み取り可能な記録媒体、仮想空間における面に関するデータ構造 |
-
2014
- 2014-03-31 CN CN201410126675.0A patent/CN104941180B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645163A (zh) * | 2008-06-30 | 2010-02-10 | 英特尔公司 | 向量化并行碰撞检测流水线 |
JP2014000318A (ja) * | 2012-06-20 | 2014-01-09 | Tec One | ゲームプログラム |
Also Published As
Publication number | Publication date |
---|---|
CN104941180A (zh) | 2015-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104941180B (zh) | 一种2d游戏的碰撞检测方法和装置 | |
CN105056528B (zh) | 一种虚拟角色的移动方法及装置 | |
Shao et al. | Autonomous pedestrians | |
Loscos et al. | Intuitive crowd behavior in dense urban environments using local laws | |
CN110141862B (zh) | 游戏中移动控制的方法及装置、电子设备、存储介质 | |
Peng et al. | Computational network design from functional specifications | |
CN108714303A (zh) | 碰撞检测方法,设备及计算机可读存储介质 | |
CN102693362B (zh) | 一种与地形相适应的游戏角色跳跃方法和装置 | |
CN100524363C (zh) | 一种用于动态实体的分层避障方法 | |
US9238175B2 (en) | Natural movement in a virtual environment | |
US11235241B2 (en) | Route navigation system within a game application environment | |
CN106027962B (zh) | 视频监控的覆盖率计算方法及装置、布点方法及系统 | |
CN107066723B (zh) | 一种基于社会力模型的公交乘客上下车行为仿真方法 | |
Sarmady et al. | Modeling groups of pedestrians in least effort crowd movements using cellular automata | |
US20120070804A1 (en) | Architecture, Method, and Program for Generating Realistic Vehicular Mobility Patterns | |
KR20150114767A (ko) | 멀티 프레임들의 동일한 영역을 연속으로 렌더링하는 방법 및 장치 | |
CN115577574B (zh) | 一种导流栏杆位置计算方法、装置、设备及可读存储介质 | |
KR20130133778A (ko) | 트레이싱 정보에 기초한 충돌 회피 방식을 사용하여 캐릭터들을 애니메이팅하기 위한 방법 | |
Barnett et al. | Coordinated crowd simulation with topological scene analysis | |
CN105205860A (zh) | 三维模型场景的展示方法及装置 | |
US11361127B2 (en) | Simulation device, simulation method, and storage medium | |
US20130033500A1 (en) | Dynamic collision avoidance for crowd simulation over structured paths that intersect at waypoints | |
CN103942412B (zh) | 游戏角色腾空的识别方法及装置 | |
CN110298267B (zh) | 路径处理方法、设备和存储介质 | |
CN109242973A (zh) | 一种碰撞测试方法、装置、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180810 |
|
CF01 | Termination of patent right due to non-payment of annual fee |