一种角色碰撞规避方法、装置、设备以及存储介质

文档序号:623983 发布日期:2021-05-11 浏览:19次 >En<

阅读说明:本技术 一种角色碰撞规避方法、装置、设备以及存储介质 (Role collision avoidance method, device, equipment and storage medium ) 是由 董兆喆 于 2021-01-22 设计创作,主要内容包括:本公开提供了一种角色碰撞规避方法、装置、设备以及存储介质,通过获取到的第一虚拟角色的第一运动信息和第二虚拟角色的第二运动信息确定出存在角色碰撞的情况下,控制第一虚拟角色进行运动规避,不仅可以保证虚拟角色控制的精准度和性能,还可以有效避免角色在行动中的碰撞,进而可以有效降低实际场景中角色因碰撞而产生模型穿插的概率,可以在有效保证场景的真实性和可靠性的前提下,使得画面更加逼真。(The utility model provides a role collision avoidance method, device, equipment and storage medium, under the condition that the existence of role collision is determined through the first motion information of the first virtual role and the second motion information of the second virtual role that acquire, control first virtual role to carry out the motion avoidance, not only can guarantee the precision and the performance of virtual role control, can also effectively avoid the collision of role in the motion, and then can effectively reduce the probability that the role produces model interlude because of the collision in the actual scene, can make the picture more lifelike under the prerequisite of effectively guaranteeing the authenticity and the reliability of scene.)

一种角色碰撞规避方法、装置、设备以及存储介质

技术领域

本公开涉及游戏技术领域,具体而言,涉及一种角色碰撞规避方法、装置、设备以及存储介质。

背景技术

随着电子科技的发展和网络技术的进步,电子游戏成为了越来越多人进行娱乐的选择,随着游戏技术的发展,MMO游戏(Massively Multiplayer Online,大型多人在线游戏)由于其具有极强的交互性,玩家可以在游戏中进行强烈的互动等优点,得到用户的青睐和喜爱。常见的MMO游戏有策略类或战略类、动作类、冒险类、模拟类、运动类、赛车类、角色扮演类等。

目前,在传统MMO游戏中,为了保护NPC(Non-Player Character,非玩家角色)受服务器控制的准确度和性能,NPC经常会发生重叠,即发生模型穿插,导致游戏画面失去真实性。

发明内容

本公开实施例至少提供一种角色碰撞规避方法、装置、设备以及存储介质。

第一方面,本公开实施例提供了一种角色碰撞规避方法,所述方法包括:

在第一虚拟角色响应目标运动事件进行运动的情况下,获取所述第一虚拟角色的第一运动信息,以及在距离所述第一虚拟角色预设范围内的第二虚拟角色的第二运动信息;所述第一虚拟角色为非玩家角色,所述第二虚拟角色为玩家角色或非玩家角色;

在基于所述第一运动信息和所述第二运动信息,确定所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间段内存在角色碰撞的情况下,获取所述第一虚拟角色躲避所述第二虚拟角色的避让信息;

控制所述第一虚拟角色按照所述避让信息进行运动。

一种可选的实施方式中,可以通过以下步骤确定所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间内存在角色碰撞:

确定所述第一运动信息指示的所述第一虚拟角色在所述未来预设时间段内的第一运动路线和第一运动速度信息,以及确定所述第二运动信息指示的所述第二虚拟角色在未来预设时间段内的第二运动路线和第二运动速度信息;

根据所述第一运动路线和所述第一运动速度信息,以及所述第二运动路线和所述第二运动速度信息,判断所述第一虚拟角色和所述第二虚拟角色在未来预设时间段内是否存在角色碰撞。

一种可选的实施方式中,根据所述第一运动路线和所述第一运动速度信息,以及所述第二运动路线和所述第二运动速度信息,判断所述第一虚拟角色和所述第二虚拟角色在未来预设时间段内是否存在角色碰撞,包括:

根据所述第一运动路线和所述第二运动路线,确定所述第一运动路线和所述第二运动路线之间是否存在预测碰撞位置,其中,所述预测相撞位置为所述第一运动路线和所述第二运动路线的交点,或者分别位于所述第一运动路线和所述第二运动路线上的距离小于预设距离的两个路线点;

若存在所述预测碰撞位置,基于所述第一运动速度信息和所述第一运动路线,确定所述第一虚拟角色运动到所述预测碰撞位置的第一时间,并基于所述第二运动速度信息和所述第二运动路线确定所述第二虚拟角色运动到所述预测碰撞位置的第二时间;

若所述第一时间与所述第二时间之间的时间差小于预设时间阈值,确定所述第一虚拟角色与所述第二虚拟角色之间在所述未来预设时间段内存在角色碰撞。

一种可选的实施方式中,所述获取所述第一虚拟角色躲避所述第二虚拟角色的避让信息,包括:

检测所述第二虚拟角色的路权优先级是否高于所述第一虚拟角色的路权优先级;

若所述第二虚拟角色的路权优先级高于所述第一虚拟角色的路权优先级,获取所述第一虚拟角色的实体规避半径;

基于所述实体规避半径,对所述第一虚拟角色的运动进行调整,得到所述第一虚拟角色的规避信息;

其中,所述规避信息包括以下信息中的一种或者多种:

避让运动路线;避让运动速度;避让运动方向;避让运动时长。

一种可选的实施方式中,在所述检测所述第二虚拟角色的路权优先级是否高于所述第一虚拟角色的路权优先级之后,所述方法还包括:

若所述第二虚拟角色的路权优先级低于所述第一虚拟角色的路权优先级,确定所述第一虚拟角色无需避让,控制所述第一虚拟角色按照所述第一运动信息运动。

一种可选的实施方式中,当所述第二虚拟角色为玩家角色,并且所述第一虚拟角色的路权优先级高于所述玩家角色的路权优先级时,所述方法包括:

为所述玩家角色绑定玩家物理层,并为所述第一虚拟角色绑定非玩家物理层;

在检测到所述玩家角色向所述第一虚拟角色运动,并且所述玩家角色和所述第一虚拟角色之间能够发生碰撞时,控制所述玩家物理层和所述非玩家物理层之间彼此挤压,以避免所述玩家角色和所述第一虚拟角色之间的至少部分角色重叠。

一种可选的实施方式中,所述方法包括:

在所述第一虚拟角色向所述玩家角色运动,并向所述玩家角色施加攻击时,检测所述第一虚拟角色是否为近身攻击所述玩家角色;

若所述第一虚拟角色为近身攻击所述玩家角色,在所述第一虚拟角色攻击所述玩家角色时,控制所述非玩家物理层与所述玩家物理层重叠;

在所述非玩家物理层与所述玩家物理层发生重叠时,控制所述第一虚拟角色与所述玩家角色部分重叠,以使所述第一虚拟角色完成攻击所述玩家角色。

第二方面,本公开实施例还提供一种角色碰撞规避装置,所述装置包括:

运动信息获取模块,用于在第一虚拟角色响应目标运动事件进行运动的情况下,获取所述第一虚拟角色的第一运动信息,以及在距离所述第一虚拟角色预设范围内的第二虚拟角色的第二运动信息;所述第一虚拟角色为非玩家角色,所述第二虚拟角色为玩家角色或非玩家角色;

避让信息获取模块,用于在基于所述第一运动信息和所述第二运动信息,确定所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间段内存在角色碰撞的情况下,获取所述第一虚拟角色躲避所述第二虚拟角色的避让信息;

避让控制模块,用于控制所述第一虚拟角色按照所述避让信息进行运动。

一种可选的实施方式中,所述装置还包括碰撞预测模块,所述碰撞预测模块可以通过以下步骤确定所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间内存在角色碰撞:

确定所述第一运动信息指示的所述第一虚拟角色在所述未来预设时间段内的第一运动路线和第一运动速度信息,以及确定所述第二运动信息指示的所述第二虚拟角色在未来预设时间段内的第二运动路线和第二运动速度信息;

根据所述第一运动路线和所述第一运动速度信息,以及所述第二运动路线和所述第二运动速度信息,判断所述第一虚拟角色和所述第二虚拟角色在未来预设时间段内是否存在角色碰撞。

一种可选的实施方式中,所述碰撞预测模块在用于根据所述第一运动路线和所述第一运动速度信息,以及所述第二运动路线和所述第二运动速度信息,判断所述第一虚拟角色和所述第二虚拟角色在未来预设时间段内是否存在角色碰撞时,具体用于:

根据所述第一运动路线和所述第二运动路线,确定所述第一运动路线和所述第二运动路线之间是否存在预测碰撞位置,其中,所述预测相撞位置为所述第一运动路线和所述第二运动路线的交点,或者分别位于所述第一运动路线和所述第二运动路线上的距离小于预设距离的两个路线点;

若存在所述预测碰撞位置,基于所述第一运动速度信息和所述第一运动路线,确定所述第一虚拟角色运动到所述预测碰撞位置的第一时间,并基于所述第二运动速度信息和所述第二运动路线确定所述第二虚拟角色运动到所述预测碰撞位置的第二时间;

若所述第一时间与所述第二时间之间的时间差小于预设时间阈值,确定所述第一虚拟角色与所述第二虚拟角色之间在所述未来预设时间段内存在角色碰撞。

一种可选的实施方式中,所述避让信息获取模块具体用于:

检测所述第二虚拟角色的路权优先级是否高于所述第一虚拟角色的路权优先级;

