HI,欢迎来到起点商标网!
24小时服务QQ:2880605093

游戏角色移动控制方法、装置、设备和介质与流程

2021-01-11 13:01:03|289|起点商标网
游戏角色移动控制方法、装置、设备和介质与流程

本公开涉及计算机技术领域,尤其涉及一种游戏角色移动控制方法、装置、设备和介质。



背景技术:

随着3d游戏技术的发展,例如仙侠类3d游戏的地图越来越大,大地图为游戏玩家提供了更丰富更精彩的游戏内容,同时大地图也引入了更多的游戏对象移动需求。现有的3d游戏对象针对长距离移动的情况,移动方式主要有两种:一种采用设置传送点的方式,将游戏对象从初始点a传送至目标点b;另一种采用游戏对象在地面施展“轻功”的方式,进行加快移动。

上述两种移动方式的缺陷在于:传送式的移动虽然快捷,但是玩家无法从视觉上看到游戏角色的移动过程,割裂了游戏场景,削弱了玩家的沉浸感;地面轻功式的移动可以在一定程度上保证玩家的代入体验,但是在长距离的移动过程中花费时间依然过长。



技术实现要素:

为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种游戏角色移动控制方法、装置、设备和介质。

第一方面,本公开实施例提供了一种游戏角色移动控制方法,包括:

根据玩家触发的游戏角色的飞行指令,分别获取所述游戏角色所处游戏场景中的地形区域和至少一个目标物体的三维模型数据;

利用所述地形区域和至少一个目标物体的三维模型数据,进行目标物体与地形之间的碰撞检测,确定在为所述游戏角色规划飞行路径过程中可用的地形三维模型数据;

根据所述游戏角色的飞行起点、飞行终点和所述可用的地形三维模型数据,为所述游戏角色规划飞行路径;

控制所述游戏角色按照规划的飞行路径进行飞行移动。

第二方面,本公开实施例还提供了一种游戏角色移动控制装置,包括:

模型数据获取模块,用于根据玩家触发的游戏角色的飞行指令,分别获取所述游戏角色所处游戏场景中的地形区域和至少一个目标物体的三维模型数据;

碰撞检测模块,用于利用所述地形区域和至少一个目标物体的三维模型数据,进行目标物体与地形之间的碰撞检测,确定在为所述游戏角色规划飞行路径过程中可用的地形三维模型数据;

飞行路径规划模块,用于根据所述游戏角色的飞行起点、飞行终点和所述可用的地形三维模型数据,为所述游戏角色规划飞行路径;

飞行控制模块,用于控制所述游戏角色按照规划的飞行路径进行飞行移动。

第三方面,本公开实施例还提供了一种电子设备,所述电子设备包括:处理器;用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现如本公开实施例提供的任一游戏角色移动控制方法。

第四方面,本公开实施例还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本公开实施例提供的任一游戏角色移动控制方法。

本公开实施例提供的技术方案与现有技术相比具有如下优点:既可以保证玩家的游戏沉浸感,又能满足玩家的快速移动需求,从而有效提高玩家的游戏体验。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本公开实施例提供的一种游戏角色移动控制方法的流程图;

图2为本公开实施例提供的另一种游戏角色移动控制方法的流程图;

图3为本公开实施例提供的一种利用八叉树形式表示三维体素的示意图;

图4为本公开实施例提供的又一种游戏角色移动控制方法的流程图;

图5为本公开实施例提供的一种游戏角色移动控制装置的结构示意图;

图6为本公开实施例提供的一种电子设备的结构示意图。

具体实施方式

为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。

图1为本公开实施例提供的一种游戏角色移动控制方法的流程图,本公开实施例可以适用于在玩家游戏过程中,如何控制游戏角色进行移动的情况。本公开实施例提供的方法可以由游戏角色移动控制装置来执行,该装置可以采用软件和/或硬件实现,并可集成在任意具有计算能力的电子设备上,例如智能手机、平板电脑等用户终端。以下以安装游戏应用程序(或称为游戏客户端)的用户终端为例,对本公开实施例的技术方案进行解释说明。

如图1所示,本公开实施例提供的游戏角色移动控制方法可以包括:

