CN117732066A - 虚拟对象的控制方法、装置、计算机设备及可读存储介质 - Google Patents
虚拟对象的控制方法、装置、计算机设备及可读存储介质 Download PDFInfo
- Publication number
- CN117732066A CN117732066A CN202211538853.1A CN202211538853A CN117732066A CN 117732066 A CN117732066 A CN 117732066A CN 202211538853 A CN202211538853 A CN 202211538853A CN 117732066 A CN117732066 A CN 117732066A
- Authority
- CN
- China
- Prior art keywords
- virtual object
- sinking
- state
- real
- area
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 86
- 238000001514 detection method Methods 0.000 claims abstract description 100
- 230000033001 locomotion Effects 0.000 claims description 142
- 239000013598 vector Substances 0.000 claims description 125
- 239000002775 capsule Substances 0.000 claims description 47
- 230000008569 process Effects 0.000 claims description 42
- 230000009194 climbing Effects 0.000 claims description 35
- 230000006870 function Effects 0.000 claims description 30
- 230000000994 depressogenic effect Effects 0.000 claims description 12
- 230000001960 triggered effect Effects 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 10
- 230000009191 jumping Effects 0.000 claims description 10
- 230000009471 action Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 8
- 238000013461 design Methods 0.000 abstract description 11
- 238000011161 development Methods 0.000 description 41
- 230000018109 developmental process Effects 0.000 description 41
- 238000012876 topography Methods 0.000 description 12
- 230000006399 behavior Effects 0.000 description 5
- 230000005855 radiation Effects 0.000 description 5
- 230000001174 ascending effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000007665 sagging Methods 0.000 description 3
- 208000027418 Wounds and injury Diseases 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006378 damage Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000005286 illumination Methods 0.000 description 2
- 208000014674 injury Diseases 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本申请公开了一种虚拟对象的控制方法、装置、计算机设备及可读存储介质,涉及游戏设计技术领域,按照实际下陷情况进行移动,避免发生错误,保证状态切换的正确性,赋予游戏角色生命力。所述方法包括:在虚拟对象进入下陷区域的情况下,控制所述虚拟对象进入下陷模式;确定所述虚拟对象的实时状态,所述实时状态至少根据对所述虚拟对象的控制指令以及所述虚拟对象与所述下陷区域的实时物理碰撞检测结果中的任意一项或两项确定;根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现。
Description
技术领域
本申请涉及游戏设计技术领域,特别是涉及一种虚拟对象的控制方法、装置、计算机设备及可读存储介质。
背景技术
近年来,游戏设计技术飞速发展,为了更好的游戏体验,游戏开发人员对游戏的要求也越来越高。现在很多游戏都十分注重玩家在游戏时与游戏世界中的地形、建筑等的交互,包含了丰富的地形地貌,带给玩家在不同游戏环境中的不一样的游戏体验。流沙下陷地形是游戏中常见的一种地形,游戏中的虚拟对象在流沙下陷地形中会产生诸如减速、下陷等状态,因此,在游戏中需要通过控制虚拟对象来模拟虚拟对象在流沙中各个阶段的表现。
申请人认识到,目前具有流沙类下陷地形功能的游戏大多是单机游戏,单机游戏在控制虚拟对象模拟在流沙中各个阶段的表现时,只需要专注于虚拟对象和场景的交互以及具体的功能表现。而对于一些开放世界类多人网络同步网络游戏来说,其中虚拟对象的运动模型复杂度很高,各种移动状态与流沙类下陷地形中的下陷之间的切换以及功能常常会存在冲突,使虚拟对象的控制难度较高,且难以在流沙类下陷地形下实现各种其他表现。甚至如果虚拟对象带有能够影响地形生成流沙类下陷地形的技能,在开放世界多人网络同步游戏的环境中,需要在保证游戏流畅、功能完整的前提下,尽量减少同步的数据量。由于以上问题,会导致开放世界网络游戏游戏中虚拟对象的技能设计受到局限,无法为玩家带来更新奇的游戏体验。
发明内容
有鉴于此,本申请提供了一种虚拟对象的控制方法、装置、计算机设备及可读存储介质,主要目的在于解决目前虚拟对象的运动模型复杂度很高,各种移动状态与流沙场景中的下陷之间的切换以及功能常常会存在冲突,使虚拟对象的控制难度较高,且难以在流沙场景下实现各种其他表现,导致开放世界网络游戏游戏中虚拟对象的技能设计受到局限,无法为玩家带来更新奇的游戏体验的问题。
依据本申请第一方面,提供了一种虚拟对象的控制方法,该方法包括:
在虚拟对象进入下陷区域的情况下,控制所述虚拟对象进入下陷模式;
确定所述虚拟对象的实时状态,所述实时状态至少根据对所述虚拟对象的控制指令以及所述虚拟对象与所述下陷区域的实时物理碰撞检测结果中的任意一项或两项确定;
根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现。
可选地,所述在虚拟对象进入下陷区域的情况下,控制所述虚拟对象进入下陷模式,包括:
持续检测所述下陷区域的物理体积是否被触发,以及在检测到所述物理体积被触发时,确定检测到所述虚拟对象进入所述下陷区域;
获取所述物理体积上配置的速度参数,按照所述速度参数控制所述虚拟对象在所述下陷区域中持续向下移动;
同时控制所述虚拟对象由移动状态变更为流沙下陷状态,使所述虚拟对象由移动模式切换为下陷模式。
可选地,所述按照所述速度参数控制所述虚拟对象在所述下陷区域中持续向下移动,包括:
在所述速度参数中提取第一阶段下陷速度,以及控制所述虚拟对象在所述下陷区域中以所述第一阶段下陷速度竖直向下移动;
在控制所述虚拟对象以所述第一阶段下陷速度竖直向下移动的过程中,确定用于表示所述虚拟对象的胶囊体,持续统计所述胶囊体的胶囊体底部与所述物理体积的上表面之间的距离;
当统计到所述距离达到距离阈值时,在所述速度参数中获取第二阶段下陷速度,控制所述虚拟对象在所述下陷区域中以所述第二阶段下陷速度竖直向下移动,并控制所述虚拟对象由所述移动状态变更为所述流沙下陷状态,使所述虚拟对象由移动模式切换为下陷模式。
可选地,所述确定所述虚拟对象的实时状态,包括:
根据基于所述虚拟对象接收到的控制指令,计算所述虚拟对象的运动参数,并确定所述运动参数指示的所述虚拟对象的实时状态;和/或,
基于所述虚拟对象向所述下陷区域进行碰撞检测,得到所述实时物理碰撞检测结果,并确定所述实时物理碰撞检测结果指示的所述虚拟对象的实时状态;
其中,所述实时状态由所述虚拟对象的实时状态控制器控制及变更,所述实时状态至少包括站立状态、移动状态、流沙下陷状态、跳跃状态、攀爬跨越状态、空中下落状态中的一种或多种。
可选地,所述根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现,包括:
确定用于表示所述虚拟对象的胶囊体,在所述虚拟对象下陷的过程中以所述胶囊体为基准竖直向下做胶囊体检测和射线检测;
获取所述胶囊体检测和所述射线检测反馈的检测结果,识别所述检测结果携带的信息作为所述虚拟对象的脚下区域的物理信息;
读取所述物理信息包括的地面层级信息,查询所述地面层级信息是否处于站立条件指示的范围内;
若查询到所述地面层级信息处于所述站立条件指示的范围内,则确定所述物理信息指示所述脚下区域符合站立条件,对所述虚拟对象当前的前进移动向量进行分解,得到所述前进移动向量在立轴方向的立轴分量,按照所述立轴分量控制所述虚拟对象移动;
若查询到所述地面层级信息未处于所述站立条件指示的范围内,则确定所述物理信息指示所述脚下区域不符合所述站立条件,采集所述虚拟对象的当前下陷速度,将所述当前下陷速度转化为当前下陷移动向量,计算所述当前下陷移动向量与所述前进移动向量的第二向量和值,以及按照所述第二向量和值控制所述虚拟对象在所述下陷区域中进行移动。
可选地,所述对所述虚拟对象当前的前进移动向量进行分解,得到所述前进移动向量在立轴方向的立轴分量,按照所述立轴分量控制所述虚拟对象移动,包括:
采集所述虚拟对象当前的所述前进移动向量,按照预设坐标系,沿着所述前进移动向量指示的方向将所述前进移动向量分解为多个分向量;
在所述多个分向量中提取方向与所述立轴方向一致的分向量作为所述立轴分量,以及获取分量阈值,将所述立轴分量与所述分量阈值进行比对;
如果所述立轴分量小于分量阈值,则确定所述虚拟对象当前在所述下陷区域中的下陷速度,将所述下陷速度转化为下陷移动向量,在所述虚拟对象的下陷模式中采用所述下陷移动向量对所述前进移动向量在立轴方向的立轴分量进行替换,以及按照替换后的所述前进移动向量控制所述虚拟对象在所述下陷区域中进行移动;
如果所述立轴分量大于等于所述分量阈值,则按照所述前进移动向量控制所述虚拟对象在所述下陷区域中进行移动。
可选地,所述根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现,包括:
若基于所述虚拟对象接收到跳跃指令,则查询所述虚拟对象的实时状态;
当所述虚拟对象的实时状态为所述移动状态时,执行所述跳跃指令;
当所述虚拟对象的实时状态为所述流沙下陷状态时,基于所述虚拟对象调用所述流沙下陷状态的物理下陷函数,控制所述虚拟对象的实时状态由所述流沙下陷状态变更为所述移动状态,使所述虚拟对象退出所述下陷模式,并执行所述跳跃指令。
可选地,所述执行所述跳跃指令,包括:
获取所述跳跃指令关联的跳跃上升速度,将所述跳跃上升速度转化为跳跃移动向量;
计算所述跳跃移动向量与所述前进移动向量的第一向量和,按照所述第一向量和控制所述虚拟对象在所述下陷区域中向上移动;
同时控制所述虚拟对象的实时状态由所述移动状态变更为空中下落状态,使所述虚拟对象由所述移动模式切换至空中下落模式。
可选地,所述根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现,包括:
若在控制所述虚拟对象以第一阶段下陷速度竖直向下移动的过程中接收到攀爬指令,则以所述虚拟对象的胶囊体为基准,水平向前做胶囊体检测;
当所述胶囊体检测反馈的检测结果指示存在障碍物时,以所述胶囊体为基准,对所述障碍物执行进行碰撞检测,获取所述碰撞检测反馈的检测结果;
在所述碰撞检测反馈的检测结果指示所述障碍物满足攀爬跨越条件时,控制所述虚拟对象的实时状态由所述移动状态变更为攀爬跨越状态,使所述虚拟对象由所述移动模式切换至攀爬跨越模式,并控制所述虚拟对象攀爬跨越所述障碍物;
其中,在所述碰撞检测反馈的检测结果指示所述障碍物不满足攀爬跨越条件时,控制所述虚拟对象以当前的前进移动向量对所述障碍物进行碰撞,并采集碰撞后的所述虚拟对象的剩余移动向量,控制所述虚拟对象按照所述剩余移动向量在所述障碍物表面进行滑动。
可选地,所述方法还包括:
确定待进行下陷区域创建的至少一个预设位置,在所述至少一个预设位置中每个预设位置上创建物理体积作为下陷区域,其中,所述物理体积具备触发功能且用于判断是否有虚拟对象进入下陷区域、更新虚拟对象在下陷区域中沉没的深度参数;和/或,
当基于所述下陷区域的物理体积检测到所述虚拟对象离开所述下陷区域时,在所述虚拟对象的状态机中调用流沙下陷状态的物理下陷函数,控制所述虚拟对象的状态机中的状态由所述流沙下陷状态变更为移动状态,使所述虚拟对象退出所述下陷模式。
可选地,所述方法还包括:
接收服务器传输的网络同步数据,所述网络同步数据至少包括所述虚拟对象的运动参数和所述虚拟对象的实时状态中的一种或多种;
根据所述网络同步数据进行数据同步,以使客户端表现其他用户控制的虚拟对象在下陷区域的动作表现。
依据本申请第二方面,提供了一种虚拟对象的控制装置,该装置包括:
第一控制模块,用于在虚拟对象进入下陷区域的情况下,控制所述虚拟对象进入下陷模式;
确定模块,用于确定所述虚拟对象的实时状态,所述实时状态至少根据对所述虚拟对象的控制指令以及所述虚拟对象与所述下陷区域的实时物理碰撞检测结果中的任意一项或两项确定;
第二控制模块,用于根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现。
可选地,所述第一控制模块,用于持续检测所述下陷区域的物理体积是否被触发,以及在检测到所述物理体积被触发时,确定检测到所述虚拟对象进入所述下陷区域;获取所述物理体积上配置的速度参数,按照所述速度参数控制所述虚拟对象在所述下陷区域中持续向下移动;同时控制所述虚拟对象由移动状态变更为流沙下陷状态,使所述虚拟对象由移动模式切换为下陷模式。
可选地,所述第一控制模块,用于在所述速度参数中提取第一阶段下陷速度,以及控制所述虚拟对象在所述下陷区域中以所述第一阶段下陷速度竖直向下移动;在控制所述虚拟对象以所述第一阶段下陷速度竖直向下移动的过程中,确定用于表示所述虚拟对象的胶囊体,持续统计所述胶囊体的胶囊体底部与所述物理体积的上表面之间的距离;当统计到所述距离达到距离阈值时,在所述速度参数中获取第二阶段下陷速度,控制所述虚拟对象在所述下陷区域中以所述第二阶段下陷速度竖直向下移动,并控制所述虚拟对象由所述移动状态变更为所述流沙下陷状态,使所述虚拟对象由移动模式切换为下陷模式。
可选地,所述确定模块,用于根据基于所述虚拟对象接收到的控制指令,计算所述虚拟对象的运动参数,并确定所述运动参数指示的所述虚拟对象的实时状态;和/或,基于所述虚拟对象向所述下陷区域进行碰撞检测,得到所述实时物理碰撞检测结果,并确定所述实时物理碰撞检测结果指示的所述虚拟对象的实时状态;其中,所述实时状态由所述虚拟对象的实时状态控制器控制及变更,所述实时状态至少包括站立状态、移动状态、流沙下陷状态、跳跃状态、攀爬跨越状态、空中下落状态中的一种或多种。
可选地,所述第二控制模块,用于确定用于表示所述虚拟对象的胶囊体,在所述虚拟对象下陷的过程中以所述胶囊体为基准竖直向下做胶囊体检测和射线检测;获取所述胶囊体检测和所述射线检测反馈的检测结果,识别所述检测结果携带的信息作为所述虚拟对象的脚下区域的物理信息;读取所述物理信息包括的地面层级信息,查询所述地面层级信息是否处于站立条件指示的范围内;若查询到所述地面层级信息处于所述站立条件指示的范围内,则确定所述物理信息指示所述脚下区域符合站立条件,对所述虚拟对象当前的前进移动向量进行分解,得到所述前进移动向量在立轴方向的立轴分量,按照所述立轴分量控制所述虚拟对象移动;若查询到所述地面层级信息未处于所述站立条件指示的范围内,则确定所述物理信息指示所述脚下区域不符合所述站立条件,采集所述虚拟对象的当前下陷速度,将所述当前下陷速度转化为当前下陷移动向量,计算所述当前下陷移动向量与所述前进移动向量的第二向量和值,以及按照所述第二向量和值控制所述虚拟对象在所述下陷区域中进行移动。
可选地,所述第二控制模块,用于采集所述虚拟对象当前的所述前进移动向量,按照预设坐标系,沿着所述前进移动向量指示的方向将所述前进移动向量分解为多个分向量;在所述多个分向量中提取方向与所述立轴方向一致的分向量作为所述立轴分量,以及获取分量阈值,将所述立轴分量与所述分量阈值进行比对;如果所述立轴分量小于分量阈值,则确定所述虚拟对象当前在所述下陷区域中的下陷速度,将所述下陷速度转化为下陷移动向量,在所述虚拟对象的下陷模式中采用所述下陷移动向量对所述前进移动向量在立轴方向的立轴分量进行替换,以及按照替换后的所述前进移动向量控制所述虚拟对象在所述下陷区域中进行移动;如果所述立轴分量大于等于所述分量阈值,则按照所述前进移动向量控制所述虚拟对象在所述下陷区域中进行移动。
可选地,所述第二控制模块,用于若基于所述虚拟对象接收到跳跃指令,则查询所述虚拟对象的实时状态;当所述虚拟对象的实时状态为所述移动状态时,执行所述跳跃指令;当所述虚拟对象的实时状态为所述流沙下陷状态时,基于所述虚拟对象调用所述流沙下陷状态的物理下陷函数,控制所述虚拟对象的实时状态由所述流沙下陷状态变更为所述移动状态,使所述虚拟对象退出所述下陷模式,并执行所述跳跃指令。
可选地,所述第二控制模块,用于获取所述跳跃指令关联的跳跃上升速度,将所述跳跃上升速度转化为跳跃移动向量;计算所述跳跃移动向量与所述前进移动向量的第一向量和,按照所述第一向量和控制所述虚拟对象在所述下陷区域中向上移动;同时控制所述虚拟对象的实时状态由所述移动状态变更为空中下落状态,使所述虚拟对象由所述移动模式切换至空中下落模式。
可选地,所述第二控制模块,用于若在控制所述虚拟对象以第一阶段下陷速度竖直向下移动的过程中接收到攀爬指令,则以所述虚拟对象的胶囊体为基准,水平向前做胶囊体检测;当所述胶囊体检测反馈的检测结果指示存在障碍物时,以所述胶囊体为基准,对所述障碍物执行进行碰撞检测,获取所述碰撞检测反馈的检测结果;在所述碰撞检测反馈的检测结果指示所述障碍物满足攀爬跨越条件时,控制所述虚拟对象的实时状态由所述移动状态变更为攀爬跨越状态,使所述虚拟对象由所述移动模式切换至攀爬跨越模式,并控制所述虚拟对象攀爬跨越所述障碍物;其中,在所述碰撞检测反馈的检测结果指示所述障碍物不满足攀爬跨越条件时,控制所述虚拟对象以当前的前进移动向量对所述障碍物进行碰撞,并采集碰撞后的所述虚拟对象的剩余移动向量,控制所述虚拟对象按照所述剩余移动向量在所述障碍物表面进行滑动。
可选地,所述装置还包括:
创建模块,用于确定待进行下陷区域创建的至少一个预设位置,在所述至少一个预设位置中每个预设位置上创建物理体积作为下陷区域,其中,所述物理体积具备触发功能且用于判断是否有虚拟对象进入下陷区域、更新虚拟对象在下陷区域中沉没的深度参数;和/或,
所述第二控制模块,还用于当基于所述下陷区域的物理体积检测到所述虚拟对象离开所述下陷区域时,在所述虚拟对象的状态机中调用流沙下陷状态的物理下陷函数,控制所述虚拟对象的状态机中的状态由所述流沙下陷状态变更为移动状态,使所述虚拟对象退出所述下陷模式。
可选地,所述装置还包括:
同步模块,用于接收服务器传输的网络同步数据,所述网络同步数据至少包括所述虚拟对象的运动参数和所述虚拟对象的实时状态中的一种或多种;根据所述网络同步数据进行数据同步,以使客户端表现其他用户控制的虚拟对象在下陷区域的动作表现。
依据本申请第三方面,提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面中任一项所述方法的步骤。
依据本申请第四方面,提供了一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的方法的步骤。
借由上述技术方案,本申请提供的一种虚拟对象的控制方法、装置、计算机设备及可读存储介质,本申请在虚拟对象进入下陷区域的情况下,控制虚拟对象进入下陷模式,确定虚拟对象的实时状态,根据实时状态,控制虚拟对象在下陷区域展现对应的动画表现,在虚拟对象移动的过程中,按照其在下陷区域中的实际下陷情况进行移动的调整,避免按照常规的地面移动模式控制虚拟对象移动时发生错误或与实际情况不符,保证虚拟对象移动状态切换的正确性,为虚拟对象下陷过程中设计技能的释放提供了可能,使虚拟对象的游戏表现更加真实,赋予游戏角色生命力。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本申请实施例提供的一种虚拟对象的控制方法流程示意图;
图2A示出了本申请实施例提供的另一种虚拟对象的控制方法流程示意图;
图2B示出了本申请实施例提供的一种向量分解示意图;
图2C示出了本申请实施例提供的一种虚拟对象的控制方法流程示意图;
图3示出了本申请实施例提供的一种虚拟对象的控制装置的结构示意图;
图4示出了本申请实施例提供的一种计算机设备的装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本申请的示例性实施例。虽然附图中显示了本申请的示例性实施例,然而应当理解,可以以各种形式实现本申请而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本申请,并且能够将本申请的范围完整的传达给本领域的技术人员。
本申请实施例提供了一种虚拟对象的控制方法,如图1所示,该方法包括:
101、在虚拟对象进入下陷区域的情况下,控制虚拟对象进入下陷模式。
在游戏世界的地图中,往往包含了丰富的地形地貌,带给玩家在不同的环境中不一样的游玩体验。流沙下陷地形是游戏中常见的一种的地形,角色在流沙下陷地形中会产生例如减速、下陷等状态,因此需要模拟人物在流沙中各阶段的表现。类似于流沙形态或者玩法,还有其他地形地貌,比如沼泽,也是存在进入这样的地形就让玩家进入减速、下陷的状态,功能很类似,只是表现形式不同,与之相配合的玩法也不同。申请人认识到,目前具有流沙下陷地形功能的游戏大多是单机游戏,在这些游戏中不需要考虑网络同步,只需要专注于做好角色和场景的交互以及具体的功能表现,包括动作、触发机制等;而目前多人的网络游戏中,实现开放游戏世界流沙下陷地形的游戏较少,缺少对于多人网络环境下的支持。而且,由于在开放世界类型中运动模式的复杂度很高,各种移动模式之间的切换以及功能常常会有冲突,大大增加了开发的难度。
因此,本申请提出了一种虚拟对象的控制方法,将下陷区域(也即流沙、沼泽等地形区域)创建为一个物理体积,在虚拟对象进入下陷区域的情况下,控制虚拟对象进入下陷模式,确定虚拟对象的实时状态,根据实时状态,控制虚拟对象在下陷区域展现对应的动画表现,其中,实时状态至少根据对虚拟对象的控制指令以及虚拟对象与下陷区域的实时物理碰撞检测结果中的任意一项或两项确定,避免按照常规的地面移动模式控制虚拟对象移动时发生错误或与实际情况不符,保证虚拟对象移动状态切换的正确性,为虚拟对象下陷过程中设计技能的释放提供了可能,使虚拟对象的游戏表现更加真实,赋予游戏角色生命力。
本申请实施例可以应用基于游戏引擎开发的单机游戏、网络游戏或者虚拟世界、带有网络同步的虚拟世界中,游戏引擎具体可以是UE4(Unreal Engine 4,虚幻引擎4)、UE5(Unreal Engine 5,虚幻引擎5)、Untiy等游戏引擎,本申请对此不进行具体限定。其中,虚拟对象可以包括建筑、花草树木、石头等,也可以包括网络游戏中的NPC(non-playercharacter,非玩家角色)、载具、道具、也可以是本客户端玩家或其他玩家控制的虚拟角色、载具、道具等。响应于虚拟对象下陷技能释放指令,表示虚拟对象需要进行下陷表现,因此,需要在虚拟场景中生成下陷区域,后续在该下陷区域中展现该虚拟对象的下陷动画表现。为了能在游戏中及时检测到有虚拟对象进入到下陷区域中,在本申请实施例中,为下陷区域创建了一个物理体积,该物理体积在游戏开发引擎中可以是Volume(物理体积),其具有触发器功能,用于调整关卡中指定区域的行为,实际在游戏中,物理体积可以对体积中玩家或者其他物体造成伤害;或者还可以作为碰撞体积,以便阻止特定物体进出体积;或者还可以当某个物体进入体积时做特定操作和设置;或者还可以更改关卡中计算其光照和可视性的方式等。本申请实施例以该物理体积作为进出下陷区域的触发器,从而判断虚拟对象是否进入或者离开下陷区域。实际应用的过程中,在游戏开发引擎中可将该物理体积记为DriftSandVolume,这样,当检测到下陷区域的物理体积被虚拟对象触发时,确定虚拟对象进入下陷区域。
而为了保证其他状态与下陷状态能够正常切换,在本申请实施例中,通过对虚拟对象的状态机进行状态变更,控制虚拟对象进入下陷模式以及在下陷区域中下陷。其中,下陷模式是开发人员在游戏开发引擎中定义的一个运动模式,具体可以为Move_Custom_Sub_DriftSandFalling模式,该下陷模式用于标记虚拟对象进入到流沙下陷的移动方式,并且会通过这个标记来进行同步。在这种自定义的移动模式下,水平上的速度会有最大速度的限制,竖直方向会根据深度和虚拟对象状态使用不同的下陷速度,并在玩家释放跳跃或者攀爬指令时,根据指令关联的值计算虚拟对象的速度,然后在虚拟对象移动的过程中进行碰撞检测,根据检测的结果和状态切换到不同的移动状态。
102、确定虚拟对象的实时状态。
其中,实时状态至少根据对虚拟对象的控制指令以及虚拟对象与下陷区域的实时物理碰撞检测结果中的任意一项或两项确定,实时状态指示了虚拟对象当前的状态,后续根据实时状态,可以控制虚拟对象进行动画表现,真实模拟虚拟对象的下陷状态。
103、根据实时状态,控制虚拟对象在下陷区域展现对应的动画表现。
其中,确定实时状态后,便可以实时状态,控制虚拟对象在下陷区域展现对应的动画表现,在游戏中展示虚拟对象是否出于下陷区域中、是否有减速表现、是否处于下陷状态等等。
本申请实施例提供的方法,在虚拟对象进入下陷区域的情况下,控制虚拟对象进入下陷模式,确定虚拟对象的实时状态,根据实时状态,控制虚拟对象在下陷区域展现对应的动画表现,在虚拟对象移动的过程中,按照其在下陷区域中的实际下陷情况进行移动的调整,避免按照常规的地面移动模式控制虚拟对象移动时发生错误或与实际情况不符,保证虚拟对象移动状态切换的正确性,为虚拟对象下陷过程中设计技能的释放提供了可能,使虚拟对象的游戏表现更加真实,赋予游戏角色生命力。
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,本申请实施例提供了另一种虚拟对象的控制方法,如图2A所示,该方法包括:
201、在虚拟对象进入下陷区域的情况下,控制虚拟对象进入下陷模式。
为了能在游戏中及时检测到有虚拟对象进入到下陷区域中,在本申请实施例中,为下陷区域创建了一个物理体积,物理体积具备触发功能且用于判断是否有虚拟对象进入下陷区域、更新虚拟对象在下陷区域中沉没的深度参数。该物理体积在游戏开发引擎中可以是Volume(物理体积),其具有触发器功能,用于调整关卡中指定区域的行为,实际在游戏中,物理体积可以对体积中玩家或者其他物体造成伤害;或者还可以作为碰撞体积,以便阻止特定物体进出体积;或者还可以当某个物体进入体积时做特定操作和设置;或者还可以更改关卡中计算其光照和可视性的方式等。本申请实施例以该物理体积作为进出下陷区域的触发器,从而判断虚拟对象是否进入或者离开下陷区域。实际应用的过程中,在游戏开发引擎中可将该物理体积记为DriftSandVolume,这样,当检测到下陷区域的物理体积被虚拟对象触发时,确定虚拟对象进入下陷区域。
而为了保证其他状态与下陷状态能够正常切换,在本申请实施例中,通过对虚拟对象的状态机进行状态变更,控制虚拟对象进入下陷模式以及在下陷区域中下陷。其中,下陷模式是开发人员在游戏开发引擎中定义的一个运动模式,具体可以为Move_Custom_Sub_DriftSandFalling模式,该下陷模式用于标记虚拟对象进入到流沙下陷的移动方式,并且会通过这个标记来进行同步。在这种自定义的移动模式下,水平上的速度会有最大速度的限制,竖直方向会根据深度和虚拟对象状态使用不同的下陷速度,并在玩家释放跳跃或者攀爬指令时,根据指令关联的值计算虚拟对象的速度,然后在虚拟对象移动的过程中进行碰撞检测,根据检测的结果和状态切换到不同的移动状态。
需要说明的是,为了使虚拟对象在下陷过程中的动作表现更加贴近真实情况,本申请实施例还在游戏场景的动画蓝图中添加对应的流沙状态机,也即在游戏场景的动画蓝图中确定已创建的至少一个下陷区域,在至少一个下陷区域中每个下陷区域上添加下陷区域状态机。这样,在控制虚拟对象在下陷区域中下陷时,根据虚拟对象在下陷过程中的向量变化,控制虚拟对象按照下陷区域状态机的指示进行动作表现。其中,下陷区域状态机中可以事先增加进入流沙和陷入流沙下沉的状态,包括站立状态、行走状态和下陷状态,这样通过以虚拟对象速度和状态为参数,配合对应的动作融合和蒙太奇来反应虚拟对象在流沙中角色动作表现,如减速行走,流沙下陷,陷入流沙死亡等等。
202、确定虚拟对象的实时状态。
实时状态至少根据对虚拟对象的控制指令以及虚拟对象与下陷区域的实时物理碰撞检测结果中的任意一项或两项确定。其中,在确定虚拟对象的实时状态时,可以根据基于虚拟对象接收到的控制指令,计算虚拟对象的运动参数,并确定运动参数指示的虚拟对象的实时状态。或者,还可以基于虚拟对象向下陷区域进行碰撞检测,得到实时物理碰撞检测结果,并确定实时物理碰撞检测结果指示的虚拟对象的实时状态。具体地,实时状态由虚拟对象的实时状态控制器控制及变更,实时状态至少包括站立状态、移动状态、流沙下陷状态、跳跃状态、攀爬跨越状态、空中下落状态中的一种或多种,下面对实时状态的确定过程进行描述:
是否控制虚拟对象进入下陷模式实际上是由虚拟对象的脚下区域决定的,如果脚下区域能支持站立,则还可以控制虚拟对象保持移动模式进行移动,反之则需要控制虚拟对象进行下陷模式。因此,游戏开发引擎会确定用于表示虚拟对象的胶囊体,在虚拟对象下陷的过程中以胶囊体为基准竖直向下做胶囊体检测和射线检测,并获取胶囊体检测和射线检测反馈的检测结果,识别检测结果携带的信息作为虚拟对象的脚下区域的物理信息,通过这些物理信息判断虚拟对象脚下物理是否是支持虚拟对象站立的地面。游戏开发引擎在判断虚拟对象的脚下区域是否支持站立时会读取物理信息包括的地面层级信息,以及在查询到地面层级信息处于站立条件指示的范围内时,确定脚下区域符合站立条件。比如假设地面层级在1-12之间支持站立,则当物理信息包括的地面层级信息为3时确定脚下区域支持站立,也即符合站立条件,而当物理信息包括的地面层级信息为13时确定脚下区域不支持站立,也即不符合站立条件。
若物理信息指示脚下区域符合站立条件,则游戏开发引擎会对虚拟对象当前的前进移动向量进行分解,得到前进移动向量在立轴方向的立轴分量,根据立轴分量的取值确定如何控制虚拟对象下陷。其中,在对前进移动向量进行分解时,游戏开发引擎会采集虚拟对象当前的前进移动向量,按照预设坐标系,沿着前进移动向量指示的方向将前进移动向量分解为多个分向量,并在多个分向量中提取方向与立轴方向一致的分向量作为立轴分量。其中,立轴分量也即是Z轴分量,具体可以参见图2B,沿着前进移动向量指示的方向将其分解为Z轴的分量和X轴的分量,将Z轴的分量用于后续的评估过程中。
确定立轴分量后,游戏开发引擎会获取分量阈值,将立轴分量与分量阈值进行比对,具体分量阈值可以为0。如果立轴分量小于分量阈值,表示虚拟对象正在沿着前进移动向量的方向向下移动,这时需要将虚拟对象在下陷区域中的下陷速度也考虑在虚拟对象向下移动的过程中,因此,游戏开发引擎确定虚拟对象当前在下陷区域中的下陷速度,将下陷速度转化为下陷移动向量,使下陷速度以向量的形式考虑在虚拟对象向下移动的过程中。具体地,游戏开发引擎会在虚拟对象的下陷模式中采用下陷移动向量对前进移动向量在立轴方向的立轴分量进行替换,以及按照替换后的前进移动向量控制虚拟对象在下陷区域中进行移动。也即将虚拟对象在下陷区域中下陷的速度转化成移动量并覆盖前面计算的前进移动向量的Z分量,这样就可以避免虚拟对象在下陷区域的物理体积中沿着斜坡上下时使用地面行走移动模式导致的错误。
而如果立轴分量大于等于分量阈值,则表示虚拟对象仍旧存在向上移动的趋势,需要按照前进移动向量控制其移动,暂时无需将虚拟对象在下陷区域中的下陷速度考虑进来,因此,游戏开发引擎按照前进移动向量控制虚拟对象在下陷区域中进行移动。
相应地,若物理信息指示脚下区域不符合站立条件,则可以直接参考虚拟对象当前的下陷速度控制虚拟对象移动,因此,游戏开发引擎会采集虚拟对象的当前下陷速度,将当前下陷速度转化为当前下陷移动向量,计算当前下陷移动向量与前进移动向量的第二向量和值,以及按照第二向量和值控制虚拟对象在下陷区域中进行移动。其中,游戏开发引擎在判断虚拟对象的脚下区域是否支持站立时会读取物理信息包括的地面层级信息,以及以及在查询到地面层级信息未处于站立条件指示的范围内时,确定脚下区域不符合站立条件,具体确定脚下区域是否符合站立条件的过程可以参见上面的描述,此处不再进行赘述。
在游戏中,虚拟对象会从空中或者地面进入下陷区域的范围内,因此,游戏开发引擎会持续检测下陷区域的物理体积是否被触发,以及在检测到物理体积被触发时,确定检测到虚拟对象当前所处位置位于下陷区域。具体地,由于物理体积可以被标记为DriftSandVolume,因此,实际应用中,游戏开发引擎可以通过触发器触发来判断角色是否进入DriftSandVolume中。需要说明的是,利用该DriftSandVolume触发器,游戏开发引擎也可以监听到虚拟对象的离开、死亡或者重生。由于实际游戏的设计过程中,开发人员可能希望虚拟对象在沼泽中快速下陷,或者希望在流沙中缓慢下陷,从而保证符合环境的实际情况。因此,在本申请实施例中,虚拟对象在下陷区域中下陷的速度参数可以事先配置在物理体积上,该速度参数也即指示了虚拟对象在下陷区域中下陷的快慢,用以满足开发人员策划不同下陷区域时的不同需求。
这样,在检测到虚拟对象进入下陷区域后,游戏开发引擎会取物理体积上配置的速度参数,按照速度参数控制虚拟对象在下陷区域中持续向下移动,同时在虚拟对象的状态机中的状态由移动状态变更为流沙下陷状态,使虚拟对象由移动模式切换为下陷模式。其中,下陷模式是开发人员在游戏开发引擎中定义的一个运动模式,具体可以为Move_Custom_Sub_DriftSandFalling模式,该下陷模式用于标记虚拟对象进入到流沙下陷的移动方式,并且会通过这个标记来进行同步。另外,本申请实施例中的基础下陷过程实际上分为两个阶段,第一阶段中虚拟对象会以一个较高的速度下陷,并在达到一定沉没深度之后由于阻力转为第二阶段缓慢下陷,下面对两个阶段之间是如何衔接的进行描述:
首先,游戏开发引擎会在速度参数中提取第一阶段下陷速度,以及控制虚拟对象在下陷区域中以第一阶段下陷速度竖直向下移动。在控制虚拟对象以第一阶段下陷速度竖直向下移动的过程中,游戏开发引擎会确定用于表示虚拟对象的胶囊体,持续统计胶囊体的胶囊体底部与物理体积的上表面之间的距离。
当统计到距离达到距离阈值时,表示需要进入第二阶段的下陷,因此,游戏开发引擎会在速度参数中获取第二阶段下陷速度,控制虚拟对象在下陷区域中以第二阶段下陷速度竖直向下移动,并将虚拟对象的状态机中的状态由移动状态变更为流沙下陷状态,使虚拟对象由移动模式切换为下陷模式,用下陷模式限制虚拟对象在水平方向上的最大速度,并根据深度和虚拟对象状态对竖直方向的速度进行限制。
需要说明的是,实际应用的过程中,虚拟对象下陷的过程中可能会死亡或者成功脱离该下陷区域,这时是需要对虚拟对象的移动模式进行更改,使其退出自定义的下陷模式的。因此,当游戏开发引擎基于下陷区域的物理体积检测到虚拟对象离开下陷区域时,游戏开发引擎在虚拟对象的状态机中调用流沙下陷状态的物理下陷函数,控制虚拟对象的状态机中的状态由流沙下陷状态变更为移动状态,使虚拟对象退出下陷模式。
203、根据下陷计算结果展现处于下陷区域内的虚拟对象的下陷动画表现。
通过上述过程完成游戏场景中的配置并确定虚拟对象的实时状态后,便可以开始根据下陷计算结果展现处于下陷区域内的虚拟对象的下陷动画表现。
实际应用的过程中,在虚拟对象下陷过程进入第一阶段时,虚拟对象是允许跳跃的,这样玩家就可以在下陷区域中向上跳跃来刷新虚拟对象在下陷区域中浸没的深度。在游戏中,普通的跳跃操作需要满足一个条件,即虚拟对象是否行走在地面上。而标记的DriftSandVolume只是一个继承于Volume的物理体积,并非是真正的地面,所以在下陷区域上跳跃时需要进行特殊处理,也即将DriftSandVolume视为地面,这样虚拟对象才能完成跳跃的操作。而参见上面的描述可知,虚拟对象进入DriftSandVolume时,虚拟对象的移动模式会变成自定义的下陷模式Move_Custom_Sub_DriftSandFalling,此时虚拟对象在立轴方向上的速度是由DriftSandVolume配置的速度参数决定的,但是当虚拟对象跳跃的时候,会给予虚拟对象一个向上的速度,并更改虚拟对象的移动模式。因此,在本申请实施例中,若基于虚拟对象接收到跳跃指令,游戏开发引擎会先读取虚拟对象的状态机中设置的状态,根据状态来判断虚拟对象的移动模式是否需要变更。当状态机中设置的状态为移动状态时,表示当前虚拟对象为移动模式,可以将虚拟对象当前的脚下区域认定为地面,也即可以直接在移动模式的基础上进行跳跃,因此,游戏开发引擎执行跳跃指令。而当状态机中设置的状态为流沙下陷状态时,表示当前虚拟对象处于自定义的下陷模式中,是不能直接执行跳跃指令的,游戏开发引擎会在虚拟对象的状态机中调用流沙下陷状态的物理下陷函数,控制虚拟对象的状态机中的状态由流沙下陷状态变更为移动状态,使虚拟对象退出下陷模式,也即退出Move_Custom_Sub_DriftSandFalling,并执行跳跃指令。需要说明的是,在跳跃时向上的速度不足时,游戏开发引擎无法通过控制虚拟对象离开DriftSandVolume来退出自定义的下陷模式,因此,游戏开发引擎需要在下陷模式的物理下陷函数中主动退出该下陷模式,该物理下陷函数具体可以为处理PhysCustomDriftSandFalling函数。另外,执行跳跃指令时不仅需要退出Move_Custom_Sub_DriftSandFalling模式,还需要按照该跳跃指令关联的跳跃上升速度控制虚拟对象移动的,因此,下面对执行跳跃指令的过程进行描述:
首先,游戏开发引擎获取跳跃指令关联的跳跃上升速度,将跳跃上升速度转化为跳跃移动向量。随后,游戏开发引擎计算跳跃移动向量与前进移动向量的第一向量和,按照第一向量和控制虚拟对象在下陷区域中向上移动,同时将虚拟对象的状态机中的状态由移动状态变更为空中下落状态,使虚拟对象由移动模式切换至空中下落模式。其中,空中下落模式可以为Move_Falling模式。
再有,在进入第一阶段时,虚拟对象是允许执行攀爬跨越动作的,下面对虚拟对象在下陷区域中进入攀爬跨越的过程进行描述:
若在控制虚拟对象以第一阶段下陷速度竖直向下移动的过程中接收到攀爬指令,则游戏开发引擎会以胶囊体为基准,水平向前做胶囊体检测,通过胶囊体检测的结果判断虚拟对象在执行移动的移动路径上是否被其他物体阻挡。当胶囊体检测反馈的检测结果指示存在障碍物时,需要检查该障碍物是否允许攀爬跨域,也即以胶囊体为基准,对障碍物执行进行碰撞检测,获取碰撞检测反馈的检测结果。实际应用的过程中,游戏引擎可以执行UE4函数HandleImpact,在这个函数里处理移动时碰撞的逻辑,在函数内检查障碍物是否满足攀爬跨越的条件。相应地,在碰撞检测反馈的检测结果指示障碍物满足攀爬跨越条件时,需要控制虚拟对象进入攀爬跨越的移动模式,将虚拟对象的状态机中的状态由移动状态变更为攀爬跨越状态,使虚拟对象由移动模式切换至攀爬跨越模式,并控制虚拟对象攀爬跨越障碍物;而在碰撞检测反馈的检测结果指示障碍物不满足攀爬跨越条件时,游戏开发引擎会控制虚拟对象以当前的前进移动向量对障碍物进行碰撞,并采集碰撞后的虚拟对象的剩余移动向量,控制虚拟对象按照剩余移动向量在障碍物表面进行滑动,也即用虚拟对象碰撞到障碍物时剩下的移动量在障碍物的表面进行滑动。
由于本申请实施例中针对的是多人网络游戏的环境,需要在保证游戏流畅、功能完整的前提下,尽量减少同步的数据量。因此,游戏开发引擎根据实时状态,控制虚拟对象在下陷区域展现对应的动画表现时,会接收服务器传输的网络同步数据,网络同步数据至少包括虚拟对象的运动参数和虚拟对象的实时状态中的一种或多种,并根据网络同步数据进行数据同步,以使客户端表现其他用户控制的虚拟对象在下陷区域的动作表现。其中,将虚拟对象的角色模型数据同步至其他客户端的过程分为两部分,一部分是将虚拟对象的位移同步至至少一个客户端,玩家的虚拟对象的位移同步是将虚拟对象对应的移动模式、速度、加速度、位置信息、朝向信息等进行同步。在同步的过程中,虚拟对象的玩家当前所使用的主控端和为游戏提供服务的服务器会同时进行分帧计算和同步,而且服务器要进行校验和纠正,然后服务器再将各种信息数据分发到各个客户端,这样其他玩家就能够看到当前玩家的虚拟对象在下陷区域中具体的移置、朝向等具体信息和表现了。另一部分是将虚拟对象的行为表现同步至其他客户端,虚拟对象是否出于下陷区域中、是否有减速表现、是否处于下陷状态等等均会同步给至少一个客户端,这个同步过程实际上可以通过属性同步和状态机管理器的状态同步实现的,以此来保证虚拟对象在下陷区域中的状态在主控端、服务器和至少一个客户端上表现的一致。
综上,本申请提出的虚拟对象控制方法的逻辑过程以及模式的切换总结如下:
如图2C所示,游戏开始后,游戏开发引擎会持续检测虚拟对象是否进入到下陷区域的物理体积DriftSandVolume中,若没有检测到虚拟对象进入,则保持当前的检测状态即可;而若检测到虚拟对象进入,则控制虚拟对象进入下陷模式Move_Custom_Sub_DriftSandFalling中。实际应用的过程中,进入下陷模式Move_Custom_Sub_DriftSandFalling后,若没有接收到其他技能指令,则游戏开发引擎会识别虚拟对象的脚下区域是否符合站立条件,当确定符合站立条件时,会对虚拟对象的前进移动向量进行分解,确定Z轴分量,在Z轴分量小于0时,将虚拟对象的下陷速度转化为下陷移动向量,采用下陷移动向量的Z轴分量替换虚拟对象的前进移动向量的Z轴分量,并按照替换后的前几移动向量控制虚拟对象移动;而在Z轴分量大于等于0时,依旧按照前进移动向量控制虚拟对象移动。另外,当确定虚拟对象的脚下区域不符合站立条件时,游戏开发引擎会采集虚拟对象的当前下陷速度,将当前下陷速度转化为当前下陷移动向量,计算当前下陷移动向量与前进移动向量的第二向量和值,以及按照第二向量和值控制虚拟对象在下陷区域中进行移动。需要说明的是,在控制虚拟对象移动的过程中,可能会接收到针对虚拟对象的攀爬跨越指令,这时需要检测虚拟对象前方是否有障碍物阻挡,如果有,则检测该障碍物是否能够攀爬跨越,在障碍物能够攀爬跨越时,控制虚拟对象攀爬跨越该障碍物,而在障碍物不能攀爬跨越时,控制虚拟对象在障碍物表面滑动。再有,实际应用的过程中,在上面检测到虚拟对象进入下陷区域并控制虚拟对象进入下陷模式Move_Custom_Sub_DriftSandFalling后,可能会接收到针对虚拟对象的跳跃指令,由于虚拟对象已经进入到下陷模式Move_Custom_Sub_DriftSandFalling中,而跳跃逻辑需要在移动模式下进行,因此,需要控制虚拟对象将下陷模式Move_Custom_Sub_DriftSandFalling退出,使虚拟对象处于移动模式,再执行跳跃逻辑。
本申请实施例提供的方法,在虚拟对象移动的过程中,按照其在下陷区域中的实际下陷情况进行移动的调整,避免按照常规的地面移动模式控制虚拟对象移动时发生错误或与实际情况不符,保证虚拟对象移动状态切换的正确性,同时,下陷功能的设计也同样能够关联或应用于技能系统,使得在游戏中可以设计能够将场景地形变为下陷地形的技能玩法,拓展了技能设计的可能性,也可为开放世界游戏或者虚拟世界中自身存在的众多丰富地形,提供不同的地形对应不一样的玩法的体验,为开放世界带来更多的开放性、探索性、可玩性。
进一步地,作为图1所述方法的具体实现,本申请实施例提供了一种虚拟对象的控制装置,如图3所示,所述装置包括:第一控制模块301,确定模块302,第二控制模块303。
该第一控制模块,用于在虚拟对象进入下陷区域的情况下,控制所述虚拟对象进入下陷模式;
该确定模块,用于确定所述虚拟对象的实时状态,所述实时状态至少根据对所述虚拟对象的控制指令以及所述虚拟对象与所述下陷区域的实时物理碰撞检测结果中的任意一项或两项确定;
该第二控制模块,用于根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现。
在具体的应用场景中,该第一控制模块301,用于持续检测所述下陷区域的物理体积是否被触发,以及在检测到所述物理体积被触发时,确定检测到所述虚拟对象进入所述下陷区域;获取所述物理体积上配置的速度参数,按照所述速度参数控制所述虚拟对象在所述下陷区域中持续向下移动;同时控制所述虚拟对象由移动状态变更为流沙下陷状态,使所述虚拟对象由移动模式切换为下陷模式。
在具体的应用场景中,该第一控制模块301,用于在所述速度参数中提取第一阶段下陷速度,以及控制所述虚拟对象在所述下陷区域中以所述第一阶段下陷速度竖直向下移动;在控制所述虚拟对象以所述第一阶段下陷速度竖直向下移动的过程中,确定用于表示所述虚拟对象的胶囊体,持续统计所述胶囊体的胶囊体底部与所述物理体积的上表面之间的距离;当统计到所述距离达到距离阈值时,在所述速度参数中获取第二阶段下陷速度,控制所述虚拟对象在所述下陷区域中以所述第二阶段下陷速度竖直向下移动,并控制所述虚拟对象由所述移动状态变更为所述流沙下陷状态,使所述虚拟对象由移动模式切换为下陷模式。
在具体的应用场景中,该确定模块302,用于根据基于所述虚拟对象接收到的控制指令,计算所述虚拟对象的运动参数,并确定所述运动参数指示的所述虚拟对象的实时状态;和/或,基于所述虚拟对象向所述下陷区域进行碰撞检测,得到所述实时物理碰撞检测结果,并确定所述实时物理碰撞检测结果指示的所述虚拟对象的实时状态;其中,所述实时状态由所述虚拟对象的实时状态控制器控制及变更,所述实时状态至少包括站立状态、移动状态、流沙下陷状态、跳跃状态、攀爬跨越状态、空中下落状态中的一种或多种。
在具体的应用场景中,该第二控制模块303,用于确定用于表示所述虚拟对象的胶囊体,在所述虚拟对象下陷的过程中以所述胶囊体为基准竖直向下做胶囊体检测和射线检测;获取所述胶囊体检测和所述射线检测反馈的检测结果,识别所述检测结果携带的信息作为所述虚拟对象的脚下区域的物理信息;读取所述物理信息包括的地面层级信息,查询所述地面层级信息是否处于站立条件指示的范围内;若查询到所述地面层级信息处于所述站立条件指示的范围内,则确定所述物理信息指示所述脚下区域符合站立条件,对所述虚拟对象当前的前进移动向量进行分解,得到所述前进移动向量在立轴方向的立轴分量,按照所述立轴分量控制所述虚拟对象移动;若查询到所述地面层级信息未处于所述站立条件指示的范围内,则确定所述物理信息指示所述脚下区域不符合所述站立条件,采集所述虚拟对象的当前下陷速度,将所述当前下陷速度转化为当前下陷移动向量,计算所述当前下陷移动向量与所述前进移动向量的第二向量和值,以及按照所述第二向量和值控制所述虚拟对象在所述下陷区域中进行移动。
在具体的应用场景中,该第二控制模块303,用于采集所述虚拟对象当前的所述前进移动向量,按照预设坐标系,沿着所述前进移动向量指示的方向将所述前进移动向量分解为多个分向量;在所述多个分向量中提取方向与所述立轴方向一致的分向量作为所述立轴分量,以及获取分量阈值,将所述立轴分量与所述分量阈值进行比对;如果所述立轴分量小于分量阈值,则确定所述虚拟对象当前在所述下陷区域中的下陷速度,将所述下陷速度转化为下陷移动向量,在所述虚拟对象的下陷模式中采用所述下陷移动向量对所述前进移动向量在立轴方向的立轴分量进行替换,以及按照替换后的所述前进移动向量控制所述虚拟对象在所述下陷区域中进行移动;如果所述立轴分量大于等于所述分量阈值,则按照所述前进移动向量控制所述虚拟对象在所述下陷区域中进行移动。
在具体的应用场景中,该第二控制模块303,用于若基于所述虚拟对象接收到跳跃指令,则查询所述虚拟对象的实时状态;当所述虚拟对象的实时状态为所述移动状态时,执行所述跳跃指令;当所述虚拟对象的实时状态为所述流沙下陷状态时,基于所述虚拟对象调用所述流沙下陷状态的物理下陷函数,控制所述虚拟对象的实时状态由所述流沙下陷状态变更为所述移动状态,使所述虚拟对象退出所述下陷模式,并执行所述跳跃指令。
在具体的应用场景中,该第二控制模块303,用于获取所述跳跃指令关联的跳跃上升速度,将所述跳跃上升速度转化为跳跃移动向量;计算所述跳跃移动向量与所述前进移动向量的第一向量和,按照所述第一向量和控制所述虚拟对象在所述下陷区域中向上移动;同时控制所述虚拟对象的实时状态由所述移动状态变更为空中下落状态,使所述虚拟对象由所述移动模式切换至空中下落模式。
在具体的应用场景中,该第二控制模块303,用于若在控制所述虚拟对象以第一阶段下陷速度竖直向下移动的过程中接收到攀爬指令,则以所述虚拟对象的胶囊体为基准,水平向前做胶囊体检测;当所述胶囊体检测反馈的检测结果指示存在障碍物时,以所述胶囊体为基准,对所述障碍物执行进行碰撞检测,获取所述碰撞检测反馈的检测结果;在所述碰撞检测反馈的检测结果指示所述障碍物满足攀爬跨越条件时,控制所述虚拟对象的实时状态由所述移动状态变更为攀爬跨越状态,使所述虚拟对象由所述移动模式切换至攀爬跨越模式,并控制所述虚拟对象攀爬跨越所述障碍物;其中,在所述碰撞检测反馈的检测结果指示所述障碍物不满足攀爬跨越条件时,控制所述虚拟对象以当前的前进移动向量对所述障碍物进行碰撞,并采集碰撞后的所述虚拟对象的剩余移动向量,控制所述虚拟对象按照所述剩余移动向量在所述障碍物表面进行滑动。
在具体的应用场景中,该装置还包括:
创建模块,用于确定待进行下陷区域创建的至少一个预设位置,在所述至少一个预设位置中每个预设位置上创建物理体积作为下陷区域,其中,所述物理体积具备触发功能且用于判断是否有虚拟对象进入下陷区域、更新虚拟对象在下陷区域中沉没的深度参数;和/或,
该第二控制模块303,还用于当基于所述下陷区域的物理体积检测到所述虚拟对象离开所述下陷区域时,在所述虚拟对象的状态机中调用流沙下陷状态的物理下陷函数,控制所述虚拟对象的状态机中的状态由所述流沙下陷状态变更为移动状态,使所述虚拟对象退出所述下陷模式。
在具体的应用场景中,该装置还包括:
同步模块,用于接收服务器传输的网络同步数据,所述网络同步数据至少包括所述虚拟对象的运动参数和所述虚拟对象的实时状态中的一种或多种;根据所述网络同步数据进行数据同步,以使客户端表现其他用户控制的虚拟对象在下陷区域的动作表现。
本申请实施例提供的装置,在虚拟对象进入下陷区域的情况下,控制虚拟对象进入下陷模式,确定虚拟对象的实时状态,根据实时状态,控制虚拟对象在下陷区域展现对应的动画表现,在虚拟对象移动的过程中,按照其在下陷区域中的实际下陷情况进行移动的调整,避免按照常规的地面移动模式控制虚拟对象移动时发生错误或与实际情况不符,保证虚拟对象移动状态切换的正确性,为虚拟对象下陷过程中设计技能的释放提供了可能,使虚拟对象的游戏表现更加真实,赋予游戏角色生命力。
需要说明的是,本申请实施例提供的一种虚拟对象的控制装置所涉及各功能单元的其他相应描述,可以参考图1和图2A至图2C中的对应描述,在此不再赘述。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
在示例性实施例中,参见图4,还提供了一种计算机设备,该计算机设备包括总线、处理器、存储器和通信接口,还可以包括输入输出接口和显示设备,其中,各个功能单元之间可以通过总线完成相互间的通信。该存储器存储有计算机程序,处理器,用于执行存储器上所存放的程序,执行上述实施例中的虚拟对象的控制方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的虚拟对象的控制方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。
本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。
以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (10)
1.一种虚拟对象的控制方法,其特征在于,包括:
在虚拟对象进入下陷区域的情况下,控制所述虚拟对象进入下陷模式;
确定所述虚拟对象的实时状态,所述实时状态至少根据对所述虚拟对象的控制指令以及所述虚拟对象与所述下陷区域的实时物理碰撞检测结果中的任意一项或两项确定;
根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现。
2.根据权利要求1所述的方法,其特征在于,所述在虚拟对象进入下陷区域的情况下,控制所述虚拟对象进入下陷模式,包括:
持续检测所述下陷区域的物理体积是否被触发,以及在检测到所述物理体积被触发时,确定检测到所述虚拟对象进入所述下陷区域;
获取所述物理体积上配置的速度参数,按照所述速度参数控制所述虚拟对象在所述下陷区域中持续向下移动;
同时控制所述虚拟对象由移动状态变更为流沙下陷状态,使所述虚拟对象由移动模式切换为下陷模式。
3.根据权利要求2所述的方法,其特征在于,所述按照所述速度参数控制所述虚拟对象在所述下陷区域中持续向下移动,包括:
在所述速度参数中提取第一阶段下陷速度,以及控制所述虚拟对象在所述下陷区域中以所述第一阶段下陷速度竖直向下移动;
在控制所述虚拟对象以所述第一阶段下陷速度竖直向下移动的过程中,确定用于表示所述虚拟对象的胶囊体,持续统计所述胶囊体的胶囊体底部与所述物理体积的上表面之间的距离;
当统计到所述距离达到距离阈值时,在所述速度参数中获取第二阶段下陷速度,控制所述虚拟对象在所述下陷区域中以所述第二阶段下陷速度竖直向下移动,并控制所述虚拟对象由所述移动状态变更为所述流沙下陷状态,使所述虚拟对象由移动模式切换为下陷模式。
4.根据权利要求1所述的方法,其特征在于,所述确定所述虚拟对象的实时状态,包括:
根据基于所述虚拟对象接收到的控制指令,计算所述虚拟对象的运动参数,并确定所述运动参数指示的所述虚拟对象的实时状态;和/或,
基于所述虚拟对象向所述下陷区域进行碰撞检测,得到所述实时物理碰撞检测结果,并确定所述实时物理碰撞检测结果指示的所述虚拟对象的实时状态;
其中,所述实时状态由所述虚拟对象的实时状态控制器控制及变更,所述实时状态至少包括站立状态、移动状态、流沙下陷状态、跳跃状态、攀爬跨越状态、空中下落状态中的一种或多种。
5.根据权利要求4所述的方法,其特征在于,所述根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现,包括:
若在控制所述虚拟对象以第一阶段下陷速度竖直向下移动的过程中接收到攀爬指令,则以所述虚拟对象的胶囊体为基准,水平向前做胶囊体检测;
当所述胶囊体检测反馈的检测结果指示存在障碍物时,以所述胶囊体为基准,对所述障碍物执行进行碰撞检测,获取所述碰撞检测反馈的检测结果;
在所述碰撞检测反馈的检测结果指示所述障碍物满足攀爬跨越条件时,控制所述虚拟对象的实时状态由所述移动状态变更为攀爬跨越状态,使所述虚拟对象由所述移动模式切换至攀爬跨越模式,并控制所述虚拟对象攀爬跨越所述障碍物;
其中,在所述碰撞检测反馈的检测结果指示所述障碍物不满足攀爬跨越条件时,控制所述虚拟对象以当前的前进移动向量对所述障碍物进行碰撞,并采集碰撞后的所述虚拟对象的剩余移动向量,控制所述虚拟对象按照所述剩余移动向量在所述障碍物表面进行滑动。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定待进行下陷区域创建的至少一个预设位置,在所述至少一个预设位置中每个预设位置上创建物理体积作为下陷区域,其中,所述物理体积具备触发功能且用于判断是否有虚拟对象进入下陷区域、更新虚拟对象在下陷区域中沉没的深度参数;和/或,
当基于所述下陷区域的物理体积检测到所述虚拟对象离开所述下陷区域时,在所述虚拟对象的状态机中调用流沙下陷状态的物理下陷函数,控制所述虚拟对象的状态机中的状态由所述流沙下陷状态变更为移动状态,使所述虚拟对象退出所述下陷模式。
7.根据权利要求1-6中任一所述的方法,其特征在于,所述方法还包括:
接收服务器传输的网络同步数据,所述网络同步数据至少包括所述虚拟对象的运动参数和所述虚拟对象的实时状态中的一种或多种;
根据所述网络同步数据进行数据同步,以使客户端表现其他用户控制的虚拟对象在下陷区域的动作表现。
8.一种虚拟对象的控制装置,其特征在于,包括:
第一控制模块,用于在虚拟对象进入下陷区域的情况下,控制所述虚拟对象进入下陷模式;
确定模块,用于确定所述虚拟对象的实时状态,所述实时状态至少根据对所述虚拟对象的控制指令以及所述虚拟对象与所述下陷区域的实时物理碰撞检测结果中的任意一项或两项确定;
第二控制模块,用于根据所述实时状态,控制所述虚拟对象在所述下陷区域展现对应的动画表现。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211538853.1A CN117732066A (zh) | 2022-12-02 | 2022-12-02 | 虚拟对象的控制方法、装置、计算机设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211538853.1A CN117732066A (zh) | 2022-12-02 | 2022-12-02 | 虚拟对象的控制方法、装置、计算机设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117732066A true CN117732066A (zh) | 2024-03-22 |
Family
ID=90259777
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211538853.1A Pending CN117732066A (zh) | 2022-12-02 | 2022-12-02 | 虚拟对象的控制方法、装置、计算机设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117732066A (zh) |
-
2022
- 2022-12-02 CN CN202211538853.1A patent/CN117732066A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110141862B (zh) | 游戏中移动控制的方法及装置、电子设备、存储介质 | |
CN112862935B (zh) | 游戏角色的运动处理方法及装置、存储介质、计算机设备 | |
CN111729311B (zh) | 攀爬跳跃方法、装置、计算机设备及计算机可读存储介质 | |
CN111714891B (zh) | 角色攀爬方法、装置、计算机设备及可读存储介质 | |
CN108245887A (zh) | 虚拟对象控制方法、装置、电子装置及存储介质 | |
CN112717404B (zh) | 虚拟对象的移动处理方法、装置、电子设备及存储介质 | |
CN113559516B (zh) | 虚拟角色的控制方法和装置、存储介质及电子设备 | |
US20240009569A1 (en) | Character Jump Control Method and Apparatus in Game, Terminal Device and Storage Medium | |
CN111714892A (zh) | 游戏寻路方法及装置、存储介质、计算机设备 | |
CN106362397A (zh) | 载具的处理方法及装置 | |
CN113209618B (zh) | 虚拟角色的控制方法、装置、设备及介质 | |
CN112774201B (zh) | 一种虚拟角色掩蔽方法、装置、计算机设备及存储介质 | |
CN111191542B (zh) | 虚拟场景中的异常动作识别方法、装置、介质及电子设备 | |
Oliveira et al. | A framework for metroidvania games | |
CN117732066A (zh) | 虚拟对象的控制方法、装置、计算机设备及可读存储介质 | |
CN113546421A (zh) | 基于Jump Point Search算法的寻路方法及系统 | |
CN117732073A (zh) | 虚拟对象的控制方法、装置、计算机设备及可读存储介质 | |
CN116196611A (zh) | 基于挥手动作的体感游戏方法 | |
CN112774204B (zh) | 一种角色碰撞规避方法、装置、设备以及存储介质 | |
CN114288660A (zh) | 虚拟角色的飞行控制方法及装置、存储介质、电子装置 | |
CN110882543B (zh) | 控制虚拟环境中虚拟对象下落的方法、装置及终端 | |
CN113797543A (zh) | 游戏处理方法、装置、计算机设备、存储介质及程序产品 | |
JP2020163210A (ja) | 情報処理方法、装置、及び当該情報処理方法をコンピュータに実行させるためのプログラム | |
CN114247132B (zh) | 虚拟对象的控制处理方法、装置、设备、介质及程序产品 | |
CN113521734A (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 |