CN115845381B - 一种基于包围盒的快速寻路方法、装置、设备及介质 - Google Patents
一种基于包围盒的快速寻路方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115845381B CN115845381B CN202310075583.3A CN202310075583A CN115845381B CN 115845381 B CN115845381 B CN 115845381B CN 202310075583 A CN202310075583 A CN 202310075583A CN 115845381 B CN115845381 B CN 115845381B
- Authority
- CN
- China
- Prior art keywords
- point
- path
- determining
- initial
- winding
- 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.)
- Active
Links
Images
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于包围盒的快速寻路方法、装置、设备及介质,其中,所述方法包括:响应游戏用户的寻路请求,获取游戏角色的第一起始位置和第一目标位置;确定所述第一起始位置和所述第一目标位置之间的第一初始路径,所述第一初始路径与所述若干个矩形区域相交,所述第一初始路径与所述若干个矩形区域的交点将所述第一初始路径分为若干个子路线;根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径;连接所有子路线的移动路径形成总移动路径,采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径。本发明拓展了SLG游戏地图寻路方案,可以在大型游戏地图里高效确定最终寻路路线。
Description
技术领域
本发明涉及计算机领域,具体涉及一种基于包围盒的快速寻路方法、装置、设备及介质。
背景技术
在SLG游戏中,常规的寻路方法是先将地图网格化,再使用A星寻路算法计算出移动路径。随着现代SLG游戏的发展,地图规模越来越大,游戏单位数量越来越多,所以常规的寻路方法在SLG游戏里进行寻路时往往效率低下,浪费了大量的计算机资源,已经无法满足性能指标要求。
发明内容
本发明的目的在于提供一种基于包围盒的快速寻路方法、装置、设备及介质,结合图形学知识,通过引入包围盒碰撞检测算法拓展了SLG游戏地图寻路方案,可以在大型游戏地图里高效确定最终寻路路线,节省了服务器的计算资源。
第一方面,本发明提供了一种基于包围盒的快速寻路方法,应用于游戏地图,所述游戏地图划分为若干个矩形区域,所述若干个矩形区域内有若干个障碍物,所述方法包括:
响应游戏用户的寻路请求,获取游戏角色的第一起始位置和第一目标位置;
确定所述第一起始位置和所述第一目标位置之间的第一初始路径,所述第一初始路径与所述若干个矩形区域相交,所述第一初始路径与所述若干个矩形区域的交点将所述第一初始路径分为若干个子路线;
根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径;
连接所有子路线的移动路径形成总移动路径,采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径。
进一步的,所述根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径,具体包括:
以子路线的第二起始位置和第二目标位置之间的直线连接路径与障碍物进行碰撞检测,确定碰撞点坐标;
根据所述碰撞点坐标确定寻路代价值F最小的绕点;
直线连接所述寻路代价值F最小的绕点与所述第二目标位置的路径,继续进行碰撞检测,直到所述寻路代价值F最小的绕点与所述第二目标位置之间的直线连接路径没有碰撞点。
更进一步的,所述根据所述碰撞点坐标确定寻路代价值F最小的绕点,具体包括:
创建OPEN表并置空,所述OPEN表用于存储待考虑路径;
根据包围盒的形状采取不同的碰撞计算公式确定所述碰撞点坐标;
根据所述碰撞点坐标确定复数绕点坐标,分别连接所述第二起始位置和每个绕点的路径并存入OPEN表;
判断OPEN表中所有的路径距离,确定所述寻路代价值F最小的绕点。
更进一步的,所述寻路代价值F的计算公式为F=G+H,F为所述第二起始位置到达所述第二目标位置的总寻路代价值,G为所述第二起始位置抵达绕点的距离代价,H为绕点抵达所述第二目标位置的距离代价。
进一步的,所述采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径,具体包括:
S401:将所述第一目标位置的上一个绕点设置为A点,将所述第一起始位置设置为B点;
S402:直线连接所述A点与所述B点之间的路径,获得第二初始路径,将所述第二初始路径和障碍物进行碰撞检测,若没有发生碰撞,则连接成功,删除所述A点与所述B点之间的绕点,若发生碰撞,且能确定第一优化移动路径,则以所述第一优化移动路径替换所述第二初始路径;
S403:判断所述A点与所述B点之间的绕点数量是否小于或等于1,若是,则结束算法,得到目标路径,否则进入S404;
S404:将所述B点的下一个绕点设置为新的B点,再将所述A点与所述B点之间的路径继续优化,直到所述A点与所述B点之间的绕点数量小于或等于1;
S405:将所述A点的上一个绕点设置为新的A点,所述第一起始位置设置为B点,再将所述A点与所述B点之间的路径继续优化后,判断所述A点与所述第一起始位置之间的绕点数量是否小于或等于1,若是,则结束算法,得到目标路径,否则回到S404。
更进一步的,所述将所述B点的下一个点设置为新的B点,再将所述A点与所述B点之间的路径继续优化,直到所述A点与所述B点之间的绕点数量小于或等于1,具体包括:
S4041:将所述B点的下一个绕点设置为新的B点,直线连接所述A点与所述B点之间的路径,获得第三初始路径;
S4042:判断所述第三初始路径是否发生碰撞,若没有发生碰撞,则连接成功,删除所述A点与所述B点之间的绕点,若发生碰撞,且能确定第二优化移动路径,则以所述第二优化路径替换所述第三初始路径;
S4043:判断所述A点与所述B点之间的绕点数量是否小于或等于1,若是,则结束算法,否则回到S4041。
更进一步的,所述将所述A点的上一个点设置为新的A点,所述第一起始位置设置为B点,再将所述A点与所述B点之间的路径继续优化后,具体包括:
S4051:将所述A点的上一个绕点设置为新的A点,所述第一起始设置为B点,直线连接所述A点与所述B点之间的路径,获得第四初始路径;
S4052:判断所述第四初始路径是否发生碰撞,若没有发生碰撞,则连接成功,删除所述A点与所述B点之间的绕点,若发生碰撞,且能确定第三优化移动路径,则以所述第三优化移动路径替换所述第四初始路径。
第二方面,本发明提供了一种基于包围盒的快速寻路装置,应用于游戏地图,所述游戏地图划分为若干个矩形区域,所述若干个矩形区域内有若干个障碍物,其特征在于,所述装置包括:
获取模块,用于响应游戏用户的寻路请求,获取游戏角色的第一起始位置和第一目标位置;
第一处理模块,用于确定所述第一起始位置和所述第一目标位置之间的第一初始路径,所述第一初始路径与所述若干个矩形区域相交,所述第一初始路径与所述若干个矩形区域的交点将所述第一初始路径分为若干个子路线;
第二处理模块,用于根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径;
第三处理模块,用于连接所有子路线的移动路径形成总移动路径,采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径。
第三方面,本发明提供了一种计算机设备,其特征在于,包括:存储器和处理器及存储在存储器上的计算机程序,当所述计算机程序在处理器上被执行时,实现上述方法中任一项所述的基于包围盒的快速寻路方法。
第四方面,本发明提供了一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时实现上述方法中任一项所述的基于包围盒的快速寻路方法。
本发明实施例提供一种基于包围盒的快速寻路方法、装置、设备及介质,所述方法包括响应游戏用户的寻路请求,获取游戏角色的第一起始位置和第一目标位置;确定所述第一起始位置和所述第一目标位置之间的第一初始路径,所述第一初始路径与所述若干个矩形区域相交,所述第一初始路径与所述若干个矩形区域的交点将所述第一初始路径分为若干个子路线;根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径;连接所有子路线的移动路径形成总移动路径,采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径。本发明结合图形学知识,通过引入包围盒碰撞检测算法拓展了SLG游戏地图寻路方案,可以在大型游戏地图里高效确定最终寻路路线,节省了服务器的计算资源。
附图说明
图1是本发明实施例提供的一种基于包围盒的快速寻路方法的流程示意图;
图2是图1中的步骤101的流程示意图;
图3是图1中的步骤102的流程示意图;
图4是图1中的步骤103的流程示意图;
图5是本发明实施例提供的一种基于包围盒的快速寻路装置的结构示意图;
图6是本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
在SLG游戏中,常规的寻路方法是先将地图网格化,再使用A星寻路算法计算出移动路径。随着现代SLG游戏的发展,地图规模越来越大,游戏单位数量越来越多,所以常规的寻路方法在SLG游戏里进行寻路时往往效率低下,浪费了大量的计算机资源,已经无法满足性能指标要求。
本发明实施例提供一种基于包围盒的快速寻路方法,结合图形学知识,通过引入包围盒碰撞检测算法拓展了SLG游戏地图寻路方案,可以在大型游戏地图里高效确定最终寻路路线,节省了服务器的计算资源。
图1示出了本发明实施例提供的一种基于包围盒的快速寻路方法的流程示意图,应用于游戏地图,所述游戏地图划分为若干个矩形区域,所述若干个矩形区域内有若干个障碍物,详述如下:
在S101中,响应游戏用户的寻路请求,获取游戏角色的第一起始位置和第一目标位置;确定所述第一起始位置和所述第一目标位置之间的第一初始路径,所述第一初始路径与所述若干个矩形区域相交,所述第一初始路径与所述若干个矩形区域的交点将所述第一初始路径分为若干个子路线;。
在本实施例中,游戏用户(也称游戏玩家)通过游戏客户端发送寻路请求,服务器接收寻路请求后确定游戏角色的第一起始位置和第一目标位置,游戏客户端可以为电脑、手机、智能电视等计算设备,此处不做限定。如图2所示,游戏地图被划分多个矩形区域,每个矩形区域里都存在多个游戏对象,所述游戏对象为包含树木、建筑物、山等障碍物的包围盒,游戏对象支持任何形状的包围盒,在图2中以矩形包围盒表征,并不代表具体限定。图2中的start为第一起始位置、end为第一目标位置,虚线为第一起始位置和第一目标位置的直线连接路径,即第一初始路径,虚线与矩形相交的圆点为交点,交点将第一初始路径分割为多个子路线。
在S102中,根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径。
在本实施例中,每个子路线遇到的障碍物都不同,因此也具有不同的形状,根据不同的障碍物采用合适的包围盒,以尽量减少空白面积,每个子路线与不同形状的包围盒做碰撞检测。
在S103中,连接所有子路线的移动路径并形成总移动路径,采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径。
在本实施例中,经过包围盒碰撞检测算法形成的总移动路径可能由于第一起始位置和第一目标位置之间的绕点数量过多,没有获得最短路径,因此需要绕点之间以数组遍历的形式互相做包围盒碰撞检测算法,获得最短路径。比如,共有9个绕点,数组为[1,2,3,4,5,6,7,8,9],9个绕点逐个与其他的绕点做包围盒碰撞检测算法,1从2遍历到9做包围盒碰撞检测算法,2从3遍历到9做包围盒碰撞检测算法,以此类推,直到数组内9个绕点互相遍历完毕。
在一些实施例中,所述根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径,具体包括:
以子路线的第二起始位置和第二目标位置之间的直线连接路径与障碍物进行碰撞检测,确定碰撞点坐标;
根据所述碰撞点坐标确定寻路代价值F最小的绕点;
直线连接所述寻路代价值F最小的绕点与所述第二目标位置的路径,若发生碰撞,继续进行碰撞检测,直到所述寻路代价值F最小的绕点与所述第二目标位置之间的直线连接路径没有碰撞点。
该实施例中,如图3所示,图3中的start为第二起始位置、end为第二目标位置,第二起始位置和第二目标位置连成的直线与矩形发生碰撞,直线与矩形相交的地方为碰撞点。碰撞点所在的碰撞边上存在a、b两个绕点,判断第二起始位置到绕点a到第二目标位置与第二起始位置到绕点b到第二目标位置各自的寻路代价值F,确定寻路代价值F最小的绕点a,绕点a与第二目标位置连成的直线与矩形再次发生碰撞,根据新的碰撞点获得绕点c,绕点c和第二目标位置连成的直线没有与任何物体发生碰撞,图3中的移动路径为start→a→c→end。
在一些实施例中,所述根据所述碰撞点坐标确定寻路代价值F最小的绕点,具体包括:
创建OPEN表并置空,所述OPEN表用于存储待考虑路径;
根据包围盒的形状采取不同的碰撞计算公式并确定所述碰撞点坐标;
根据所述碰撞点坐标确定复数绕点坐标,分别连接所述第二起始位置和每个绕点的路径并存入OPEN表;
判断OPEN表中所有的路径距离,确定所述寻路代价值F最小的绕点。
在一些实施例中,所述寻路代价值F的计算公式为F=G+H,F为所述第二起始位置到达所述第二目标位置的总寻路代价,G为所述第二起始位置抵达绕点的距离代价,H为绕点抵达所述第二目标位置的距离代价。
在一些实施例中,所述采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径,具体包括:
S401:将所述第一目标位置的上一个绕点设置为A点,将所述第一起始位置设置为B点;
S402:直线连接所述A点与所述B点之间的路径,获得第二初始路径,将所述第二初始路径和障碍物进行碰撞检测,若没有发生碰撞,则连接成功,删除所述A点与所述B点之间的绕点,若发生碰撞,且能确定第一优化移动路径,则以所述第一优化移动路径替换所述第二初始路径;
S403:判断所述A点与所述B点之间的绕点数量是否小于或等于1,若是,则结束算法,得到目标路径,否则进入S404;
S404:将所述B点的下一个绕点设置为新的B点,再将所述A点与所述B点之间的路径继续优化,直到所述A点与所述B点之间的绕点数量小于或等于1;
S405:将所述A点的上一个绕点设置为新的A点,所述第一起始位置设置为B点,再将所述A点与所述B点之间的路径继续优化后,判断所述A点与所述第一起始位置之间的绕点数量是否小于或等于1,若是,则结束算法,得到目标路径,否则回到S404。
具体的,所述将所述B点的下一个点设置为新的B点,再将所述A点与所述B点之间的路径继续优化,直到所述A点与所述B点之间的绕点数量小于或等于1,具体包括:
S4041:将所述B点的下一个绕点设置为新的B点,直线连接所述A点与所述B点之间的路径,获得第三初始路径;
S4042:判断所述第三初始路径是否发生碰撞,若没有发生碰撞,则连接成功,删除所述A点与所述B点之间的绕点,若发生碰撞,且能确定第二优化移动路径,则以所述第二优化路径替换所述第三初始路径;
S4043:判断所述A点与所述B点之间的绕点数量是否小于或等于1,若是,则结束算法,否则回到S4041。
具体的,所述将所述A点的上一个点设置为新的A点,所述第一起始位置设置为B点,再将所述A点与所述B点之间的路径继续优化后,具体包括:
S4051:将所述A点的上一个绕点设置为新的A点,所述第一起始设置为B点,直线连接所述A点与所述B点之间的路径,获得第四初始路径;
S4052:判断所述第四初始路径是否发生碰撞,若没有发生碰撞,则连接成功,删除所述A点与所述B点之间的绕点,若发生碰撞,且能确定第三优化移动路径,则以所述第三优化移动路径替换所述第四初始路径。
该实施例中,如图4所示,图4中的start为第一起始位置、end为第一目标位置。图4a中的路径为未经优化的总移动路径。在图4b中,将第一目标位置的上一个绕点设为A点,第一起始位置设为B点,A点与B点连成的直线做包围盒碰撞检测算法,若A点与B点连成的直线与矩形发生碰撞,则需要根据图3所示的方法尝试寻找优化移动路径,即采取碰撞计算公式确定碰撞点坐标,根据碰撞点坐标确定绕点坐标,再将上述绕点与第一起始位置和第一目标位置连接起来的路径存入OPEN表,将该路径与原来的总移动路径进行比较,若该路径的寻路代价值F等于原来的总移动路径的寻路代价值F(通常来说,该路径实际上就是原来的总移动路径),则不进行更换,若该路径的寻路代价值F小于原来的总移动路径的寻路代价值F,则将以该路径替代原来的总移动路径,该路径则为优化移动路径。然后,再将B点的下一个绕点设为新的B点,重复上述步骤,即A点分别与B1、B2、B3、B4、B5、B6、B7点先后尝试寻找优化移动路径。在图4c中,将A点的上一个绕点设为新的A点,A1、A2、A3、A4、A5、A6、A7点均为新的A点,新的A点与B点及两点之间的绕点先后尝试寻找优化移动路径。图4d中的虚线为经过优化后获得的最终总移动路径。
参照图5,本申请还提供一种基于包围盒的快速寻路装置5,该基于包围盒的快速寻路装置5包括:获取模块501,用于响应游戏用户的寻路请求,获取游戏角色的第一起始位置和第一目标位置;第一处理模块502,用于确定所述第一起始位置和所述第一目标位置之间的第一初始路径,所述第一初始路径与所述若干个矩形区域相交,所述第一初始路径与所述若干个矩形区域的交点将所述第一初始路径分为若干个子路线;第二处理模块503,用于根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径;第三处理模块504,用于连接所有子路线的移动路径形成总移动路径,采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径。
可以理解的是,如图1所示的基于包围盒的快速寻路方法实施例中的内容均适用于本基于包围盒的快速寻路装置实施例中,本基于包围盒的快速寻路装置实施例所具体实现的功能与如图1所示的基于包围盒的快速寻路方法实施例相同,并且达到的有益效果与如图1所示的基于包围盒的快速寻路方法实施例所达到的有益效果也相同。
需要说明的是,上述装置之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
参照图6,本申请还提供一种计算机设备6,该计算机设备6包括存储器602和处理器601及存储在存储器602上的计算机程序6021,当所述计算机程序6021在处理器601上被执行时,实现上述任意各个方法实施例中的步骤。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该计算机设备可包括,但不仅限于,处理器601、存储器602。本领域技术人员可以理解,图6仅仅是计算机设备6的举例,并不构成对计算机设备6的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器601可以是中央处理单元(Central Processing Unit,CPU),该处理器601还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路 (Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器602在一些实施例中可以是所述计算机设备6的内部存储单元,例如计算机设备6的硬盘或内存。所述存储器602在另一些实施例中也可以是所述计算机设备6的外部存储设备,例如所述计算机设备6上配备的插接式硬盘,智能存储卡(Smart MediaCard, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器602还可以既包括所述计算机设备6的内部存储单元也包括外部存储设备。所述存储器602用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如所述计算机程序的程序代码等。所述存储器602还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时实现上述各个方法实施例中的步骤。
本申请实施例公开了一种计算机程序产品,当计算机程序产品在移动终端上运行时,使得移动终端执行时可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所公开的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种基于包围盒的快速寻路方法,其特征在于,应用于游戏地图,所述游戏地图划分为若干个矩形区域,所述若干个矩形区域内有若干个障碍物,所述方法包括:
响应游戏用户的寻路请求,获取游戏角色的第一起始位置和第一目标位置;
确定所述第一起始位置和所述第一目标位置之间的第一初始路径,所述第一初始路径与所述若干个矩形区域相交,所述第一初始路径与所述若干个矩形区域的交点将所述第一初始路径分为若干个子路线;
根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径;
连接所有子路线的移动路径形成总移动路径,确定所述第一起始位置和所述第一目标位置之间的绕点,使所述绕点之间以数组遍历的形式互相做包围盒碰撞检测算法,采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径。
2.根据权利要求1所述的方法,其特征在于,所述根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径,具体包括:
以子路线的第二起始位置和第二目标位置之间的直线连接路径与障碍物进行碰撞检测,确定碰撞点坐标;
根据所述碰撞点坐标确定寻路代价值F最小的绕点;
直线连接所述寻路代价值F最小的绕点与所述第二目标位置的路径,继续进行碰撞检测,直到所述寻路代价值F最小的绕点与所述第二目标位置之间的直线连接路径没有碰撞点。
3.根据权利要求2所述的方法,其特征在于,所述根据所述碰撞点坐标确定寻路代价值F最小的绕点,具体包括:
创建OPEN表并置空,所述OPEN表用于存储待考虑路径;
根据包围盒的形状采取不同的碰撞计算公式确定所述碰撞点坐标;
根据所述碰撞点坐标确定复数绕点坐标,分别连接所述第二起始位置和每个绕点的路径并存入OPEN表;
判断OPEN表中所有的路径距离,确定所述寻路代价值F最小的绕点。
4.根据权利要求3所述的方法,其特征在于,所述寻路代价值F的计算公式为F=G+H,F为所述第二起始位置到达所述第二目标位置的总寻路代价值,G为所述第二起始位置抵达绕点的距离代价,H为绕点抵达所述第二目标位置的距离代价。
5.根据权利要求1所述的方法,其特征在于,所述确定所述第一起始位置和所述第一目标位置之间的绕点,使所述绕点之间以数组遍历的形式互相做包围盒碰撞检测算法,采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径,具体包括:
S401:将所述第一目标位置的上一个绕点设置为A点,将所述第一起始位置设置为B点;
S402:直线连接所述A点与所述B点之间的路径,获得第二初始路径,将所述第二初始路径和障碍物进行碰撞检测,若没有发生碰撞,则连接成功,删除所述A点与所述B点之间的绕点,若发生碰撞,且能确定第一优化移动路径,则以所述第一优化移动路径替换所述第二初始路径;
S403:判断所述A点与所述B点之间的绕点数量是否小于或等于1,若是,则结束算法,得到目标路径,否则进入S404;
S404:将所述B点的下一个绕点设置为新的B点,再将所述A点与所述B点之间的路径继续优化,直到所述A点与所述B点之间的绕点数量小于或等于1;
S405:将所述A点的上一个绕点设置为新的A点,所述第一起始位置设置为B点,再将所述A点与所述B点之间的路径继续优化后,判断所述A点与所述第一起始位置之间的绕点数量是否小于或等于1,若是,则结束算法,得到目标路径,否则回到S404。
6.根据权利要求5所述的方法,其特征在于,所述将所述B点的下一个点设置为新的B点,再将所述A点与所述B点之间的路径继续优化,直到所述A点与所述B点之间的绕点数量小于或等于1,具体包括:
S4041:将所述B点的下一个绕点设置为新的B点,直线连接所述A点与所述B点之间的路径,获得第三初始路径;
S4042:判断所述第三初始路径是否发生碰撞,若没有发生碰撞,则连接成功,删除所述A点与所述B点之间的绕点,若发生碰撞,且能确定第二优化移动路径,则以所述第二优化移动路径替换所述第三初始路径;
S4043:判断所述A点与所述B点之间的绕点数量是否小于或等于1,若是,则结束算法,否则回到S4041。
7.根据权利要求5所述的方法,其特征在于,所述将所述A点的上一个点设置为新的A点,所述第一起始位置设置为B点,再将所述A点与所述B点之间的路径继续优化后,具体包括:
S4051:将所述A点的上一个绕点设置为新的A点,所述第一起始设置为B点,直线连接所述A点与所述B点之间的路径,获得第四初始路径;
S4052:判断所述第四初始路径是否发生碰撞,若没有发生碰撞,则连接成功,删除所述A点与所述B点之间的绕点,若发生碰撞,且能确定第三优化移动路径,则以所述第三优化移动路径替换所述第四初始路径。
8.一种基于包围盒的快速寻路装置,其特征在于,应用于游戏地图,所述游戏地图划分为若干个矩形区域,所述若干个矩形区域内有若干个障碍物,所述装置包括:
获取模块,用于响应游戏用户的寻路请求,获取游戏角色的第一起始位置和第一目标位置;
第一处理模块,用于确定所述第一起始位置和所述第一目标位置之间的第一初始路径,所述第一初始路径与所述若干个矩形区域相交,所述第一初始路径与所述若干个矩形区域的交点将所述第一初始路径分为若干个子路线;
第二处理模块,用于根据每个子路线遇到的障碍物,采取包围盒碰撞检测算法确定所述每个子路线各自的移动路径;
第三处理模块,用于连接所有子路线的移动路径形成总移动路径,确定所述第一起始位置和所述第一目标位置之间的绕点,使所述绕点之间以数组遍历的形式互相做包围盒碰撞检测算法,采取包围盒碰撞检测算法优化所述总移动路径,确定目标路径。
9.一种计算机设备,其特征在于,包括:存储器和处理器及存储在存储器上的计算机程序,当所述计算机程序在处理器上被执行时,实现如权利要求1至7中任一项所述的基于包围盒的快速寻路方法。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时实现如权利要求1至7中任一项中所述的基于包围盒的快速寻路方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310075583.3A CN115845381B (zh) | 2023-02-07 | 2023-02-07 | 一种基于包围盒的快速寻路方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310075583.3A CN115845381B (zh) | 2023-02-07 | 2023-02-07 | 一种基于包围盒的快速寻路方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115845381A CN115845381A (zh) | 2023-03-28 |
CN115845381B true CN115845381B (zh) | 2023-06-16 |
Family
ID=85657708
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310075583.3A Active CN115845381B (zh) | 2023-02-07 | 2023-02-07 | 一种基于包围盒的快速寻路方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115845381B (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107744663B (zh) * | 2017-10-19 | 2020-10-13 | 阿里巴巴(中国)有限公司 | 人工智能ai单位的寻路方法及装置 |
CN108176050B (zh) * | 2017-12-07 | 2020-11-13 | 北京像素软件科技股份有限公司 | 寻路方法和装置 |
CN108629847A (zh) * | 2018-05-07 | 2018-10-09 | 网易(杭州)网络有限公司 | 虚拟对象移动路径生成方法、装置、存储介质及电子设备 |
CN110975288B (zh) * | 2019-11-20 | 2023-08-29 | 中国人民解放军国防科技大学 | 基于跳点路径搜索的几何容器数据压缩方法及系统 |
CN110975290B (zh) * | 2019-11-20 | 2023-09-05 | 中国人民解放军国防科技大学 | 一种基于模式数据库的路径规划方法及系统 |
CN110967015B (zh) * | 2019-11-20 | 2021-11-12 | 中国人民解放军国防科技大学 | 一种路径规划方法及系统 |
CN112667648B (zh) * | 2020-12-21 | 2024-08-02 | 北京像素软件科技股份有限公司 | 地形动态更新方法、装置、电子设备和可读存储介质 |
-
2023
- 2023-02-07 CN CN202310075583.3A patent/CN115845381B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115845381A (zh) | 2023-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110471409B (zh) | 机器人巡检方法、装置、计算机可读存储介质及机器人 | |
CN111680747B (zh) | 用于占据栅格子图的闭环检测的方法和装置 | |
US20140095497A1 (en) | Managing geographic region information | |
EP3438613A1 (en) | Road name display method, device, and storage medium | |
JP7121454B2 (ja) | 統計に基づく障害物位置シミュレーション方法、装置及び端末 | |
JP2020042793A (ja) | 確率プロットに基づく障害物分布シミュレーション方法、装置及び端末 | |
CN114677570A (zh) | 道路信息更新方法、装置、电子设备以及存储介质 | |
KR102473269B1 (ko) | 차량 센서용 데이터 융합 방법 및 장치 | |
CN113741415B (zh) | 路径规划方法、装置、终端设备及计算机可读存储介质 | |
CN115845381B (zh) | 一种基于包围盒的快速寻路方法、装置、设备及介质 | |
CN115406452A (zh) | 一种实时定位及建图方法、装置及终端设备 | |
CN112711647B (zh) | 地图信息显示方法和装置、存储介质及电子设备 | |
CN111858789B (zh) | 路网数据处理方法、装置、电子设备和存储介质 | |
CN112630787A (zh) | 定位方法、装置、电子设备及可读存储介质 | |
JP7422222B2 (ja) | 物体に対する衝突検出方法、装置、電子デバイス、記憶媒体およびコンピュータプログラム | |
CN113607183B (zh) | 一种车辆的运输路线规划方法、装置、存储介质及终端 | |
CN110794994A (zh) | 真实触点的确定方法及装置 | |
JP7239053B2 (ja) | 生成装置、生成方法及び生成プログラム | |
WO2021176677A1 (ja) | 管理装置、管理方法及び管理プログラム | |
CN114647681A (zh) | 路口匹配方法、设备及存储介质 | |
CN113057530A (zh) | 扫地机器人及其地图更新方法、装置和存储介质 | |
CN113051491A (zh) | 地图数据处理的方法、设备、存储介质及程序产品 | |
CN112798006B (zh) | 一种不同路径的差异点分析方法、装置、存储介质及终端 | |
CN113761990B (zh) | 一种道路边界检测方法、装置、无人车及存储介质 | |
CN115390081A (zh) | 一种车辆定位方法、装置及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |