CN110180182A - 碰撞检测方法、装置、存储介质及电子装置 - Google Patents

碰撞检测方法、装置、存储介质及电子装置 Download PDF

Info

Publication number
CN110180182A
CN110180182A CN201910350716.7A CN201910350716A CN110180182A CN 110180182 A CN110180182 A CN 110180182A CN 201910350716 A CN201910350716 A CN 201910350716A CN 110180182 A CN110180182 A CN 110180182A
Authority
CN
China
Prior art keywords
distance
target
virtual role
virtual
point
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.)
Granted
Application number
CN201910350716.7A
Other languages
English (en)
Other versions
CN110180182B (zh
Inventor
郑贵荣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201910350716.7A priority Critical patent/CN110180182B/zh
Publication of CN110180182A publication Critical patent/CN110180182A/zh
Application granted granted Critical
Publication of CN110180182B publication Critical patent/CN110180182B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/50Controlling the output signals based on the game progress
    • A63F13/52Controlling the output signals based on the game progress involving aspects of the displayed game scene
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/55Controlling game characters or game objects based on the game progress
    • A63F13/56Computing the motion of game characters with respect to other game characters, game objects or elements of the game scene, e.g. for simulating the behaviour of a group of virtual soldiers or for path finding
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/80Special adaptations for executing a specific game genre or game mode
    • A63F13/822Strategy games; Role-playing games

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种碰撞检测方法、装置、存储介质及电子装置。其中,该方法包括:在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,虚拟地图上还显示有静态障碍区域,静态障碍区域为被设置为不允许虚拟角色出现的区域;在预先确定的有号距离集合中确定出目标中心点的目标有号距离,其中,有号距离集合中的每个有号距离表示虚拟地图上的点到静态障碍区域的边界的最短距离;在目标有号距离小于虚拟角色的半径的情况下,确定出虚拟角色与静态障碍区域发生了碰撞。本发明解决了相关技术中碰撞检测的检测效率较低的技术问题。

Description

碰撞检测方法、装置、存储介质及电子装置
技术领域
本发明涉及计算机领域,具体而言,涉及一种碰撞检测方法、装置、存储介质及电子装置。
背景技术
在目前很多类型的游戏中,都会对游戏中的虚拟角色进行移动,游戏中也存在有很多的障碍物,这就需要虚拟角色不能出现在障碍物所在的区域中,因此需要对虚拟角色和障碍物进行碰撞检测以及确定发生碰撞后虚拟角色如何移动,目前的检测方法大致有物理碰撞的方式和NevMesh的方式等等,但是这些方式的碰撞检测过程都较为复杂,并且时间复杂度也较高,检测的准确度较低。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种碰撞检测方法、装置、存储介质及电子装置,以至少解决相关技术中碰撞检测的检测效率较低的技术问题。
根据本发明实施例的一个方面,提供了一种碰撞检测方法,包括:
在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,所述虚拟地图上还显示有静态障碍区域,所述静态障碍区域为被设置为不允许所述虚拟角色出现的区域;
在预先确定的有号距离集合中确定出所述目标中心点的目标有号距离,其中,所述有号距离集合中的每个有号距离表示所述虚拟地图上的点到所述静态障碍区域的边界的最短距离;
在所述目标有号距离小于所述虚拟角色的半径的情况下,确定出所述虚拟角色与所述静态障碍区域发生了碰撞。
根据本发明实施例的另一方面,还提供了一种碰撞检测装置,包括:
第一获取模块,用于在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,所述虚拟地图上还显示有静态障碍区域,所述静态障碍区域为被设置为不允许所述虚拟角色出现的区域;
第一确定模块,用于在预先确定的有号距离集合中确定出所述目标中心点的目标有号距离,其中,所述有号距离集合中的每个有号距离表示所述虚拟地图上的点到所述静态障碍区域的边界的最短距离;
第二确定模块,用于在所述目标有号距离小于所述虚拟角色的半径的情况下,确定出所述虚拟角色与所述静态障碍区域发生了碰撞。
可选地,所述装置还包括:
处理模块,用于对所述虚拟地图进行栅格化处理,得到多个栅格;
第二获取模块,用于获取所述多个栅格中每个栅格的顶点所对应的有号距离;
第三确定模块,用于将包括所述多个栅格中每个栅格的顶点所对应的有号距离的集合确定为所述预先确定的有号距离集合。
可选地,第一确定模块包括:
第一确定单元,用于从所述多个栅格中确定所述目标中心点所在的目标栅格;
获取单元,用于从所述预先确定的有号距离集合中获取所述目标栅格的四个目标顶点所对应的有号距离;
第二确定单元,用于根据所述四个目标顶点所对应的有号距离确定所述目标中心点的所述目标有号距离。
可选地,第一获取模块包括:
第三确定单元,用于在检测到对所述虚拟角色执行第一移动操作的情况下,将所述虚拟角色在所述虚拟地图上沿所述第一移动操作的操作方向进行移动时所述虚拟角色所在的位置的中心点确定为所述目标中心点,其中,所述第一移动操作用于控制所述虚拟角色在所述虚拟地图上沿所述操作方向进行移动;
第四确定单元,用于在检测到对所述虚拟角色执行第二移动操作的情况下,将所述虚拟角色执行目标动作时所在位置的中心点确定为所述目标中心点,其中,所述第二移动操作用于控制所述虚拟角色在所述虚拟角色当前所在的第一位置执行所述目标动作;
第五确定单元,用于在检测到对所述虚拟角色执行第三移动操作的情况下,将第三位置的中心点确定为所述目标中心点,其中,所述第三移动操作用于控制所述虚拟角色从所述虚拟地图上的第二位置消失并出现在所述虚拟地图上的所述第三位置。
可选地,所述装置还包括:
第四确定模块,用于在检测到对所述虚拟角色执行所述第一移动操作的情况下,根据所述操作方向和所述目标有号距离的梯度值确定所述虚拟角色在所述虚拟地图中的滑行方向;
第一控制模块,用于控制所述虚拟角色按照所述滑行方向沿所述静态障碍区域滑行。
可选地,第四确定模块包括:
第六确定单元,用于确定所述目标有号距离的所述梯度值;
第七确定单元,用于将所述梯度值作为碰撞法线,通过以下公式确定所述滑行方向:
其中,v'为滑行方向,v为所述操作方向,n为所述碰撞法线。
可选地,所述装置还包括:
第二控制模块,用于在所述滑行方向由第一方向转换为第二方向,且所述第一方向与所述第二方向的夹角大于目标角度的情况下,控制所述虚拟角色停止移动,直至当前操作所述虚拟角色移动的方向发生改变。
可选地,所述装置还包括:
第五确定模块,用于在检测到对所述虚拟角色执行所述第二移动操作的情况下,根据所述虚拟角色的半径和所述目标有号距离确定第一有号距离;
第一移动模块,用于沿所述目标有号距离的梯度值方向将所述虚拟角色移动到所述第一有号距离所对应的位置上。
可选地,所述第三移动操作被设置为不允许穿越所述静态障碍区域,其中,在检测到对所述虚拟角色执行所述第三移动操作的情况下,所述装置还包括:
第六确定模块,用于在所述第二位置与所述第三位置的连线穿越了所述静态障碍区域的情况下,确定所述虚拟角色与所述静态障碍区域发生了碰撞;
第二移动模块,用于沿所述第三位置到所述第二位置的方向将所述虚拟角色移动到所对应的第二有号距离大于所述虚拟角色的半径的位置上。
可选地,所述装置还包括:
生成模块,用于在所述虚拟地图上出现动态障碍区域的情况下,生成所述动态障碍区域所对应的第一有号距离集合;
第七确定模块,用于将所述第一有号距离集合与所述预先确定的有号距离集合的交集确定为目标有号距离集合;
第八确定模块,用于在所述目标有号距离集合中确定出所述目标中心点的所述目标有号距离;
第九确定模块,用于在所述目标有号距离小于所述虚拟角色的半径的情况下,确定出所述虚拟角色与所述虚拟地图中的障碍区域发生了碰撞,其中,所述虚拟地图中的障碍区域包括所述静态障碍区域和所述动态障碍区域。
根据本发明实施例的另一方面,还提供了一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项中所述的方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行上述任一项中所述的方法。
在本发明实施例中,采用在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,虚拟地图上还显示有静态障碍区域,静态障碍区域为被设置为不允许虚拟角色出现的区域;在预先确定的有号距离集合中确定出目标中心点的目标有号距离,其中,有号距离集合中的每个有号距离表示虚拟地图上的点到静态障碍区域的边界的最短距离;在目标有号距离小于虚拟角色的半径的情况下,确定出虚拟角色与静态障碍区域发生了碰撞的方式,预先确定了虚拟地图上的点到静态障碍区域的边界的有号距离,得到预先确定的有号距离集合,当在虚拟地图上对虚拟角色进行移动时,只需根据虚拟角色当前所在的位置确定其对应的目标有号距离,再确定该目标有号距离与虚拟角色的半径之间的关系,根据该目标有号距离与虚拟角色的半径之间的关系即可确定虚拟角色与虚拟地图中的障碍区域是否发生碰撞,如果目标有号距离小于虚拟角色的半径,则可以确定出虚拟角色与静态障碍区域发生了碰撞,从而降低了碰撞检测的复杂度,节省了碰撞检测的时间,也提高了碰撞检测的准确度,从而实现了提高碰撞检测的检测效率的技术效果,进而解决了相关技术中碰撞检测的检测效率较低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的碰撞检测方法的示意图;
图2是根据本发明实施例的一种可选的碰撞检测方法的应用环境示意图;
图3是根据本发明可选的实施方式的一种可选的碰撞检测方法的示意图;
图4是根据本发明可选的实施方式的另一种可选的碰撞检测方法的示意图一;
图5是根据本发明可选的实施方式的另一种可选的碰撞检测方法的示意图二;
图6是根据本发明可选的实施方式的另一种可选的碰撞检测方法的示意图三;
图7是根据本发明可选的实施方式的另一种可选的碰撞检测方法的示意图四;
图8是根据本发明可选的实施方式的另一种可选的碰撞检测方法的示意图五;
图9是根据本发明可选的实施方式的另一种可选的碰撞检测方法的示意图六;
图10是根据本发明可选的实施方式的另一种可选的碰撞检测方法的示意图七;
图11是根据本发明可选的实施方式的另一种可选的碰撞检测方法的示意图八;
图12是根据本发明可选的实施方式的另一种可选的碰撞检测方法的示意图九;
图13是根据本发明实施例的一种可选的碰撞检测装置的示意图;
图14是根据本发明实施例的一种可选的碰撞检测方法的应用场景示意图;以及
图15是根据本发明实施例的一种可选的电子装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例的一个方面,提供了一种碰撞检测方法,如图1所示,该方法包括:
S102,在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,虚拟地图上还显示有静态障碍区域,静态障碍区域为被设置为不允许虚拟角色出现的区域;
S104,在预先确定的有号距离集合中确定出目标中心点的目标有号距离,其中,有号距离集合中的每个有号距离表示虚拟地图上的点到静态障碍区域的边界的最短距离;
S106,在目标有号距离小于虚拟角色的半径的情况下,确定出虚拟角色与静态障碍区域发生了碰撞。
可选地,在本实施例中,上述碰撞检测方法可以应用于如图2所示的服务器202所构成的硬件环境中。如图2所示,服务器202在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,虚拟地图上还显示有静态障碍区域,静态障碍区域为被设置为不允许虚拟角色出现的区域;在预先确定的有号距离集合中确定出目标中心点的目标有号距离,其中,有号距离集合中的每个有号距离表示虚拟地图上的点到静态障碍区域的边界的最短距离;在目标有号距离小于虚拟角色的半径的情况下,确定出虚拟角色与静态障碍区域发生了碰撞。
可选地,在本实施例中,上述碰撞检测方法可以但不限于应用于游戏应用中的碰撞检测的场景中。其中,上述服务器可以但不限于为各种类型的客户端所对应的服务器,例如,在线教育客户端、即时通讯客户端、社区空间客户端、游戏客户端、购物客户端、浏览器客户端、金融客户端、多媒体客户端、直播客户端等。具体的,可以但不限于应用于在上述游戏客户端中的碰撞检测的场景中,或还可以但不限于应用于在上述即时通讯客户端中的游戏应用进行碰撞检测的场景中,以提高碰撞检测的检测效率。上述仅是一种示例,本实施例中对此不做任何限定。
可选地,在本实施例中,上述虚拟角色可以但不限于包括游戏玩家控制的虚拟角色,或者非游戏玩家控制的虚拟角色(NPC)等等。上述虚拟角色可以但不限于是人物、物品、道具、材料等等。
可选地,在本实施例中,上述静态障碍区域可以但不限于是虚拟地图中预先设置的障碍物所在的区域。比如:预先设置的障碍物可以但不限于包括墙、树、山、盒子、桶等等。
可选地,在本实施例中,有号距离集合中的每个有号距离表示虚拟地图上的点到静态障碍区域的边界的最短距离,位于静态障碍区域外的点所对应的有号距离为正值,位于静态障碍区域内的点所对应的有号距离为负值。
可选地,在本实施例中,有号距离集合又可以称为有号距离场(Signed DistanceField,,简称为SDF)。SDF表示空间中的点到形状表面(比如障碍物)的最短距离(纯量场),一般用距离为负值表示形状内部,正值表示形状外部。
可选地,在本实施例中,虚拟角色的半径可以但不限于根据检测精度的需要来进行设置。
在一个可选的实施方式中,如图3所示,在虚拟地图中获取虚拟角色A所对应的位置的目标中心点B,其中,虚拟地图上还显示有静态障碍区域C和D,静态障碍区域C和D为被设置为不允许虚拟角色出现的区域;在预先确定的有号距离集合中确定出目标中心点B的目标有号距离E(该目标有号距离E为目标中心点B到静态障碍区域C上M点的距离),其中,有号距离集合中的每个有号距离表示虚拟地图上的点到静态障碍区域的边界的最短距离,位于静态障碍区域外的点所对应的有号距离为正值,位于静态障碍区域内的点所对应的有号距离为负值;在目标有号距离E小于虚拟角色的半径R的情况下,确定出虚拟角色A与静态障碍区域C发生了碰撞。
可见,通过上述步骤,预先确定了虚拟地图上的点到静态障碍区域的边界的有号距离,得到预先确定的有号距离集合,当在虚拟地图上对虚拟角色进行移动时,只需根据虚拟角色当前所在的位置确定其对应的目标有号距离,再确定该目标有号距离与虚拟角色的半径之间的关系,根据该目标有号距离与虚拟角色的半径之间的关系即可确定虚拟角色与虚拟地图中的障碍区域是否发生碰撞,如果目标有号距离小于虚拟角色的半径,则可以确定出虚拟角色与静态障碍区域发生了碰撞,从而降低了碰撞检测的复杂度,节省了碰撞检测的时间,也提高了碰撞检测的准确度,从而实现了提高碰撞检测的检测效率的技术效果,进而解决了相关技术中碰撞检测的检测效率较低的技术问题。
作为一种可选的方案,在预先确定的有号距离集合中确定出虚拟地图中虚拟角色的目标中心点的目标有号距离之前,还包括:
S1,对虚拟地图进行栅格化处理,得到多个栅格;
S2,获取多个栅格中每个栅格的顶点所对应的有号距离;
S3,将包括多个栅格中每个栅格的顶点所对应的有号距离的集合确定为预先确定的有号距离集合。
可选地,在本实施例中,根据场景障碍生成如图4所示的栅格地图,深色框表示静态障碍区域。计算栅格中任意格子(x,y)到障碍栅格区B中最近格子的距离,从而得到一张栅格地图的SDF数据(即上述预先确定的有号距离集合)。如果使用2字节表示每个格子的SDF,256×256栅格地图的内存大小为256×256×2=128(KB)。节省了存储空间。
作为一种可选的方案,在预先确定的有号距离集合中确定出虚拟地图中虚拟角色的目标中心点的目标有号距离包括:
S1,从多个栅格中确定目标中心点所在的目标栅格;
S2,从预先确定的有号距离集合中获取目标栅格的四个目标顶点所对应的有号距离;
S3,根据四个目标顶点所对应的有号距离确定目标中心点的目标有号距离。
可选地,在本实施例中,Φ(x)表示x点的目标有号距离,表示点x在障碍物内,那么碰撞检测只需要得到点的Φ值,然后与碰撞半径r比较即可,表示角色与障碍发生了碰撞。由于栅格地图SDF数据是离散存储的,但角色移动是连续的,不可能把角色在一个栅格内任意位置的Φ值等同于栅格顶点,这样会在栅格边界产生巨变,因此无法直接查表获取角色所在位置的Φ值,如图5所示圆的圆心位置,可以根据周边栅格顶点的Φ值采样获取。因为距离本身是线性的,可以采用双线性过滤(bilinear filtering)采样角色位置的Φ值,根据角色所处栅格的四个顶点线性插值可得到场景任意点的Φ值。插值过程如下:
Φ(x,y)=(1-x)(1-y)Φ(0,0)+x(1-y)Φ(1,0)+(1-x)yΦ(0,1)+xyΦ(1,1);
由此完成SDF的碰撞检测,只需要查表和乘法计算,时间复杂度为O(1)。
作为一种可选的方案,在虚拟地图中获取虚拟角色所对应的位置的目标中心点包括:
S1,在检测到对虚拟角色执行第一移动操作的情况下,将虚拟角色在虚拟地图上沿第一移动操作的操作方向进行移动时虚拟角色所在的位置的中心点确定为目标中心点,其中,第一移动操作用于控制虚拟角色在虚拟地图上沿操作方向进行移动;
S2,在检测到对虚拟角色执行第二移动操作的情况下,将虚拟角色执行目标动作时所在位置的中心点确定为目标中心点,其中,第二移动操作用于控制虚拟角色在虚拟角色当前所在的第一位置执行目标动作;
S3,在检测到对虚拟角色执行第三移动操作的情况下,将第三位置的中心点确定为目标中心点,其中,第三移动操作用于控制虚拟角色从虚拟地图上的第二位置消失并出现在虚拟地图上的第三位置。
可选地,在本实施例中,在对虚拟角色的移动过程中(即检测到对虚拟角色执行第一移动操作),虚拟角色被控制执行动作后移动到障碍区域中(即检测到对虚拟角色执行第二移动操作),虚拟角色执行了不能超越障碍物的远距离移动(即检测到对虚拟角色执行第三移动操作)等等情况下,都有可能发生碰撞,需要将虚拟角色从障碍区域中移动出来,或者确定虚拟角色实际的移动位置。
可选地,在本实施例中,第一移动操作可以但不限于包括摇杆移动,点击地图移动等等操作。
可选地,在本实施例中,第二移动操作可以但不限于包括击飞、击退等操作。
可选地,在本实施例中,第三移动操作可以但不限于包括闪现、位移等操作。
作为一种可选的方案,在确定出虚拟角色与静态障碍区域发生了碰撞之后,还包括:
S1,在检测到对虚拟角色执行第一移动操作的情况下,根据操作方向和目标有号距离的梯度值确定虚拟角色在虚拟地图中的滑行方向;
S2,控制虚拟角色按照滑行方向沿静态障碍区域滑行。
可选地,在本实施例中,可以但不限于采用以下方式确定滑行方向包括:
步骤1,确定目标有号距离的梯度值;
步骤2,将梯度值作为碰撞法线,通过以下公式确定滑行方向:
其中,v′为滑行方向,v为操作方向,n为碰撞法线。
在一个可选的实施方式中,以摇杆操作控制虚拟角色移动为例,如图6所示,v表示摇杆方向(角色原始移动方向),当与障碍物发生碰撞后可以沿着v′方向滑行,v′和v的关系为:
上式中n为碰撞法线,SDF为纯量场,纯量场中某一点上的梯度(gradient)指向纯量场增长最快的方向,因此可以利用SDF的梯度作为碰撞法线:
同时Φ(x)几乎随处可导,可以使用有限差分法(inite diference)求出x处的梯度:
从而得到碰撞法线n,根据n求出滑行方向实现碰撞后绕障碍滑行。
作为一种可选的方案,在控制虚拟角色按照滑行方向沿静态障碍区域滑行之后,还包括:
S1,在滑行方向由第一方向转换为第二方向,且第一方向与第二方向的夹角大于目标角度的情况下,控制虚拟角色停止移动,直至当前操作虚拟角色移动的方向发生改变。
虽然SDF能很好的解决绕障碍滑行的问题,但在实际使用中如遇到凹形障碍物,则可能会出现角色在障碍物内不断往返的情况。如图7所示,两个平行的箭头表示摇杆方向,另外两个箭头表示角色遇到障碍后绕障碍滑行方向,如果摇杆方向一直保持不变,则角色在A处向右下滑行,到达B处后又会向右上滑行,从而导致角色在凹型槽内AB间不断往返走不出去。
可选地,在本实施例中,为了解决上述问题,当前后滑行方向相差大于90度时停止滑动,重新拨动摇杆才能再次移动。
作为一种可选的方案,在确定出虚拟角色与静态障碍区域发生了碰撞之后,还包括:
S1,在检测到对虚拟角色执行第二移动操作的情况下,根据虚拟角色的半径和目标有号距离确定第一有号距离;
S2,沿目标有号距离的梯度值方向将虚拟角色移动到第一有号距离所对应的位置上。
可选地,在本实施例中,以MOBA类游戏为例,有大量的击飞、击退等技能,角色难免会被击中“卡”在障碍区域中,对于这种情况需要能够快速的将角色移动最近的合适位置。因为梯度表示最大的变化方向,可用梯度快速查找合适位置x′:
其中,x为虚拟角色被击飞或者击退的位置,Φ(x)为虚拟角色被击飞或者击退的位置对应的目标有号距离,ravatar-Φ(x)表示第一有号距离, 为目标有号距离的梯度方向。
如图8所示:n为梯度方向,r=0.5为角色半径,虚拟角色被击飞或者击退的位置位于障碍内,圆心Φ=-0.1,需要将其移动到障碍物外的合法位置,圆心Φ=0.6,0.6=r-(-0.1)。
可选地,在本实施例中,当障碍是凸区域时一次迭代就能找到合适位置,非凸区域时一次迭代可能无法去到合适位置,而MOBA类地形大多是非凸区域,因此可以多次迭代,直到Φ(x′)≥r时停止。
作为一种可选的方案,第三移动操作被设置为不允许穿越静态障碍区域,其中,在检测到对虚拟角色执行第三移动操作的情况下,还包括:
S1,在第二位置与第三位置的连线穿越了静态障碍区域的情况下,确定虚拟角色与静态障碍区域发生了碰撞;
S2,沿第三位置到第二位置的方向将虚拟角色移动到所对应的第二有号距离大于虚拟角色的半径的位置上。
可选地,在本实施例中,当角色进行瞬时远距离移动,比如闪现,但又要求不能越过障碍时,那么就可以进行连续碰撞检测用来规避穿越障碍的情况,尅使用圆盘投射(diskcasting)进行规避,基于SDF的圆盘投射优势在于迭代步进可以使用当前的位置的Φ值,这大大降低了迭代次数。
可选地,在本实施例中,如图9所示,虚拟角色从位置A进行闪现,闪现的最大冲刺距离超越了障碍物,则采用以下迭代方式将其移动到位置B。
//oriPos:原始位置,dir:冲刺方向,radius:角色半径,maxDist:最大冲刺距离
public Vector2 DiskCast(Vector2 origin,Vector2 dir,float radius,floatmaxDist){
float t=0f;
while(true){
Vector2 p=origin+dir*t;
float sd=Sample(p);
if(sd<=radius)return p;
t+=sd-radius;
if(t>=maxDist)return origin+dir*maxDist;
}
}
作为一种可选的方案,在虚拟地图中获取虚拟角色所对应的位置的目标中心点之后,还包括:
S1,在虚拟地图上出现动态障碍区域的情况下,生成动态障碍区域所对应的第一有号距离集合;
S2,将第一有号距离集合与预先确定的有号距离集合的交集确定为目标有号距离集合;
S3,在目标有号距离集合中确定出目标中心点的目标有号距离;
S4,在目标有号距离小于虚拟角色的半径的情况下,确定出虚拟角色与虚拟地图中的障碍区域发生了碰撞,其中,虚拟地图中的障碍区域包括静态障碍区域和动态障碍区域。
在MOBA游戏中英雄技能带有阻挡效果是非常常见的,会在运行时生成动态障碍物。可以采用SDF的CSG运算规则来解决动态障碍的情况,SDF的CSG运算规则为:
交集ΦA∪B=min(ΦA,ΦB)
并集ΦA∩B=max(ΦA,ΦB)
补集ΦA\B=ΦA∩BC=max(ΦA,-ΦB)
那么对于动态障碍物的情况,可以使用预生成的静态地图SDF和动态障碍SDF的叠加,即取二者的交集。同时动态障碍SDF可以直接使用圆盘和矩形SDF来表示。
如图10所示,圆盘SDF:Φ(x)=∥x-c∥-r
如图11所示,矩形SDF:d=(x-c)R(-θ)-b
Φ(x)=min(max(dx,dy),0)+∥max(d,0)∥
盘为内部不可行走的动态阻挡,对于内部可以行走的环形阻挡则可视为外盘对内盘的补集。对于部分英雄技能的打洞等跨越障碍的功能则可通过补集运算即可实现。
可选地,在本实施例中,上述生成的预先确定的有号距离集合还可以应用在AI寻路中。MOBA类游戏小兵、野怪、陪玩角色AI都需要用到寻路,SDF亦能很好的处理这个问题。寻路算法可用经典的AStar或者JPS,通过修改探索函数,以SDF生成可行走的节点即可,判断探索节点的邻节点位置是否可以行走只需要判断其是否满足Φ(x)≥r。
对于可行走对象寻完路径之后行进过程中遇到动态障碍的情况,如果在已寻路径中按照摇杆移动方式从当前节点向下一个节点行走,则会自动绕障碍滑行,无需重新寻路。只要在遇到前面提到的凹形障碍中走不出来(即前后位置无变化)的情况下再进行一次寻路即可。
基于SDF的AStar寻路还能通过将Φ加入代价评估从而非常容易打破对称性,通过修改行走对象的半径r实现远离或者贴近障碍。
可选地,在本实施例中,上述生成的预先确定的有号距离集合还可以应用在动态地图的生成过程中。对于游戏中地图本身就是由均匀网格所组成的场景,可以地图上均匀的网格为输入数据,将每一个网格都看作是一个矩形,可以用矩形SDF公式来表示单个矩形。在均匀网格地图上,当角色在一帧内行走的距离不会超过单个网格大小时,可以通过每帧去检测与玩家所在网格相邻的8个网格的碰撞来实现规避障碍物的功能。如图12所示,当玩家行走之后位于网格4时,圆圈代表玩家,此时只需检测格子6、0、5与玩家的最近距离来进行碰撞规避。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
根据本发明实施例的另一个方面,还提供了一种用于实施上述碰撞检测方法的碰撞检测装置,如图13所示,该装置包括:
第一获取模块1302,用于在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,虚拟地图上还显示有静态障碍区域,静态障碍区域为被设置为不允许虚拟角色出现的区域;
第一确定模块1304,用于在预先确定的有号距离集合中确定出目标中心点的目标有号距离,其中,有号距离集合中的每个有号距离表示虚拟地图上的点到静态障碍区域的边界的最短距离;
第二确定模块1306,用于在目标有号距离小于虚拟角色的半径的情况下,确定出虚拟角色与静态障碍区域发生了碰撞。
可选地,上述装置还包括:
处理模块,用于对虚拟地图进行栅格化处理,得到多个栅格;
第二获取模块,用于获取多个栅格中每个栅格的顶点所对应的有号距离;
第三确定模块,用于将包括多个栅格中每个栅格的顶点所对应的有号距离的集合确定为预先确定的有号距离集合。
可选地,第一确定模块包括:
第一确定单元,用于从多个栅格中确定目标中心点所在的目标栅格;
获取单元,用于从预先确定的有号距离集合中获取目标栅格的四个目标顶点所对应的有号距离;
第二确定单元,用于根据四个目标顶点所对应的有号距离确定目标中心点的目标有号距离。
可选地,第一获取模块包括:
第三确定单元,用于在检测到对虚拟角色执行第一移动操作的情况下,将虚拟角色在虚拟地图上沿第一移动操作的操作方向进行移动时虚拟角色所在的位置的中心点确定为目标中心点,其中,第一移动操作用于控制虚拟角色在虚拟地图上沿操作方向进行移动;
第四确定单元,用于在检测到对虚拟角色执行第二移动操作的情况下,将虚拟角色执行目标动作时所在位置的中心点确定为目标中心点,其中,第二移动操作用于控制虚拟角色在虚拟角色当前所在的第一位置执行目标动作;
第五确定单元,用于在检测到对虚拟角色执行第三移动操作的情况下,将第三位置的中心点确定为目标中心点,其中,第三移动操作用于控制虚拟角色从虚拟地图上的第二位置消失并出现在虚拟地图上的第三位置。
可选地,上述装置还包括:
第四确定模块,用于在检测到对虚拟角色执行第一移动操作的情况下,根据操作方向和目标有号距离的梯度值确定虚拟角色在虚拟地图中的滑行方向;
第一控制模块,用于控制虚拟角色按照滑行方向沿静态障碍区域滑行。
可选地,第四确定模块包括:
第六确定单元,用于确定目标有号距离的梯度值;
第七确定单元,用于将梯度值作为碰撞法线,通过以下公式确定滑行方向:
其中,v'为滑行方向,v为操作方向,n为碰撞法线。
可选地,上述装置还包括:
第二控制模块,用于在滑行方向由第一方向转换为第二方向,且第一方向与第二方向的夹角大于目标角度的情况下,控制虚拟角色停止移动,直至当前操作虚拟角色移动的方向发生改变。
可选地,上述装置还包括:
第五确定模块,用于在检测到对虚拟角色执行第二移动操作的情况下,根据虚拟角色的半径和目标有号距离确定第一有号距离;
第一移动模块,用于沿目标有号距离的梯度值方向将虚拟角色移动到第一有号距离所对应的位置上。
可选地,第三移动操作被设置为不允许穿越静态障碍区域,其中,在检测到对虚拟角色执行第三移动操作的情况下,上述装置还包括:
第六确定模块,用于在第二位置与第三位置的连线穿越了静态障碍区域的情况下,确定虚拟角色与静态障碍区域发生了碰撞;
第二移动模块,用于沿第三位置到第二位置的方向将虚拟角色移动到所对应的第二有号距离大于虚拟角色的半径的位置上。
可选地,上述装置还包括:
生成模块,用于在虚拟地图上出现动态障碍区域的情况下,生成动态障碍区域所对应的第一有号距离集合;
第七确定模块,用于将第一有号距离集合与预先确定的有号距离集合的交集确定为目标有号距离集合;
第八确定模块,用于在目标有号距离集合中确定出目标中心点的目标有号距离;
第九确定模块,用于在目标有号距离小于虚拟角色的半径的情况下,确定出虚拟角色与虚拟地图中的障碍区域发生了碰撞,其中,虚拟地图中的障碍区域包括静态障碍区域和动态障碍区域。
本发明实施例的应用环境可以但不限于参照上述实施例中的应用环境,本实施例中对此不再赘述。本发明实施例提供了用于实施上述实时通信的连接方法的一种可选的具体应用示例。
作为一种可选的实施例,上述碰撞检测方法可以但不限于应用于如图14所示的检测虚拟角色与障碍物是否发生碰撞的场景中。当前主流的MOBA手游均采用摇杆移动,为了更好的用户体验,摇杆移动需要解决遇到障碍后绕障碍滑行的问题。在本场景中,提供一种基于SDF的摇杆移动解决方案。SDF(全称signed distance ield)即有号距离场,表示空间中点到形状表面的最短距离,一般用正值表示形状外部,负值表示形状内部。通过点到多边形(障碍物)的距离离线计算栅格顶点的有号距离从而生成SDF数据。运行时使用双线性过滤采样可以获得地图任意点的有号距离值,与角色碰撞半径比较判断是否和障碍发生碰撞,检测过程只需查表和插值乘法计算,时间复杂度为O(1)。
SDF的梯度方向代表最大的变化方向,因此可以将梯度算子作为边界法线,当角色与障碍发生碰撞后可沿着法线垂直方向滑行,同样可以根据梯度方向快速迭代来处理在MOBA游戏中击飞后“卡”在障碍中的问题。对于瞬间位移(比如闪现)且不能穿越障碍的需求,可采用圆盘投射,以有号距离作为迭代步长。对于AI寻路,SDF也可以通过修改探索函数(判断有号距离与碰撞半径的大小)实现,且可修改碰撞半径搜索贴近或远离障碍物的路径,打破寻路对称性。
对于MOBA游戏中动态障碍的处理,可使用程序式SDF和CSG运算来实现。
根据本发明实施例的又一个方面,还提供了一种用于实施上述碰撞检测的电子装置,如图15所示,该电子装置包括:一个或多个(图中仅示出一个)处理器1502、存储器1504、传感器1506、编码器1508以及传输装置1510,该存储器中存储有计算机程序,该处理器被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子装置可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,所述虚拟地图上还显示有静态障碍区域,所述静态障碍区域为被设置为不允许所述虚拟角色出现的区域;
S2,在预先确定的有号距离集合中确定出所述目标中心点的目标有号距离,其中,所述有号距离集合中的每个有号距离表示所述虚拟地图上的点到所述静态障碍区域的边界的最短距离;
S3,在所述目标有号距离小于所述虚拟角色的半径的情况下,确定出所述虚拟角色与所述静态障碍区域发生了碰撞。
可选地,本领域普通技术人员可以理解,图15所示的结构仅为示意,电子装置也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图15其并不对上述电子装置的结构造成限定。例如,电子装置还可包括比图15中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图15所示不同的配置。
其中,存储器1502可用于存储软件程序以及模块,如本发明实施例中的碰撞检测方法和装置对应的程序指令/模块,处理器1504通过运行存储在存储器1502内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的目标组件的控制方法。存储器1502可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1502可进一步包括相对于处理器1504远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置1510用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1510包括一个网络适配器(NetworkInterface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1510为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器1502用于存储应用程序。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,所述虚拟地图上还显示有静态障碍区域,所述静态障碍区域为被设置为不允许所述虚拟角色出现的区域;
S2,在预先确定的有号距离集合中确定出所述目标中心点的目标有号距离,其中,所述有号距离集合中的每个有号距离表示所述虚拟地图上的点到所述静态障碍区域的边界的最短距离;
S3,在所述目标有号距离小于所述虚拟角色的半径的情况下,确定出所述虚拟角色与所述静态障碍区域发生了碰撞。
可选地,存储介质还被设置为存储用于执行上述实施例中的方法中所包括的步骤的计算机程序,本实施例中对此不再赘述。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (15)

1.一种碰撞检测方法,其特征在于,包括:
在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,所述虚拟地图上还显示有静态障碍区域,所述静态障碍区域为被设置为不允许所述虚拟角色出现的区域;
在预先确定的有号距离集合中确定出所述目标中心点的目标有号距离,其中,所述有号距离集合中的每个有号距离表示所述虚拟地图上的点到所述静态障碍区域的边界的最短距离;
在所述目标有号距离小于所述虚拟角色的半径的情况下,确定出所述虚拟角色与所述静态障碍区域发生了碰撞。
2.根据权利要求1所述的方法,其特征在于,在预先确定的有号距离集合中确定出所述虚拟地图中所述虚拟角色的目标中心点的目标有号距离之前,所述方法还包括:
对所述虚拟地图进行栅格化处理,得到多个栅格;
获取所述多个栅格中每个栅格的顶点所对应的有号距离;
将包括所述多个栅格中每个栅格的顶点所对应的有号距离的集合确定为所述预先确定的有号距离集合。
3.根据权利要求2所述的方法,其特征在于,在预先确定的有号距离集合中确定出所述虚拟地图中所述虚拟角色的目标中心点的目标有号距离包括:
从所述多个栅格中确定所述目标中心点所在的目标栅格;
从所述预先确定的有号距离集合中获取所述目标栅格的四个目标顶点所对应的有号距离;
根据所述四个目标顶点所对应的有号距离确定所述目标中心点的所述目标有号距离。
4.根据权利要求1所述的方法,其特征在于,在虚拟地图中获取虚拟角色所对应的位置的目标中心点包括:
在检测到对所述虚拟角色执行第一移动操作的情况下,将所述虚拟角色在所述虚拟地图上沿所述第一移动操作的操作方向进行移动时所述虚拟角色所在的位置的中心点确定为所述目标中心点,其中,所述第一移动操作用于控制所述虚拟角色在所述虚拟地图上沿所述操作方向进行移动;
在检测到对所述虚拟角色执行第二移动操作的情况下,将所述虚拟角色执行目标动作时所在位置的中心点确定为所述目标中心点,其中,所述第二移动操作用于控制所述虚拟角色在所述虚拟角色当前所在的第一位置执行所述目标动作;
在检测到对所述虚拟角色执行第三移动操作的情况下,将第三位置的中心点确定为所述目标中心点,其中,所述第三移动操作用于控制所述虚拟角色从所述虚拟地图上的第二位置消失并出现在所述虚拟地图上的所述第三位置。
5.根据权利要求4所述的方法,其特征在于,在确定出所述虚拟角色与所述静态障碍区域发生了碰撞之后,所述方法还包括:
在检测到对所述虚拟角色执行所述第一移动操作的情况下,根据所述操作方向和所述目标有号距离的梯度值确定所述虚拟角色在所述虚拟地图中的滑行方向;
控制所述虚拟角色按照所述滑行方向沿所述静态障碍区域滑行。
6.根据权利要求5所述的方法,其特征在于,根据所述操作方向和所述目标有号距离的梯度值确定所述虚拟角色在所述虚拟地图中的滑行方向包括:
确定所述目标有号距离的所述梯度值;
将所述梯度值作为碰撞法线,通过以下公式确定所述滑行方向:
其中,v′为滑行方向,v为所述操作方向,n为所述碰撞法线。
7.根据权利要求5所述的方法,其特征在于,在控制所述虚拟角色按照所述滑行方向沿所述静态障碍区域滑行之后,所述方法还包括:
在所述滑行方向由第一方向转换为第二方向,且所述第一方向与所述第二方向的夹角大于目标角度的情况下,控制所述虚拟角色停止移动,直至当前操作所述虚拟角色移动的方向发生改变。
8.根据权利要求4所述的方法,其特征在于,在确定出所述虚拟角色与所述静态障碍区域发生了碰撞之后,所述方法还包括:
在检测到对所述虚拟角色执行所述第二移动操作的情况下,根据所述虚拟角色的半径和所述目标有号距离确定第一有号距离;
沿所述目标有号距离的梯度值方向将所述虚拟角色移动到所述第一有号距离所对应的位置上。
9.根据权利要求4所述的方法,其特征在于,所述第三移动操作被设置为不允许穿越所述静态障碍区域,其中,在检测到对所述虚拟角色执行所述第三移动操作的情况下,所述方法还包括:
在所述第二位置与所述第三位置的连线穿越了所述静态障碍区域的情况下,确定所述虚拟角色与所述静态障碍区域发生了碰撞;
沿所述第三位置到所述第二位置的方向将所述虚拟角色移动到所对应的第二有号距离大于所述虚拟角色的半径的位置上。
10.根据权利要求1所述的方法,其特征在于,在虚拟地图中获取虚拟角色所对应的位置的目标中心点之后,所述方法还包括:
在所述虚拟地图上出现动态障碍区域的情况下,生成所述动态障碍区域所对应的第一有号距离集合;
将所述第一有号距离集合与所述预先确定的有号距离集合的交集确定为目标有号距离集合;
在所述目标有号距离集合中确定出所述目标中心点的所述目标有号距离;
在所述目标有号距离小于所述虚拟角色的半径的情况下,确定出所述虚拟角色与所述虚拟地图中的障碍区域发生了碰撞,其中,所述虚拟地图中的障碍区域包括所述静态障碍区域和所述动态障碍区域。
11.一种碰撞检测装置,其特征在于,包括:
第一获取模块,用于在虚拟地图中获取虚拟角色所对应的位置的目标中心点,其中,所述虚拟地图上还显示有静态障碍区域,所述静态障碍区域为被设置为不允许所述虚拟角色出现的区域;
第一确定模块,用于在预先确定的有号距离集合中确定出所述目标中心点的目标有号距离,其中,所述有号距离集合中的每个有号距离表示所述虚拟地图上的点到所述静态障碍区域的边界的最短距离;
第二确定模块,用于在所述目标有号距离小于所述虚拟角色的半径的情况下,确定出所述虚拟角色与所述静态障碍区域发生了碰撞。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
处理模块,用于对所述虚拟地图进行栅格化处理,得到多个栅格;
第二获取模块,用于获取所述多个栅格中每个栅格的顶点所对应的有号距离;
第三确定模块,用于将包括所述多个栅格中每个栅格的顶点所对应的有号距离的集合确定为所述预先确定的有号距离集合。
13.根据权利要求12所述的装置,其特征在于,第一确定模块包括:
第一确定单元,用于从所述多个栅格中确定所述目标中心点所在的目标栅格;
获取单元,用于从所述预先确定的有号距离集合中获取所述目标栅格的四个目标顶点所对应的有号距离;
第二确定单元,用于根据所述四个目标顶点所对应的有号距离确定所述目标中心点的所述目标有号距离。
14.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至10任一项中所述的方法。
15.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至10任一项中所述的方法。
CN201910350716.7A 2019-04-28 2019-04-28 碰撞检测方法、装置、存储介质及电子装置 Active CN110180182B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910350716.7A CN110180182B (zh) 2019-04-28 2019-04-28 碰撞检测方法、装置、存储介质及电子装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910350716.7A CN110180182B (zh) 2019-04-28 2019-04-28 碰撞检测方法、装置、存储介质及电子装置

Publications (2)

Publication Number Publication Date
CN110180182A true CN110180182A (zh) 2019-08-30
CN110180182B CN110180182B (zh) 2021-03-26

Family

ID=67715259

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910350716.7A Active CN110180182B (zh) 2019-04-28 2019-04-28 碰撞检测方法、装置、存储介质及电子装置

Country Status (1)

Country Link
CN (1) CN110180182B (zh)

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110681156A (zh) * 2019-10-10 2020-01-14 腾讯科技(深圳)有限公司 虚拟世界中的虚拟角色控制方法、装置、设备及存储介质
CN110975283A (zh) * 2019-11-28 2020-04-10 腾讯科技(深圳)有限公司 虚拟射击道具的处理方法和装置、存储介质及电子装置
CN111111187A (zh) * 2019-11-28 2020-05-08 玩心(上海)网络科技有限公司 基于网格的在线游戏寻路方法和装置
CN111569424A (zh) * 2020-05-14 2020-08-25 北京代码乾坤科技有限公司 游戏场景内的物理结算方法和装置
CN111773723A (zh) * 2020-07-29 2020-10-16 网易(杭州)网络有限公司 碰撞检测方法和装置
CN111921195A (zh) * 2020-09-24 2020-11-13 成都完美天智游科技有限公司 三维场景的生成方法和装置、存储介质和电子装置
CN112642155A (zh) * 2020-12-23 2021-04-13 上海米哈游天命科技有限公司 一种角色控制方法、装置、设备及存储介质
CN112774204A (zh) * 2021-01-22 2021-05-11 北京字跳网络技术有限公司 一种角色碰撞规避方法、装置、设备以及存储介质
CN113450400A (zh) * 2021-06-28 2021-09-28 思享智汇(海南)科技有限责任公司 基于可变对象的碰撞检测方法、游戏交互方法及直播系统
CN113559515A (zh) * 2021-07-30 2021-10-29 腾讯科技(深圳)有限公司 对象控制方法和装置、存储介质及电子设备
CN114253647A (zh) * 2021-12-21 2022-03-29 北京字跳网络技术有限公司 元素展示方法、装置、电子设备及存储介质
CN114949858A (zh) * 2022-06-06 2022-08-30 厦门飞信网络科技有限公司 一种游戏中角色移动的碰撞检测方法
CN115115773A (zh) * 2022-04-29 2022-09-27 腾讯科技(深圳)有限公司 碰撞检测方法、装置、设备及存储介质
WO2022218104A1 (zh) * 2021-04-15 2022-10-20 北京字跳网络技术有限公司 虚拟形象的碰撞处理方法、装置、电子设备和存储介质
CN116036603A (zh) * 2023-01-28 2023-05-02 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机及可读存储介质
CN116617669A (zh) * 2023-05-23 2023-08-22 广州盈风网络科技有限公司 一种碰撞测试及其检测方法、设备与存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101158966A (zh) * 2007-11-01 2008-04-09 北京航空航天大学 一种基于矢量和栅格混合表示的城市环境量化数据组织方法
JP5236697B2 (ja) * 2010-07-09 2013-07-17 株式会社コナミデジタルエンタテインメント ゲーム装置、ゲーム装置の制御方法、及びプログラム
CN105488851A (zh) * 2015-11-30 2016-04-13 腾讯科技(深圳)有限公司 实时虚拟场景中碰撞体之间碰撞探测的方法和装置
CN107042018A (zh) * 2016-02-05 2017-08-15 腾讯科技(深圳)有限公司 控制对象的空间位置确定方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101158966A (zh) * 2007-11-01 2008-04-09 北京航空航天大学 一种基于矢量和栅格混合表示的城市环境量化数据组织方法
JP5236697B2 (ja) * 2010-07-09 2013-07-17 株式会社コナミデジタルエンタテインメント ゲーム装置、ゲーム装置の制御方法、及びプログラム
CN105488851A (zh) * 2015-11-30 2016-04-13 腾讯科技(深圳)有限公司 实时虚拟场景中碰撞体之间碰撞探测的方法和装置
CN107042018A (zh) * 2016-02-05 2017-08-15 腾讯科技(深圳)有限公司 控制对象的空间位置确定方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YMIKU: "Distance-Fields-collision-detection", 《HTTPS://GITHUB.COM/YMIKU/DISTANCE-FIELDS-COLLISION-DETECTION》 *

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110681156B (zh) * 2019-10-10 2021-10-29 腾讯科技(深圳)有限公司 虚拟世界中的虚拟角色控制方法、装置、设备及存储介质
CN110681156A (zh) * 2019-10-10 2020-01-14 腾讯科技(深圳)有限公司 虚拟世界中的虚拟角色控制方法、装置、设备及存储介质
CN110975283A (zh) * 2019-11-28 2020-04-10 腾讯科技(深圳)有限公司 虚拟射击道具的处理方法和装置、存储介质及电子装置
CN111111187A (zh) * 2019-11-28 2020-05-08 玩心(上海)网络科技有限公司 基于网格的在线游戏寻路方法和装置
CN111111187B (zh) * 2019-11-28 2023-07-14 玩心(北京)网络科技有限公司 基于网格的在线游戏寻路方法和装置
CN111569424A (zh) * 2020-05-14 2020-08-25 北京代码乾坤科技有限公司 游戏场景内的物理结算方法和装置
CN111569424B (zh) * 2020-05-14 2023-04-28 北京代码乾坤科技有限公司 游戏场景内的物理结算方法和装置
CN111773723A (zh) * 2020-07-29 2020-10-16 网易(杭州)网络有限公司 碰撞检测方法和装置
CN111921195B (zh) * 2020-09-24 2020-12-29 成都完美天智游科技有限公司 三维场景的生成方法和装置、存储介质和电子装置
CN111921195A (zh) * 2020-09-24 2020-11-13 成都完美天智游科技有限公司 三维场景的生成方法和装置、存储介质和电子装置
CN112642155A (zh) * 2020-12-23 2021-04-13 上海米哈游天命科技有限公司 一种角色控制方法、装置、设备及存储介质
CN112642155B (zh) * 2020-12-23 2023-04-07 上海米哈游天命科技有限公司 一种角色控制方法、装置、设备及存储介质
CN112774204A (zh) * 2021-01-22 2021-05-11 北京字跳网络技术有限公司 一种角色碰撞规避方法、装置、设备以及存储介质
CN112774204B (zh) * 2021-01-22 2023-10-20 北京字跳网络技术有限公司 一种角色碰撞规避方法、装置、设备以及存储介质
WO2022218104A1 (zh) * 2021-04-15 2022-10-20 北京字跳网络技术有限公司 虚拟形象的碰撞处理方法、装置、电子设备和存储介质
CN113450400A (zh) * 2021-06-28 2021-09-28 思享智汇(海南)科技有限责任公司 基于可变对象的碰撞检测方法、游戏交互方法及直播系统
CN113559515A (zh) * 2021-07-30 2021-10-29 腾讯科技(深圳)有限公司 对象控制方法和装置、存储介质及电子设备
CN113559515B (zh) * 2021-07-30 2023-11-14 腾讯科技(深圳)有限公司 对象控制方法和装置、存储介质及电子设备
CN114253647A (zh) * 2021-12-21 2022-03-29 北京字跳网络技术有限公司 元素展示方法、装置、电子设备及存储介质
CN114253647B (zh) * 2021-12-21 2024-08-20 北京字跳网络技术有限公司 元素展示方法、装置、电子设备及存储介质
CN115115773A (zh) * 2022-04-29 2022-09-27 腾讯科技(深圳)有限公司 碰撞检测方法、装置、设备及存储介质
CN114949858A (zh) * 2022-06-06 2022-08-30 厦门飞信网络科技有限公司 一种游戏中角色移动的碰撞检测方法
CN114949858B (zh) * 2022-06-06 2024-10-11 厦门飞信网络科技有限公司 一种游戏中角色移动的碰撞检测方法
CN116036603B (zh) * 2023-01-28 2023-05-30 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机及可读存储介质
CN116036603A (zh) * 2023-01-28 2023-05-02 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机及可读存储介质
CN116617669A (zh) * 2023-05-23 2023-08-22 广州盈风网络科技有限公司 一种碰撞测试及其检测方法、设备与存储介质
CN116617669B (zh) * 2023-05-23 2024-06-04 广州盈风网络科技有限公司 一种碰撞测试及其检测方法、设备与存储介质

Also Published As

Publication number Publication date
CN110180182B (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
CN110180182A (zh) 碰撞检测方法、装置、存储介质及电子装置
Anderson et al. On evaluation of embodied navigation agents
CN105955254B (zh) 一种适用于机器人路径搜索的改进的a*算法
CN110523081A (zh) 导航寻路路径的规划方法及装置
CN110368688A (zh) 动画的显示方法、装置、存储介质及电子装置
CN105467992B (zh) 移动电子设备路径的确定方法和装置
Thalmann et al. Autonomous virtual actors based on virtual sensors
Yokoyama et al. Success weighted by completion time: A dynamics-aware evaluation criteria for embodied navigation
CN110687903B (zh) 可移动机器人受困判断方法、装置与运动控制方法、装置
Lima et al. A probabilistic cellular automata ant memory model for a swarm of foraging robots
CN114470775A (zh) 虚拟场景中的对象处理方法、装置、设备及存储介质
Burelli et al. Global search for occlusion minimisation in virtual camera control
Rahmani et al. Towards a human-like approach to path finding
Marcolino et al. No robot left behind: Coordination to overcome local minima in swarm navigation
CN109242973A (zh) 一种碰撞测试方法、装置、电子设备及存储介质
Buro et al. On the development of a free RTS game engine
Krautmacher et al. AIS based robot navigation in a rescue scenario
CN110448900A (zh) 游戏中控制对象的方法、装置和游戏设备
Vitek et al. Intelligent agents in games: Review with an open-source tool
Xu et al. Procedural guard placement for stealth games
Tews et al. Thinking as one: Coordination of multiple mobile robots by shared representations
Stamford et al. Pathfinding in partially explored games environments: The application of the A* Algorithm with occupancy grids in Unity3D
Vecchio et al. MIDGARD: A simulation platform for autonomous navigation in unstructured environments
Blake et al. Human assisted capture-the-flag in an urban environment
Morales Díaz Solving the take down and body hiding problems

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