s101、根据玩家触发的游戏角色的飞行指令,分别获取游戏角色所处游戏场景中的地形区域和至少一个目标物体的三维模型数据。

在本公开实施例中,玩家在参与游戏的过程中,可以通过触控用户终端中游戏界面上的飞行按钮或飞行控件,触发玩家的当前游戏角色(或称为游戏对象)的飞行指令(或称为起飞指令),该飞行指令中可以包括当前游戏角色的角色id,该角色id用于唯一性的标识当前游戏角色。飞行起点和飞行终点均可以由玩家通过游戏界面上的控件进行设置,例如玩家可以通过点击游戏界面上飞行目的地设置控件,设置飞行终点。

用户终端响应于该飞行指令,从终端本地的游戏安装目录中,获取游戏角色所处游戏场景中的地形区域的三维(3d)模型数据和至少一个目标物体的三维模型数据。其中,游戏场景中的至少一个目标物体包括但不限于树木、石头、建筑物等场景中可存在的实体元素。地形区域和目标物体的三维模型数据是在游戏场景制作初期,根据游戏场景内的不同物件类型挂接不同模型的节点,依据节点名字生成的包含各个节点的obj格式的文件数据。obj文件是一种明码标记的文本文件,可以直接用写字板读写。

获取的当前游戏角色所处游戏场景中地形区域和目标物体的三维模型数据,可以在为当前游戏角色规划飞行路径过程中,用于判断哪些飞行方向上存在障碍物,哪些飞行方向不存在障碍物,判断出存在障碍物的飞行方向不再参与飞行路径的规划。

可选的,根据玩家触发的游戏角色的飞行指令,分别获取游戏角色所处游戏场景中的地形区域和至少一个目标物体的三维模型数据,包括:

将玩家触发的游戏角色的飞行指令发送至服务器;其中,服务器用于根据接收的飞行指令将游戏角色标记为飞行模式;

如果接收到服务器发送的飞行模式标记成功的消息,则分别获取游戏角色所处游戏场景中的地形区域和至少一个目标物体的三维模型数据。

即在本公开实施例中,可以优选由用户终端执行本公开实施例提供的游戏角色移动控制方法,而将当前游戏角色的飞行指令发送至服务器,由服务器执行游戏角色的飞行模式标记操作,一方面可以确保服务器中存储的当前游戏角色状态与用户终端中游戏角色的当前状态一致,另一方面,可以通过服务器将当前游戏角色处于飞行模式的状态共享给当前游戏场景中的其他玩家,保证当前游戏角色状态在多个玩家控制的终端中呈现的状态一致。

服务器可以根据飞行指令的角色id,将当前游戏角色标记为飞行模式,如果服务器标注成功,则可以向用户终端发送标记成功的消息,表明用户终端可以获取当前所需的三维模型数据;如果服务器标注失败,则可以向用户终端发送标记失败的消息,表明用户终端无需获取三维模型数据,针对游戏角色的飞行路径规划操作无需继续执行。

s102、利用地形区域和至少一个目标物体的三维模型数据,进行目标物体与地形之间的碰撞检测,确定在为游戏角色规划飞行路径过程中可用的地形三维模型数据。

其中,可用的地形三维模型数据是指地形区域上不存在属于障碍物的目标物体时对应的地形子区域的三维模型数据,可用在该地形子区域对应的空间上规划游戏角色可能经过的飞行路径。在执行目标物体与地形之间的碰撞检测过程中,根据碰撞检测的精度需求,可以分别将地形和目标物体进行不同精度的立体空间划分,例如,将当前游戏场景中的每个地形区域划分为多个地形子区域等。碰撞检测可以采用现有的游戏场景中任意可用的碰撞检测方法实现,本公开实施例不作具体限定,例如射线碰撞检测技术等。

s103、根据游戏角色的飞行起点、飞行终点和可用的地形三维模型数据,为游戏角色规划飞行路径。