若所述第二虚拟角色的路权优先级高于所述第一虚拟角色的路权优先级,获取所述第一虚拟角色的实体规避半径;

基于所述实体规避半径,对所述第一虚拟角色的运动进行调整,得到所述第一虚拟角色的规避信息;

其中,所述规避信息包括以下信息中的一种或者多种:

避让运动路线;避让运动速度;避让运动方向;避让运动时长。

一种可选的实施方式中,所述避让控制模块还用于:

若所述第二虚拟角色的路权优先级低于所述第一虚拟角色的路权优先级,确定所述第一虚拟角色无需避让,控制所述第一虚拟角色按照所述第一运动信息运动。

一种可选的实施方式中,当所述第二虚拟角色为玩家角色,并且所述第一虚拟角色的路权优先级高于所述玩家角色的路权优先级时,所述装置还包括物理层绑定模块,所述物理层绑定模块用于:

为所述玩家角色绑定玩家物理层,并为所述第一虚拟角色绑定非玩家物理层;

在检测到所述玩家角色向所述第一虚拟角色运动,并且所述玩家角色和所述第一虚拟角色之间能够发生碰撞时,控制所述玩家物理层和所述非玩家物理层之间彼此挤压,以避免所述玩家角色和所述第一虚拟角色之间的至少部分角色重叠。

一种可选的实施方式中,所述装置还包括近身攻击控制模块,所述近身攻击控制模块用于:

在所述第一虚拟角色向所述玩家角色运动,并向所述玩家角色施加攻击时,检测所述第一虚拟角色是否为近身攻击所述玩家角色;

若所述第一虚拟角色为近身攻击所述玩家角色,在所述第一虚拟角色攻击所述玩家角色时,控制所述非玩家物理层与所述玩家物理层重叠;

在所述非玩家物理层与所述玩家物理层发生重叠时,控制所述第一虚拟角色与所述玩家角色部分重叠,以使所述第一虚拟角色完成攻击所述玩家角色。

第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述角色碰撞规避方法的步骤。

第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述角色碰撞规避方法的步骤。

本公开实施例提供的角色碰撞规避方法、装置、设备以及存储介质,通过在第一虚拟角色响应目标运动事件进行运动的情况下,获取所述第一虚拟角色的第一运动信息,以及在距离所述第一虚拟角色预设范围内的第二虚拟角色的第二运动信息;所述第一虚拟角色为非玩家角色,所述第二虚拟角色为玩家角色或非玩家角色;在基于所述第一运动信息和所述第二运动信息,确定所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间段内存在角色碰撞的情况下,获取所述第一虚拟角色躲避所述第二虚拟角色的避让信息;控制所述第一虚拟角色按照所述避让信息进行运动。

这样,通过获取到的第一虚拟角色的第一运动信息和第二虚拟角色的第二运动信息确定出存在角色碰撞的情况下,控制第一虚拟角色进行运动规避,不仅可以保证虚拟角色控制的精准度和性能,还可以有效避免角色在行动中的碰撞,进而可以有效降低实际场景中角色因碰撞而产生模型穿插的概率,可以在有效保证场景的真实性和可靠性的前提下,使得画面更加逼真。

为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本公开实施例提供的一种角色碰撞规避方法的流程图;

图2为本公开实施例中确定存在角色碰撞的流程图;

图3为本公开实施例提供的一种角色碰撞规避装置的示意图之一;

图4为本公开实施例提供的一种角色碰撞规避装置的示意图之二;

图5为本公开实施例所提供的一种计算机设备的示意图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

经研究发现,目前在游戏场景中,为了保证角色在服务器控制下的准确度和性能,实际场景中经常会出现金素恩发生碰撞甚至角色重叠的现象,导致角色模型互相穿插,画面真实性大大降低,画面表现性差。

基于上述研究,本公开提供了一种角色碰撞规避方法,通过获取场景中第一虚拟角色的第一运动信息和第二虚拟角色的第二运动信息,在第一虚拟角色和第二虚拟角色存在角色碰撞的情况下,控制第一虚拟角色进行运动规避,不仅可以保证虚拟角色控制的精准度和性能,还可以有效避免角色在行动中的碰撞,进而可以有效降低实际场景中角色因碰撞而产生模型穿插的概率,可以在有效保证场景的真实性和可靠性的前提下,使得画面更加逼真。

针对以上方案所存在的缺陷,均是发明人在经过实践并仔细研究后得出的结果,因此,上述问题的发现过程以及下文中本公开针对上述问题所提出的解决方案,都应该是发明人在本公开过程中对本公开做出的贡献。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