游戏角色的飞行起点(start点)和飞行终点(end点)均可以由玩家在触发飞行指令后或者触发飞行指令前进行设置,优选的,飞行起点可以是根据当前游戏角色在游戏场景中的位置而自动获取。然后,用户终端可以调用预先设置的飞行路径规划算法,执行飞行路径的规划操作。其中,飞行路径规划算法可以利用现有的任意可用的三维路径规划算法实现,包括但不限于三维a星(astar)寻路算法等。并且,用户终端可以根据自身的性能以及预先获取的玩家对游戏角色的飞行需求,灵活调用飞行路径规划算法,例如可以优选调用对终端性能消耗较小、计算效率较高的飞行路径规划算法。

s104、控制游戏角色按照规划的飞行路径进行飞行移动。

在当前游戏场景下,飞行路径由一系列的三维坐标点组成。游戏场景与三维游戏地图一一对应,因此,飞行路径中包括的三维坐标点也即当前游戏场景对应的三维游戏地图中的位置点。飞行路径规划完成后,用户终端控制游戏角色按照该飞行路径进行飞行移动。飞行速度可以是游戏开发过程中预先配置的速度值,也可以是玩家根据游戏界面提供的速度选择控件而选择的速度值,本公开实施例对此不作具体限定。其中,不同的速度选择控件可以对应不同等级的速度值。

根据本公开实施例的技术方案,通过对游戏角色所处游戏场景中目标物体和地形进行碰撞检测,确定在为游戏角色规划飞行路径过程中可用的地形三维模型数据,然后根据游戏角色的飞行起点、飞行终点和可用的地形三维模型数据,为游戏角色规划飞行路径,从而控制游戏角色进行飞行移动,相比于基于游戏场景地面的移动,飞行移动可以摆脱地面布局的约束,因而可以实现更快的角色移动效果,尤其是针对长距离移动的情况,飞行移动效率愈加明显;并且,采用本公开实施例的技术方案,玩家可以从视觉上直观地看到游戏角色的飞行移动轨迹,保证了玩家参与游戏的沉浸感。因此,本公开实施例的技术方案解决了现有方案中不能同时兼顾玩家的游戏沉浸感以及玩家对游戏角色的移动需求的问题,既保证了玩家的游戏沉浸感,又满足了玩家的快速移动需求,从而有效提高了玩家的游戏体验。

在上述技术方案的基础上,可选的,利用地形区域和至少一个目标物体的三维模型数据,进行目标物体与地形之间的碰撞检测,确定在为游戏角色规划飞行路径过程中可用的地形三维模型数据,包括:

分别对地形区域和至少一个目标物体的三维模型数据进行解析,构建地形区域的体素模型和至少一个目标物体的体素模型;其中,体素模型中包括至少一组体素数据,每组体素数据用于表征预设空间大小的几何体,该预设空间大小可以灵活设置;

利用地形区域的体素模型和至少一个目标物体的体素模型,进行目标物体与地形之间的碰撞检测,确定在为游戏角色规划飞行路径过程中可用的地形体素数据;

相应的,根据游戏角色的飞行起点、飞行终点和可用的地形三维模型数据,为游戏角色规划飞行路径,包括:

根据游戏角色的飞行起点、飞行终点和可用的地形体素数据,为游戏角色规划飞行路径。

对获取的各三维模型数据进行解析,可以解析出每个三维模型中包括的三角形面片、法线和顶点等关键信息,然后根据解析的信息构建相应的体素模型。构建体素模型的过程,也即对地形区域和目标物体进行体素化的过程。体素可以理解为游戏场景中场景对象的基本构成单元,每个场景对象包括至少一个体素,一个体素对应一组体素数据。构建的体素模型可以写入二进制文件中,然后保存在用户终端中,进一步的,该二进制文件还可以由用户终端发送至服务器中,确保用户终端和服务器中体素模型数据的一致性,为确保游戏角色在前后端中呈现一致的飞行移动效果奠定基础。

进一步的,在控制游戏角色按照规划的飞行路径进行飞行移动之前,本公开实施例提供的方法还包括:

将规划的飞行路径发送至服务器;其中,服务器用于验证接收的飞行路径是否合法;

相应的,控制游戏角色按照规划的飞行路径进行飞行移动,包括:如果接收到服务器发送的验证成功的消息,则控制游戏角色按照规划的飞行路径进行飞行移动。如果用户终端接收到服务器发送的验证失败的消息,则不执行游戏角色的飞行移动操作。

其中,具体的,服务器对接收的飞行路径的验证过程可以包括:通过坐标点比较,验证飞行路径中的坐标点是否在当前游戏场景对应的地图范围内;通过利用预先存储的游戏场景中地形区域和目标物体的体素模型,验证飞行路径中的坐标点对应的地形子区域中是否存在障碍物等;如果这些验证条件均验证通过,即飞行路径中的坐标点在当前游戏场景对应的地图范围内,飞行路径中的坐标点对应的地形子区域中不存在障碍物,则用户终端中规划的飞行路径合法,如果存在至少一个验证条件验证失败,则用户终端中规划的飞行路径不合法。

进一步的,用户终端将规划的飞行路径发送至服务器之后,还可以由服务器控制当前游戏角色的飞行移动。即控制游戏角色按照规划的飞行路径进行飞行移动,包括:接收服务器发送的针对当前游戏角色的飞行控制指令;根据接收的飞行控制指令控制游戏角色按照规划的飞行路径进行飞行移动。即在本公开实施例中,游戏角色可以直接在用户终端的控制下进行飞行移动,也可以通过用户终端在服务器的控制下进行飞行移动,根据不同的游戏类型,飞行移动的控制模式可以灵活切换,本公开实施例不作具体限定。

进一步的,服务器还用于将接收的飞行路径发送给用于控制当前游戏场景中其他游戏角色的设备,使得其他设备可以在设备本机中同步控制当前游戏角色的飞行移动,即实现针对当前游戏角色,在多个用户设备中可以呈现相同的飞行状态。并且,服务器还可以在向控制当前游戏角色的用户终端发送飞行控制指令的同时,向前述其他用户设备发送关于相同游戏角色的飞行控制指令,指示其他设备在设备本机中同步控制当前游戏角色的飞行移动。

图2为本公开实施例提供的另一种游戏角色移动控制方法的流程图,基于上述技术方案进一步优化与扩展,并可以与上述各个可选实施方式进行结合。如图2所示,该方法可以包括:

s201、根据玩家触发的游戏角色的飞行指令,分别获取游戏角色所处游戏场景中的地形区域和至少一个目标物体的三维模型数据。

s202、分别对地形区域和至少一个目标物体的三维模型数据进行解析,构建地形区域的体素模型和至少一个目标物体的体素模型。

其中,体素模型中包括至少一组体素数据,每组体素数据用于表征预设空间大小的几何体。

s203、利用地形区域的体素模型和至少一个目标物体的体素模型,构建对应地形区域的八叉树以及对应每个目标物体的八叉树;其中,体素模型中的每组体素数据作为八叉树中的一个节点。

通过构建八叉树,可以优化体素模型数据的存储空间,优化后续的目标物体与地形的碰撞检测效率,以及优化后续的飞行路径规划效率。图3作为示例,示出了本公开实施例提供的一种利用八叉树形式表示三维体素的示意图。

可选的,利用地形区域的体素模型和至少一个目标物体的体素模型,构建对应地形区域的八叉树以及对应每个目标物体的八叉树,包括:

如果地形区域的体素模型和至少一个目标物体的体素模型中存在完全体素数据,则将完全体素数据进行合并,并将合并之后的体素数据作为八叉树中的一个节点;其中,完全体素数据的类型包括预设空间大小的几何体完全被物体占据和预设空间大小的几何体与物体空间完全不重叠。通过体素数据合并,可以节省存储空间。

例如,在构建八叉树的过程中,如果父节点的8个子节点均为完全体素的节点,则可以将它们合为一个大节点,从而节省储存空间。