为便于对本实施例进行理解,首先对本公开实施例所公开的一种角色碰撞规避方法进行详细介绍,本公开实施例所提供的角色碰撞规避方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、蜂窝电话、无绳电话、个人数字助理(Personal Digital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该角色碰撞规避方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。

下面以执行主体为终端设备为例对本公开实施例提供的角色碰撞规避方法加以说明。

请参阅图1,图1为本公开实施例提供的一种角色碰撞规避方法的流程图。如图1中所示,所述方法包括:

S101:在第一虚拟角色响应目标运动事件进行运动的情况下,获取所述第一虚拟角色的第一运动信息,以及在距离所述第一虚拟角色预设范围内的第二虚拟角色的第二运动信息;所述第一虚拟角色为非玩家角色,所述第二虚拟角色为玩家角色或非玩家角色。

该步骤中,在所述第一虚拟角色运动的情况下,例如处于运动状态中或者准备开始运动的情况下,可以获取到所述第一虚拟角色的第一运动信息,并且可以通过所述第一虚拟角色的位置信息或者第一运动信息等,确定出距离所述第一虚拟角色预设范围内的第二虚拟角色,例如以所述第一虚拟角色为中心的预设范围内,确定出的所述第二虚拟角色,或者是以所述第一虚拟角色运动轨迹等所处的预设范围的区域中的第二虚拟角色,然后可以获取所述第二虚拟角色的第二运动信息。进而,可以在后续通过所述第一运动信息和所述第二运动信息来判断所述第一虚拟角色和所述第二虚拟角色是否存在碰撞的可能。

其中,所述第一虚拟角色为非玩家角色,即所述第一虚拟角色为怪物NPC(Non-Player Character)、剧情NPC、战斗NPC和服务NPC等由系统控制的虚拟角色,所述第二虚拟角色为玩家角色或非玩家角色,玩家角色即为玩家控制的虚拟角色。

第一虚拟角色响应目标运动事件进行运动,可以是指所述第一虚拟角色在服务器的控制下,响应和执行既定的寻路、巡逻等任务事件,或者是与玩家角色或者非玩家角色交互后运动的非战斗事件,也或者是被玩家角色触发之后的战斗事件等。

S102:在基于所述第一运动信息和所述第二运动信息,确定所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间段内存在角色碰撞的情况下,获取所述第一虚拟角色躲避所述第二虚拟角色的避让信息。

该步骤中,在通过所述第一运动信息和所述第二运动信息判定出所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间段内可能会存在角色碰撞的话,那么就可以确认需要进行避让,继而可以获取所述第一虚拟角色躲避所述第二虚拟角色的避让信息。

其中,所述第一虚拟角色躲避所述第二虚拟角色,可以是指所述第一虚拟角色主动避让所述第二虚拟角色,即通过控制所述第一虚拟角色主动做出避让,以避免所述第一虚拟角色和所述第二虚拟角色之间的碰撞,也可以指所述第一虚拟角色被动避让所述第二虚拟角色,即通过控制所述第二虚拟角色主动做出避让,以达到所述第一虚拟角色被动避让,避免所述第一虚拟角色和所述第二虚拟角色之间的碰撞,还可以是所述第一虚拟角色与所述第二虚拟角色均进行相应的主动避让,以配合进行避让,避免所述第一虚拟角色和所述第二虚拟角色之间的碰撞。

相应的,所述第一虚拟角色是主动避让的话,那么对应的避让信息,即与所述第一运动信息不同,需要针对所述第一运动信息进行调整,以得到避让信息,而所述第一虚拟角色是被动避让的话,那么进行运动信息调整的就是所述第二虚拟角色,而所述第一虚拟角色可以不调整,即避让信息可以是与所述第一运动信息相同的。

S103:控制所述第一虚拟角色按照所述避让信息进行运动。

该步骤中,在获取到所述避让信息后,就可以控制所述第一虚拟角色按照所述避让信息进行运动,以达到避免所述第一虚拟角色和所述第二虚拟角色发生碰撞的目的。

这样,本公开实施例提供的角色碰撞规避方法,在通过第一虚拟角色的第一运动信息和第二虚拟角色的第二运动信息确定两者存在角色碰撞的情况下,控制第一虚拟角色进行运动规避,以避免两者的碰撞,不仅可以保证虚拟角色控制的精准度和性能,还可以有效避免角色在行动中的碰撞,进而可以有效降低实际场景中角色因碰撞而产生模型穿插的概率,可以在有效保证场景的真实性和可靠性的前提下,使得画面更加逼真。

下面将结合具体实施例对上述S101~S103进行详细介绍。

相应的,请参阅图2,图2为本公开实施例中确定存在角色碰撞的流程图。在一些可能的实时方式中,可以通过以下步骤确定所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间内存在角色碰撞:

S201:确定所述第一运动信息指示的所述第一虚拟角色在所述未来预设时间段内的第一运动路线和第一运动速度信息,以及确定所述第二运动信息指示的所述第二虚拟角色在未来预设时间段内的第二运动路线和第二运动速度信息。

该步骤中,在获取到所述第一运动信息和所述第二运动信息之后,可以分别从所述第一运动信息和所述第二运动信息进行信息提取,以得到所述第一虚拟角色在所述未来预设时间段内的第一运动路线和第一运动速度信息,以及所述第二运动信息指示的所述第二虚拟角色在未来预设时间段内的第二运动路线和第二运动速度信息。

其中,所述第一运动路线和所述第二运动路线,可以是通过路线规划算法预先为相应角色规划的运动路线,例如通过VO(Velocity Obstacle)算法、RVO(ReciprocalVelocity Obstacle)算法、ORCA(Optimal Reciprocal Collision Avoidance)算法或者迪杰斯特拉(Dijkstra)算法等,为角色规划好的运动路径。

S202:根据所述第一运动路线和所述第一运动速度信息,以及所述第二运动路线和所述第二运动速度信息,判断所述第一虚拟角色和所述第二虚拟角色在未来预设时间段内是否存在角色碰撞。

该步骤中,可以通过两个角色的运动路线和运动速度信息等,来判断两个虚拟角色在未来预设时间段内是否存在角色碰撞。

具体的,在一些可能的实施例中,S202包括:

S2021:根据所述第一运动路线和所述第二运动路线,确定所述第一运动路线和所述第二运动路线之间是否存在预测碰撞位置,其中,所述预测相撞位置为所述第一运动路线和所述第二运动路线的交点,或者分别位于所述第一运动路线和所述第二运动路线上的距离小于预设距离的两个路线点。

该步骤中,可以通过对所述第一运动路线和所述第二运动路线进行比较,来看所述第一运动路线和所述第二运动路线之间是否存在预测碰撞位置,即所述第一运动路线和第二运动路线是否存在交叉和/或相邻较近的位置。

其中,所述预测相撞位置为所述第一运动路线和所述第二运动路线的交点,或者分别位于所述第一运动路线和所述第二运动路线上的距离小于预设距离的两个路线点。由于在实际的游戏场景中,角色是立体的,需要占用一定的立体空间,因此,如果两个角色相距较近,也可能会存在角色重叠,甚至模型穿插的现象,因此,如果两个路线点相距较近,也即可以认为是会导致角色碰撞的预测碰撞位置。

S2022:若存在所述预测碰撞位置,基于所述第一运动速度信息和所述第一运动路线,确定所述第一虚拟角色运动到所述预测碰撞位置的第一时间,并基于所述第二运动速度信息和所述第二运动路线确定所述第二虚拟角色运动到所述预测碰撞位置的第二时间。

该步骤中,如果所述第一运动路线和所述第二运动路线之间存在所述预测碰撞位置的话,那么可以认为所述第一虚拟角色和所述第二虚拟角色之间存在空间维度上的碰撞几率,接着,可以看所述第一虚拟角色和所述第二虚拟角色之间是否存在时间维度上的碰撞几率,因此可以通过所述第一运动速度信息和所述第一运动路线,来确定出所述第一虚拟角色按照所述第一运动速度信息沿所述第一运动路线运动的话,运动到所述预测碰撞位置的第一时间,并通过所述第二运动速度信息和所述第二运动路线,来确定所述第二虚拟角色按照所述第二运动速度信息沿所述第二运动路线运动的话,运动到所述预测碰撞位置的第二时间。

S2023:若所述第一时间与所述第二时间之间的时间差小于预设时间阈值,确定所述第一虚拟角色与所述第二虚拟角色之间在所述未来预设时间段内存在角色碰撞。

该步骤中,如果所述第一时间与所述第二时间之间的时间差小于预设时间阈值的话,就可以认为所述第一虚拟角色与所述第二虚拟角色可能会在所述第一时间和所述第二时间之间发生碰撞,即在所述未来预设时间段内存在角色碰撞。

这样,可以通过运动路线和运动速度信息,判断所述第一虚拟角色和所述第二虚拟角色之间是否存在碰撞,预测当时简单明了,预测结果准确定较高,有利于实现对角色的精准控制以实现避让。

在一些可能的实施例中,步骤S102包括:

S1021:检测所述第二虚拟角色的路权优先级是否高于所述第一虚拟角色的路权优先级。

为了便于区分所述第一虚拟角色和所述第二虚拟角色谁进行主动避让,谁进行被动避让,可以根据角色属性等因素,预先为所述第一虚拟角色和所述第二虚拟角色配置好相应的路权级别,例如在实际游戏场景中,BOSS级别的怪物NPC可以比普通级别的怪物NPC的路权级别高,即BOSS级别的怪物NPC拥有优先路权,再例如战斗类型的怪物NPC可以比非战斗类型的怪物NPC路权级别高等,又例如灵活度高的NPC的路权级别比灵活度低的NPC的路权级别要高,相应的,具体影响路权级别的因素可以视游戏中具体内容而定。

因此,在该步骤中,可以通过获取所述第一虚拟角色的路权信息或者角色信息等可以指示所述第一虚拟角色的路权情况的信息,以及所述第二虚拟角色的路权信息或者角色信息等可以指示所述第二虚拟角色的路权情况的信息,来检测所述第二虚拟角色的路权优先级是否高于所述第一虚拟角色的路权优先级。

S1022:若所述第二虚拟角色的路权优先级高于所述第一虚拟角色的路权优先级,获取所述第一虚拟角色的实体规避半径。

该步骤中,在检测出所述第二虚拟角色的路权优先级高于所述第一虚拟角色的路权优先级的时候,可以得知相较于所述第二虚拟角色,需要所述第一虚拟角色进行避让,即所述第一虚拟角色需要主动避让,相应的,可以获取所述第一虚拟角色的实体规避半径。

其中,实体规避半径,可以是指在游戏空间中,虚拟角色所占用的空间体积的半径,或者是虚拟角色在避让时所需要占用的避让空间的半径,可以通过不同角色的类型、体积、灵活度等属性信息等预先配置。例如,在实际游戏应用中,体积大的角色相应的实体规避半径较大,或者灵活度差的角色相应的实体规避半径较大等。

S1023:基于所述实体规避半径,对所述第一虚拟角色的运动进行调整,得到所述第一虚拟角色的规避信息。

该步骤中,可以通过所述实体规避半径,调整所述第一虚拟角色的运动信息,以得到针对所述第一虚拟角色的规避信息。

其中,所述规避信息包括以下信息中的一种或者多种:

避让运动路线;避让运动速度;避让运动方向;避让运动时长。

其中,这里所述规避信息,除包括的上述信息,即相应进行调整的信息外,还可以包括需要控制所述第一虚拟角色进行运动的其他信息,例如所述第一运动信息中未调整的其他信息。

相应的,在一些可能的实施例中,在S1021之后,所述方法还包括:

若所述第二虚拟角色的路权优先级低于所述第一虚拟角色的路权优先级,确定所述第一虚拟角色无需避让,控制所述第一虚拟角色按照所述第一运动信息运动。

该步骤中,如果检测结果表示所述第二虚拟角色的路权优先级低于所述第一虚拟角色的路权优先级的话,那么可以认为所述第一虚拟角色相对于所述第二虚拟角色无需进行避让,即所述第一虚拟角色相对于所述第二虚拟角色是被动避让的,因此,可以将所述第一运动信息作为所述避让信息,也就是说,控制所述第一虚拟角色按照所述第一运动信息运动即可。

上述内容,无论所述第二虚拟角色为玩家角色或者非玩家角色,针对的情况均是所述第二虚拟角色为非主动运动,即所述第二虚拟角色的运动,不是在玩家实时控制下,例如当所述第二虚拟角色为玩家角色时,在玩家角色不是被玩家实时控制下均可以适用避让,具体的,玩家控制玩家角色进行自动寻路,那玩家角色在自动寻路期间是可以进行避让判断的,而如果玩家实时的控制玩家角色运动,那么玩家角色会以玩家的控制为主,即便符合避让的情况,也不会进行避让,而是会按照玩家的控制进行运动。

相应的,对于非玩家角色的主动运动,可以通过绑定“胶囊体”等保护层的形式,以避免角色发生碰撞和模型穿插等现象,而非玩家角色也可以对应的绑定“胶囊体”等保护层,例如,设定客户端物理层,玩家设为“玩家层”,NPC角色设为“NPC层”,以避免玩家角色和非玩家角色的碰撞。“胶囊体”,可以理解为包括角色的层级设置,将角色包裹与其中,类似于胶囊的结构。

相应的,在一些可能的实施例中,当所述第二虚拟角色为玩家角色,并且所述第一虚拟角色的路权优先级高于所述玩家角色的路权优先级时,所述方法包括:

为所述玩家角色绑定玩家物理层,并为所述第一虚拟角色绑定非玩家物理层;在检测到所述玩家角色向所述第一虚拟角色运动,并且所述玩家角色和所述第一虚拟角色之间能够发生碰撞时,控制所述玩家物理层和所述非玩家物理层之间彼此挤压,以避免所述玩家角色和所述第一虚拟角色之间的至少部分角色重叠。

该步骤中,可以对所述玩家角色绑定玩家物理层,对所述第一虚拟角色绑定非玩家物理层,以实现为角色绑定“胶囊体”,然后,在检测到所述玩家角色向所述第一虚拟角色运动,并且两者之间能够发生碰撞的时候,那么在碰撞的时候,可以控制所述玩家物理层和所述非玩家物理层之间批次挤压,但层级之间不会发生交叉和重叠,从而可以避免所述玩家角色和所述第一虚拟角色之间可能会发生的至少部分角色重叠。

这样,通过为角色设置保护层,可以在碰撞的时候通过保护层间的挤压实现碰撞效果,但是角色之间无法运动到重叠或者穿插的地步,从而保证了玩家角色和非玩家角色不会发生实体碰撞和模型穿插的现象。

在一些可能的实施例中,所述方法还包括:

在所述第一虚拟角色向所述玩家角色运动,并向所述玩家角色施加攻击时,检测所述第一虚拟角色是否为近身攻击所述玩家角色;若所述第一虚拟角色为近身攻击所述玩家角色,在所述第一虚拟角色攻击所述玩家角色时,控制所述非玩家物理层与所述玩家物理层重叠;在所述非玩家物理层与所述玩家物理层发生重叠时,控制所述第一虚拟角色与所述玩家角色部分重叠,以使所述第一虚拟角色完成攻击所述玩家角色。

该步骤中,如果所述第一虚拟角色向所述玩家角色运动,并想要向所述玩家角色施加攻击时,例如所述玩家角色触发了所述第一虚拟角色的仇恨,导致所述第一虚拟角色朝向所述玩家角色运动并欲做出攻击的话,需要看所述第一虚拟角色是否为近身攻击所述玩家角色,如果是近身攻击的话,那么认为所述第一虚拟角色和所述玩家角色之间可能会需要进行碰撞,那么在所述第一虚拟角色攻击所述玩家角色时,可以控制所述非玩家物理层与所述玩家物理层重叠,以在所述非玩家物理层与所述玩家物理层重叠时,使得所述第一虚拟角色与所述玩家角色部分重叠,以实现所述第一虚拟角色攻击所述玩家角色的效果,但是在所述第一虚拟角色进行攻击等主动位移结束后,立刻回复寻路规避,如追逐所述玩家角色的寻路等,来保证所述第一虚拟角色和所述玩家角色之间分开。

其中,所述第一虚拟角色向所述玩家角色运动,可以是因为所述玩家角色触发了所述第一虚拟角色的仇恨,例如触发所述第一虚拟角色需要进行攻击的仇恨,还可以是触发所述第一虚拟角色与所述玩家角色需要进行互动的机制等。

这样,通过设置非玩家物理层可以与玩家物理层重叠,以保证实现第一虚拟玩家的攻击的效果,在攻击后,控制非玩家物理层与玩家物理层的分开,实现两个角色之间位置的不干扰,避免碰撞甚至模型穿插造成的画面不真实的时间,而且在攻击结束后,即使两个角色短暂的碰撞接触后,也会通过控制非玩家角色移动,和玩家角色的主动运动或者玩家控制玩家角色的二次控制输入等原因使得两个角色快速分离。

本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。

基于同一发明构思,本公开实施例中还提供了与角色碰撞规避方法对应的角色碰撞规避装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述角色碰撞规避方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。其中,角色碰撞规避装置可以是服务器,也可以是与服务器连接的独立的设备。

请参阅图3和图4,图3为本公开实施例提供的一种角色碰撞规避装置的示意图之一,图4为本公开实施例提供的一种角色碰撞规避装置的示意图之二。如图3中所示,本公开实施例提供的角色碰撞规避装置300包括:

运动信息获取模块310,用于在第一虚拟角色响应目标运动事件进行运动的情况下,获取所述第一虚拟角色的第一运动信息,以及在距离所述第一虚拟角色预设范围内的第二虚拟角色的第二运动信息;所述第一虚拟角色为非玩家角色,所述第二虚拟角色为玩家角色或非玩家角色。

避让信息获取模块320,用于在基于所述第一运动信息和所述第二运动信息,确定所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间段内存在角色碰撞的情况下,获取所述第一虚拟角色躲避所述第二虚拟角色的避让信息。

避让控制模块330,用于控制所述第一虚拟角色按照所述避让信息进行运动。

一种可选的实施方式中,如图4中所示,所述角色碰撞规避装置300还包括碰撞预测模块340,所述碰撞预测模块340可以通过以下步骤确定所述第一虚拟角色与所述第二虚拟角色之间在未来预设时间内存在角色碰撞:

确定所述第一运动信息指示的所述第一虚拟角色在所述未来预设时间段内的第一运动路线和第一运动速度信息,以及确定所述第二运动信息指示的所述第二虚拟角色在未来预设时间段内的第二运动路线和第二运动速度信息;

根据所述第一运动路线和所述第一运动速度信息,以及所述第二运动路线和所述第二运动速度信息,判断所述第一虚拟角色和所述第二虚拟角色在未来预设时间段内是否存在角色碰撞。

一种可选的实施方式中,所述碰撞预测模块340在用于根据所述第一运动路线和所述第一运动速度信息,以及所述第二运动路线和所述第二运动速度信息,判断所述第一虚拟角色和所述第二虚拟角色在未来预设时间段内是否存在角色碰撞时,具体用于:

根据所述第一运动路线和所述第二运动路线,确定所述第一运动路线和所述第二运动路线之间是否存在预测碰撞位置,其中,所述预测相撞位置为所述第一运动路线和所述第二运动路线的交点,或者分别位于所述第一运动路线和所述第二运动路线上的距离小于预设距离的两个路线点;

若存在所述预测碰撞位置,基于所述第一运动速度信息和所述第一运动路线,确定所述第一虚拟角色运动到所述预测碰撞位置的第一时间,并基于所述第二运动速度信息和所述第二运动路线确定所述第二虚拟角色运动到所述预测碰撞位置的第二时间;

若所述第一时间与所述第二时间之间的时间差小于预设时间阈值,确定所述第一虚拟角色与所述第二虚拟角色之间在所述未来预设时间段内存在角色碰撞。

一种可选的实施方式中,所述避让信息获取模块320具体用于:

检测所述第二虚拟角色的路权优先级是否高于所述第一虚拟角色的路权优先级;

若所述第二虚拟角色的路权优先级高于所述第一虚拟角色的路权优先级,获取所述第一虚拟角色的实体规避半径;

基于所述实体规避半径,对所述第一虚拟角色的运动进行调整,得到所述第一虚拟角色的规避信息;

其中,所述规避信息包括以下信息中的一种或者多种:

避让运动路线;避让运动速度;避让运动方向;避让运动时长。

一种可选的实施方式中,所述避让控制模块320还用于:

若所述第二虚拟角色的路权优先级低于所述第一虚拟角色的路权优先级,确定所述第一虚拟角色无需避让,控制所述第一虚拟角色按照所述第一运动信息运动。

一种可选的实施方式中,如图4中所示,当所述第二虚拟角色为玩家角色,并且所述第一虚拟角色的路权优先级高于所述玩家角色的路权优先级时,所述角色碰撞规避装置300还包括物理层绑定模块350,所述物理层绑定模块350用于:

为所述玩家角色绑定玩家物理层,并为所述第一虚拟角色绑定非玩家物理层;

在检测到所述玩家角色向所述第一虚拟角色运动,并且所述玩家角色和所述第一虚拟角色之间能够发生碰撞时,控制所述玩家物理层和所述非玩家物理层之间彼此挤压,以避免所述玩家角色和所述第一虚拟角色之间的至少部分角色重叠。

一种可选的实施方式中,如图4中所示,所述角色碰撞规避装置300还包括近身攻击控制模块360,所述近身攻击控制模块360用于:

在所述第一虚拟角色向所述玩家角色运动,并向所述玩家角色施加攻击时,检测所述第一虚拟角色是否为近身攻击所述玩家角色;

若所述第一虚拟角色为近身攻击所述玩家角色,在所述第一虚拟角色攻击所述玩家角色时,控制所述非玩家物理层与所述玩家物理层重叠;

在所述非玩家物理层与所述玩家物理层发生重叠时,控制所述第一虚拟角色与所述玩家角色部分重叠,以使所述第一虚拟角色完成攻击所述玩家角色。

这样,本公开实施例提供的角色碰撞规避装置,可以通过第一虚拟角色的第一运动信息和第二虚拟角色的第二运动信息确定两者存在角色碰撞的情况下,控制第一虚拟角色进行运动规避,以避免两者的碰撞,不仅可以保证虚拟角色控制的精准度和性能,还可以有效避免角色在行动中的碰撞,进而可以有效降低实际场景中角色因碰撞而产生模型穿插的概率,可以在有效保证场景的真实性和可靠性的前提下,使得画面更加逼真。

对应于图1中的角色碰撞规避方法,本公开实施例还提供了一种计算机设备500,如图5所示,为本公开实施例提供的计算机设备500结构示意图,包括:处理器510、存储器520、和总线530。所述存储器520存储有所述处理器510可执行的机器可读指令,当计算机设备500运行时,所述处理器510与所述存储器520之间通过总线530通信,所述机器可读指令被所述处理器510执行时可以执行如图1中所示的角色碰撞规避方法的步骤。

上述指令的具体执行过程可以参考本公开实施例中所述的角色碰撞规避方法的步骤,此处不再赘述。

本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的角色碰撞规避方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

19页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:计算机的控制方法、控制程序以及计算机

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类