如图3所示,假设要表示的形体v可以放在一个充分大的正方体c中,c的边长为2n,形体v的八叉树可以定义为:八叉树的每一个节点与正方体c中的一个子立方体对应,树根与正方体c本身相对应。如果v=c,那么形体v的八叉树只有树根。如果形体v不等于正方体c,则将正方体c等分为8个子立方体,每个子立方体与树根的一个子节点相对应。只要某个子立方体不是完全空白,或者不是完全为形体v所占据,就要被八等分,从而对应的节点存在8个子节点。这样的分割一直要进行到节点所对应的立方体完全空白(图3中白色节点)或者完全被形体v所占据(图3中黑色节点),或者子立方体的空间大小已经是预先定义的体素大小。其中,图3中的黑色节点和白色节点即为完全体素的节点,也即对应完全体素数据。

s204、利用地形区域的八叉树以及每个目标物体的八叉树,基于射线碰撞检测技术,进行目标物体与地形之间的碰撞检测,确定在为游戏角色规划飞行路径过程中可用的地形体素数据。

具体的,可以在游戏引擎里,从地形区域的八叉树以及每个目标物体的八叉树的根节点开始,逐级进行相交测试,可以在时间复杂度o(logn)内完成检测,从而提高碰撞检测效率。

例如,以目标物体的八叉树的每个节点中所包含的子物体中心为起点,向该子物体各个顶点发出射线,然后检测发出的射线与地形体素数据生成的网格三角面是否相交,如果相交,则当前子物体与地形发生碰撞,将该地形网格三角面标记为存在障碍物,该地形网格三角面对应的地形体素数据为不可用的地形体素数据;如果经检测当前发出的射线与地形体素数据生成的网格三角面不相交,则可以对该地形网格三角面进行可飞行标记,该地形网格三角面对应的地形体素数据为可用的地形体素数据。

s205、将游戏角色所处游戏场景空间进行三维网格划分,并分别确定游戏角色的飞行起点和飞行终点所属的目标网格;其中,三维网格划分过程中的网格尺寸随飞行距离动态调整。

其中,飞行距离由游戏角色的飞行起点和飞行终点确定。通过根据飞行路径动态调整游戏场景空间的三维网格,可以避免飞行距离较长时,场景空间网络过小,寻路计算耗时较长的现象,可以有效减少寻路网格数与计算复杂度,缩短计算时间,实现用户终端实时寻路的要求。关于场景空间网格的具体大小,本公开实施例不作具体限定,可以根据飞行距离而自适应确定。

可选的,当飞行距离超过预设飞行阈值(该阈值可以灵活设置)时,参与寻路计算的场景空间网格的最小尺寸,根据地形区域和目标物体的八叉树中叶子节点对应的最小几何体的尺寸而定,例如参与寻路计算的场景空间网格尺寸与八叉树中叶子节点对应的最小几何体的尺寸相同。

s206、基于三维a星寻路算法,利用游戏角色的飞行起点和飞行终点所属的目标网格以及可用的地形体素数据,为游戏角色规划飞行路径。

具体的,基于三维a星寻路算法,利用游戏角色的飞行起点和飞行终点所属的目标网格以及可用的地形体素数据,为游戏角色规划飞行路径,包括:

从可用的地形体素数据,确定游戏角色的飞行起点所属目标网格的至少一个目标邻居网格;需要说明的是,针对三维空间中的任意一个网格,该网格的6个面、12条边和8个顶点各对应一个邻居网格,即任意一个网格存在26个邻居网格,然而本公开实施例中所涉及的目标邻居网格是排除了不能参与飞行路径规划的地形体素数据后剩余的邻居网格,即目标邻居网格的数量要小于或等于26;

根据每个目标邻居网格的启发函数值,从至少一个目标邻居网格中确定新网格节点;其中,启发函数值用于评估目标邻居网格与游戏角色的飞行起点和飞行终点之间的移动距离;优选启发函数值小于预设函数阈值(该阈值可以灵活设置)的目标邻居网格作为新网格节点;

基于新网格节点重复执行邻居网格的确定操作和下一个新网格节点的确定操作,直至确定的下一个新网格节点为游戏角色的飞行终点所属的目标网格;即确定当前新网格节点的至少一个目标邻居网格,并根据目标邻居网格的启发函数值,从当前新网格节点的至少一个目标邻居网格中确定下一个新网格节点,重复执行,直至确定的下一个新网格节点为飞行终点所属的目标网格,结束循环操作;

将确定的各个新网格节点作为飞行路径中的路径节点。

路径节点确定之后,结合游戏角色的飞行起点和飞行终点,便可以确定游戏角色的飞行路径。考虑本公开实施例中路径节点实质上指代一个具有一定空间大小的网格,因此路径节点确定之后,可以按照预设规则在路径节点中选择一个或者多个合理的位置点参与组成飞行路径,例如,可以优选路径节点的中心点对应的三维坐标参与组成飞行路径。

其中,启发函数值f采用以下公式进行计算:f=g+h;其中,g表示目标邻居网格与游戏角色的飞行起点之间的移动代价,h表示目标邻居网格与游戏角色的飞行终点之间的预估移动代价,h的值采用曼哈顿距离表示,即h等于目标邻居网格到游戏角色的飞行终点的水平距离s1与目标邻居网格到游戏角色的飞行终点的垂直距离s2之和。优选的,h等于目标邻居网格的中心到游戏角色的飞行终点的水平距离与目标邻居网格的中心到游戏角色的飞行终点的垂直距离之和。关于g的具体取值,可以根据现有a星寻路算法中定义的g取值方式进行确定,本公开实施例不作具体限定。例如,从游戏角色的飞行起点开始,向飞行起点所属的目标网格的上、下、左、右这4个方向上的目标邻居网格移动时,移动代价为10;向飞行起点所属的目标网格的左上、左下、右上、右下这4个方向上的目标邻居网格移动时,移动代价为14。进一步的,还有可以根据每个目标邻居网格对应的地形情况,为每个目标邻居网格设置代价因子,因而每个目标邻居网格对应的g取值可以为初始移动代价(指根据寻路算法中预先设置的g取值方式确定初始值)与代价因子的乘积。

s207、控制游戏角色按照规划的飞行路径进行飞行移动。

采用本公开实施例提供的技术方案,具有以下有益效果:

1)本公开实施例利用体素数据构建八叉树,优化了游戏场景中相关数据的存储大小,优化了飞行路径规划过程中的移动碰撞检测效率,以及优化了三维寻路计算效率。其中,在构建八叉树的过程中,通过合并完全体素节点为大节点,减少了节点数量,进一步有效节省了储存容量;利用构建的八叉树进行射线碰撞检测时,从根节点逐级进行相交测试,达到了在时间复杂度o(logn)内完成检测的要求,有效提高了移动碰撞检测效率。

2)本公开实施例通过根据寻路距离动态调整寻路网格的大小,有效减少了寻路网格数与计算复杂度,缩短了计算时间,实现了用户终端可以实时寻路的要求。

3)本公开实施例中,针对游戏场景中地形和目标物体,用户终端和服务器中可以存储相同的体素数据和飞行路径,使得游戏角色移动过程中,前后端体素数据、飞行路径不存在偏差,保证了游戏角色在前后端中呈现的飞行移动效果的一致性;

4)由用户终端执行寻路算法,寻路结果发送服务器进行验证校验操作,确保了所有寻路点的合法,还有效防止了外挂等违规行为,同时减少了寻路功能对服务器造成计算压力,确保了各用户终端中游戏应用运行的流畅性。

图4为本公开实施例提供的又一种游戏角色移动控制方法的流程图,具体以用户终端中的游戏客户端为执行主体,对本公开实施例提供的技术方案进一步进行示例性说明,如图4所示,该方法可以包括:

s401、当前客户端在游戏角色处于地面模式时,接收飞行指令,并通知服务器改变玩家状态为飞行模式。

s402、当前客户端读取游戏场景内地形和各目标物体的3d模型文件,进行解析并根据解析信息分别构建地形和每个目标物体的体素模型,将体素模型以二进制方式写入文件并保存。

s403、当前客户端读取保存的体素模型二进制文件,并将其加载到内存中。

s404、当前客户端根据地形和每个目标物体的体素模型,构建对应地形的八叉树和对应每个目标物体的八叉树,并基于构建的八叉树进行射线碰撞检测,在地形区域标记出可飞行标志。

s405、当前客户端根据三维a星寻路算法,遍历游戏角色的飞行起点所属场景网格的所有邻居网格,根据启发函数查找可用的地形体素数据,并将当前查找到的地形体素数据作为下一网格节点。

s406、确定当前客户端确定是否找到游戏角色的飞行终点。

如果是,则执行操作s407;如果否,则返回操作s405,基于当前确定的下一网格节点,重复执行邻居网格的确定操作以及新的下一网格节点的确定操作。

s407、当前客户端将确定的路径节点信息发送至服务器,服务器对接收的路径节点信息进行验证,并在验证成功后将接收的路径节点信息广播到用于控制当前游戏场景内其他游戏角色的客户端。

s408、当前客户端根据服务器发送的飞行控制指令,控制游戏角色按照依据各路径节点确定的飞行路径进行飞行移动。

根据本公开实施例的技术方案,通过对游戏角色所处游戏场景中目标物体和地形进行碰撞检测,确定在为游戏角色规划飞行路径过程中可用的地形三维模型数据,然后根据游戏角色的飞行起点、飞行终点和可用的地形三维模型数据,为游戏角色规划飞行路径,从而控制游戏角色进行飞行移动,解决了现有方案中不能同时兼顾玩家的游戏沉浸感以及玩家对游戏角色的移动需求的问题,既保证了玩家的游戏沉浸感,又满足了玩家的快速移动需求,从而有效提高了玩家的游戏体验。

图5为本公开实施例提供的一种游戏角色移动控制装置的结构示意图,本公开实施例可以适用于在玩家游戏过程中,如何控制游戏角色进行移动的情况。本公开实施例提供的装置可以采用软件和/或硬件实现,并可集成在任意具有计算能力的电子设备上,例如智能手机、平板电脑等用户终端。

如图5所示,本公开实施例提供的游戏角色移动控制装置可以包括模型数据获取模块501、碰撞检测模块502、飞行路径规划模块503和飞行控制模块504,其中:

模型数据获取模块501,用于根据玩家触发的游戏角色的飞行指令,分别获取游戏角色所处游戏场景中的地形区域和至少一个目标物体的三维模型数据;

碰撞检测模块502,用于利用地形区域和至少一个目标物体的三维模型数据,进行目标物体与地形之间的碰撞检测,确定在为游戏角色规划飞行路径过程中可用的地形三维模型数据;

飞行路径规划模块503,用于根据游戏角色的飞行起点、飞行终点和可用的地形三维模型数据,为游戏角色规划飞行路径;

飞行控制模块504,用于控制游戏角色按照规划的飞行路径进行飞行移动。

可选的,碰撞检测模块502包括:

体素模型构建单元,用于分别对地形区域和至少一个目标物体的三维模型数据进行解析,构建地形区域的体素模型和至少一个目标物体的体素模型;其中,体素模型中包括至少一组体素数据,每组体素数据用于表征预设空间大小的几何体;

碰撞检测单元,用于利用地形区域的体素模型和至少一个目标物体的体素模型,进行目标物体与地形之间的碰撞检测,确定在为游戏角色规划飞行路径过程中可用的地形体素数据;

相应的,飞行路径规划模块503具体用于:

根据游戏角色的飞行起点、飞行终点和可用的地形体素数据,为游戏角色规划飞行路径。

可选的,碰撞检测单元包括:

八叉树构建子单元,用于利用地形区域的体素模型和至少一个目标物体的体素模型,构建对应地形区域的八叉树以及对应每个目标物体的八叉树;其中,体素模型中的每组体素数据作为八叉树中的一个节点;

可用体素数据确定子单元,用于利用地形区域的八叉树以及每个目标物体的八叉树,基于射线碰撞检测技术,进行目标物体与地形之间的碰撞检测,确定在为游戏角色规划飞行路径过程中可用的地形体素数据。

可选的,飞行路径规划模块503包括:

场景网格划分单元,用于将游戏角色所处游戏场景空间进行三维网格划分,并分别确定游戏角色的飞行起点和飞行终点所属的目标网格;其中,三维网格划分过程中的网格尺寸随飞行距离动态调整;

飞行路径规划单元,用于基于三维a星寻路算法,利用游戏角色的飞行起点和飞行终点所属的目标网格以及可用的地形体素数据,为游戏角色规划飞行路径。

可选的,飞行路径规划单元包括:

邻居网格确定子单元,用于从可用的地形体素数据,确定游戏角色的飞行起点所属目标网格的至少一个目标邻居网格;

新网格节点确定子单元,用于根据每个目标邻居网格的启发函数值,从至少一个目标邻居网格中确定新网格节点;其中,启发函数值用于评估目标邻居网格与游戏角色的飞行起点和飞行终点之间的移动距离;

重复执行子单元,用于基于新网格节点重复执行邻居网格的确定操作和下一个新网格节点的确定操作,直至确定的下一个新网格节点为游戏角色的飞行终点所属的目标网格;

路径节点确定子单元,用于将确定的各个新网格节点作为飞行路径中的路径节点。

可选的,启发函数值f采用以下公式进行计算:

f=g+h;其中,g表示目标邻居网格与游戏角色的飞行起点之间的移动代价,h表示目标邻居网格与游戏角色的飞行终点之间的预估移动代价,h的值采用曼哈顿距离表示。

可选的,本公开实施例提供的装置还包括:

飞行路径发送模块,用于在飞行控制模块504执行控制游戏角色按照规划的飞行路径进行飞行移动的操作之前,将规划的飞行路径发送至服务器;其中,服务器用于验证接收的飞行路径是否合法;

相应的,飞行控制模块504具体用于:如果接收到服务器发送的验证成功的消息,则控制游戏角色按照规划的飞行路径进行飞行移动。

可选的,服务器还用于将接收的飞行路径发送给用于控制当前游戏场景中其他游戏角色的设备。

可选的,八叉树构建子单元包括:

体素数据合并子单元,用于如果地形区域的体素模型和至少一个目标物体的体素模型中存在完全体素数据,则将完全体素数据进行合并,并将合并之后的体素数据作为八叉树中的一个节点;

其中,完全体素数据的类型包括预设空间大小的几何体完全被物体占据和预设空间大小的几何体与物体空间完全不重叠。

可选的,模型数据获取模块501包括:

飞行指令发送单元,用于将玩家触发的游戏角色的飞行指令发送至服务器;其中,服务器用于根据接收的飞行指令将游戏角色标记为飞行模式;

模型数据获取单元,用于如果接收到服务器发送的飞行模式标记成功的消息,则分别获取游戏角色所处游戏场景中的地形区域和至少一个目标物体的三维模型数据。

本公开实施例所提供的游戏角色移动控制装置可执行本公开实施例所提供的任意游戏角色移动控制方法,具备执行方法相应的功能模块和有益效果。本公开装置实施例中未详尽描述的内容可以参考本公开任意方法实施例中的描述。

图6为本公开实施例提供的一种电子设备的结构示意图。如图6所示,电子设备600包括一个或多个处理器601和存储器602。

处理器601可以是中央处理单元(cpu)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备600中的其他组件以执行期望的功能。

存储器602可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器601可以运行程序指令,以实现上文的本公开的实施例的二维图片的三维显示方法以及/或者其他期望的功能。在计算机可读存储介质中还可以存储诸如输入信号、信号分量、噪声分量等各种内容。

在一个示例中,电子设备600还可以包括:输入装置603和输出装置604,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。

此外,该输入装置603还可以包括例如键盘、鼠标等等。

该输出装置604可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置604可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。

当然,为了简化,图6中仅示出了该电子设备600中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备600还可以包括任何其他适当的组件。

除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本公开实施例所提供的任意游戏角色移动控制方法。

计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,程序设计语言包括面向对象的程序设计语言,诸如java、c++等,还包括常规的过程式程序设计语言,诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。

此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令在被处理器运行时使得处理器执行本公开实施例所提供的任意游戏角色移动控制方法。

计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

起点商标作为专业知识产权交易平台,可以帮助大家解决很多问题,如果大家想要了解更多知产交易信息请点击 【在线咨询】或添加微信 【19522093243】与客服一对一沟通,为大家解决相关问题。

此文章来源于网络,如有侵权,请联系删除

tips