一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

虚拟角色的射击控制方法、装置、电子设备及存储介质与流程

2022-03-19 22:22:40 来源:中国专利 TAG:

虚拟角色的射击控制方法、装置、电子设备及存储介质
1.优先权说明
2.本技术要求申请号为202110646706.5,申请日为2021年06月10日,名称为:虚拟角色的射击控制方法、装置、电子设备及存储介质的优先权。
技术领域
3.本技术涉及计算机人机交互技术领域,尤其涉及一种虚拟角色的射击控制方法、装置、电子设备及计算机可读存储介质。


背景技术:

4.基于图形处理硬件的虚拟场景的人机交互技术,能够根据实际应用需求实现受控于用户或人工智能的虚拟对象之间的多样化的交互,具有广泛的实用价值。例如在游戏的虚拟场景中,能够模拟虚拟对象之间的真实的对战过程。
5.以游戏场景为例,射击游戏是一款深受用户喜爱的竞技游戏,不仅可以帮助用户释放压力、放松心情,并且还可以通过射击游戏提高用户自身的反应能力和灵敏性。
6.然而,相关技术在呈现射击表现时通常是采用一个简单的射击动画来模拟射击时的射击表现,即在每次用户控制虚拟角色执行射击操作时,均重复播放该动画作为连续射击时的射击表现。也就是说,相关技术呈现的射击表现比较单一,与真实世界中实际枪械在射击时的射击表现不一致,造成不真实的射击表现,导致用户的视觉体验较差。


技术实现要素:

7.本技术实施例提供一种虚拟角色的射击控制方法、装置、电子设备及计算机可读存储介质,能够模拟真实的射击表现,以提高用户在控制虚拟角色进行射击时的视觉体验。
8.本技术实施例的技术方案是这样实现的:
9.本技术实施例提供一种虚拟角色的射击控制方法,包括:
10.在虚拟场景中显示虚拟角色以及所述虚拟角色通过握持部位握持的虚拟射击道具;
11.响应于基于所述虚拟射击道具的射击触发操作,获取与所述虚拟射击道具当前的射击阶段对应的抖动配置信息,根据所述抖动配置信息获取与所述当前的射击阶段对应的抖动数据,以及
12.在所述当前的射击阶段中,基于与所述当前的射击阶段对应的抖动数据,控制所述握持部位带动所述虚拟射击道具进行对应的抖动。
13.上述方案中,当所述当前的射击阶段对应的抖动配置信息中同时配置有曲线资源和程序曲线时,在确定与所述当前的射击阶段对应的抖动数据之后,所述方法还包括:针对所述握持部位的每个参考方向执行以下处理:将基于所述曲线资源确定的抖动数据包括的在不同参考方向的位移,对应与基于所述程序曲线确定的抖动数据包括的在不同参考方向的位移相加,得到位移加和;将基于所述曲线资源确定的抖动数据包括的在不同参考方向
的旋转,对应与基于所述程序曲线确定的抖动数据包括的在不同参考方向的旋转相加,得到旋转加和;基于所述位移加和和所述旋转加和更新所述当前的射击阶段对应的抖动数据。
14.本技术实施例提供一种虚拟角色的射击控制装置,包括:
15.显示模块,用于在虚拟场景中显示虚拟角色以及所述虚拟角色通过握持部位握持的虚拟射击道具;
16.获取模块,用于响应于基于所述虚拟射击道具的射击触发操作,获取与所述虚拟射击道具当前的射击阶段对应的抖动配置信息;
17.所述获取模块,还用于根据所述抖动配置信息获取与所述当前的射击阶段对应的抖动数据;
18.控制模块,用于在所述当前的射击阶段中,基于与所述当前的射击阶段对应的抖动数据,控制所述握持部位带动所述虚拟射击道具进行对应的抖动。
19.上述方案中,所述获取模块,还用于获取从开始射击时刻到当前时刻对应的已射击次数;所述装置还包括确定模块,用于确定所述已射击次数对应的射击阶段,并作为所述虚拟射击道具当前的射击阶段,其中,每个所述射击阶段包括固定的射击次数;所述确定模块,还用于确定当前时刻与开始射击时刻之间的时间差,以及用于确定所述时间差对应的射击阶段,并作为所述虚拟射击道具当前的射击阶段,其中,每个所述射击阶段包括固定的时长。
20.上述方案中,所述获取模块,还用于根据动画后坐方式获取与所述当前的射击阶段对应的抖动数据。
21.上述方案中,所述获取模块,还用于获取所述虚拟射击道具在所述当前的射击阶段对应的后坐力的变化值;所述确定模块,还用于根据所述变化值确定与所述当前的射击阶段对应的抖动数据,其中,所述抖动数据包括所述握持部位相对于不同参考方向的位移和旋转。
22.上述方案中,所述获取模块,还用于获取所述虚拟射击道具从开始射击阶段到所述当前的射击阶段分别对应的后坐力的变化值;所述确定模块,还用于对多个所述变化值进行累加处理,并根据累加结果确定与所述当前的射击阶段对应的抖动数据,其中,所述抖动数据包括所述握持部位相对于不同参考方向的位移和旋转。
23.上述方案中,所述确定模块,还用于根据不同的射击阶段与偏移范围之间的对应关系确定曲线资源,并根据所述曲线资源确定与所述当前的射击阶段对应的抖动数据;或者,用于根据程序曲线确定与所述当前的射击阶段对应的抖动数据,其中,所述程序曲线包括以下至少之一:根据周期、振幅和初始值确定的三角函数类型的程序曲线;根据衰减的底数、衰减的频率、淡入时间和淡出时间确定的衰减函数类型的程序曲线。
24.上述方案中,所述确定模块,还用于根据所述当前的射击阶段,确定所述曲线资源中与所述当前的射击阶段对应的偏移范围;根据所述偏移范围确定对应的偏移值,并确定当前时刻与所述当前的射击阶段对应的射击时刻之间的时间差;基于所述时间差,确定与所述虚拟射击道具的射击间隔时间对应的插值曲线中与所述时间差对应的取值;将所述偏移值与所述取值的乘积作为与所述当前的射击阶段对应的抖动数据。
25.上述方案中,所述确定模块,还用于针对所述握持部位对应的每个参考方向,执行
以下处理:获取与位移对应的第一程序曲线,将所述第一程序曲线中与当前时刻对应的第一函数值作为所述参考方向的位移;获取与旋转对应的第二程序曲线,将所述第二程序曲线中与所述当前时刻对应的第二函数值作为所述参考方向的旋转。
26.上述方案中,所述确定模块,还用于针对所述握持部位的每个参考方向执行以下处理:将基于所述曲线资源确定的抖动数据包括的在不同参考方向的位移,对应与基于所述程序曲线确定的抖动数据包括的在不同参考方向的位移相加,得到位移加和;将基于所述曲线资源确定的抖动数据包括的在不同参考方向的旋转,对应与基于所述程序曲线确定的抖动数据包括的在不同参考方向的旋转相加,得到旋转加和;基于所述位移加和和所述旋转加和更新所述当前的射击阶段对应的抖动数据。
27.上述方案中,所述获取模块,还用于获取所述虚拟射击道具的类型;所述确定模块,还用于确定与所述类型的虚拟射击道具对应的第一调整系数,将所述第一调整系数与所述当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据,其中,所述第一调整系数与所述类型的虚拟射击道具的后坐力或杀伤力正相关。
28.上述方案中,所述获取模块,还用于获取所述虚拟角色在所述当前的射击阶段对应的射击模式;所述确定模块,还用于确定与所述射击模式对应的第二调整系数,将所述第二调整系数与所述当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据,其中,所述射击模式的精度与所述第二调整系数负相关。
29.上述方案中,所述控制模块,还用于在所述当前的射击阶段中更新显示所述虚拟场景的每一帧图像时,执行以下处理:将所述每一帧图像的抖动数据包括的不同参考方向的位移和旋转,分别叠加在所述握持部位对应参考方向的位置分量上,其中,所述不同参考方向的位移和旋转用于使所述握持部位带动所述虚拟射击道具进行对应的抖动。
30.上述方案中,所述获取模块,还用于获取所述虚拟射击道具在所述当前的射击阶段中的实时抖动方向;所述确定模块,还用于确定与所述实时抖动方向同步偏移的落弹点;所述控制模块,还用于控制所述虚拟射击道具发射的虚拟子弹击中所述落弹点。
31.本技术实施例提供一种电子设备,包括:
32.存储器,用于存储可执行指令;
33.处理器,用于执行所述存储器中存储的可执行指令时,实现本技术实施例提供的虚拟角色的射击控制方法。
34.本技术实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本技术实施例提供的虚拟角色的射击控制方法。
35.本技术实施例提供一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,用于被处理器执行时,实现本技术实施例提供的虚拟角色的射击控制方法。
36.本技术实施例具有以下有益效果:
37.针对不同的射击阶段,分别获取每个射击阶段对应的抖动数据,并在每个射击阶段中,基于该射击阶段对应的抖动数据控制虚拟角色的握持部位带动虚拟射击道具进行对应的抖动,如此,在射击过程中,不同的射击阶段对应的射击表现是各不相同的,而不是采用相关技术中重复播放同一个动画资源的方式,从而能够显著提高虚拟角色在射击时的视觉表现,给用户一种真实的射击体验。
附图说明
38.图1是本技术实施例提供的虚拟角色的射击控制方法的应用模式示意图;
39.图2是本技术实施例提供的虚拟角色的射击控制方法的应用模式示意图;
40.图3是本技术实施例提供的终端设备400的结构示意图;
41.图4是本技术实施例提供的虚拟角色的射击控制方法的流程示意图;
42.图5是本技术实施例提供的虚拟角色的射击控制方法的流程示意图;
43.图6是本技术实施例提供的虚拟角色的射击控制方法的流程示意图;
44.图7是相关技术提供的第一人称的角色在不同射击阶段分别对应的射击动作表现示意图;
45.图8是本技术实施例提供的第一人称的角色在不同射击阶段分别对应的射击动作表现示意图;
46.图9是本技术实施例提供的第一人称连续射击手部后拉最大时刻的叠加图;
47.图10是本技术实施例提供的第一人称的角色处于瞄准状态时在不同射击阶段分别对应的射击动作表现示意图;
48.图11是本技术实施例提供的第一人称的角色处于瞄准状态时连续射击手部后拉最大时刻的叠加图;
49.图12是本技术实施例提供的虚拟角色的射击控制方法的流程示意图;
50.图13是本技术实施例提供的武器射击抖动插槽的配置示意图。
具体实施方式
51.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
52.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
53.在以下的描述中,所涉及的术语“第一\第二”仅仅是是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
54.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
55.对本技术实施例进行进一步详细说明之前,对本技术实施例中涉及的名词和术语进行说明,本技术实施例中涉及的名词和术语适用于如下的解释。
56.1)客户端,终端设备中运行的用于提供各种服务的应用程序,例如视频播放客户端、游戏客户端等。
57.2)响应于,用于表示所执行的操作所依赖的条件或者状态,当满足所依赖的条件或状态时,所执行的一个或多个操作可以是实时的,也可以具有设定的延迟;在没有特别说明的情况下,所执行的多个操作不存在执行先后顺序的限制。
58.3)虚拟场景,是应用程序在终端设备上运行时显示(或提供)的虚拟场景。该虚拟场景可以是对真实世界的仿真环境,也可以是半仿真半虚构的虚拟环境,还可以是纯虚构的虚拟环境。虚拟场景可以是二维虚拟场景、2.5维虚拟场景或者三维虚拟场景中的任意一种,本技术实施例对虚拟场景的维度不加以限定。例如,虚拟场景可以包括天空、陆地、海洋等,该陆地可以包括沙漠、城市等环境元素,用户可以控制虚拟角色在该虚拟场景中进行移动。
59.4)虚拟角色,虚拟场景中可以进行交互的各种人和物的形象,或在虚拟场景中的可活动对象。该可活动对象可以是虚拟人物、虚拟动物、动漫人物等,例如在虚拟场景中显示的人物、动物等。该虚拟角色可以是虚拟场景中的一个虚拟的用于代表用户的虚拟形象。虚拟场景中可以包括多个虚拟角色,每个虚拟角色在虚拟场景中具有自身的形状和体积,占据虚拟场景中的一部分空间。
60.例如,虚拟角色可以是通过3d游戏引擎或数字内容创建(dcc,digital content create)软件,借助3d图形建模渲染技术绘制的,其中,虚拟角色数据可以包括角色模型数据和角色骨骼数据。
61.5)场景数据,表示虚拟场景的特征数据,例如可以是虚拟场景中建造区域的面积、虚拟场景当前所处的建筑风格等;也可以包括虚拟建筑在虚拟场景中所处的位置、以及虚拟建筑的占地面积等。
62.以虚拟场景为游戏场景为例,在各类射击游戏中,相关技术在呈现射击表现时通常是采用一个简单的射击动画来模拟射击时的射击表现,即在每次用户控制虚拟角色执行射击操作时,均重复播放该动画作为连续射击时的射击表现。也就是说,相关技术呈现的射击表现比较单一,与真实世界中实际枪械在射击时的射击表现不一致,造成不真实的射击表现,导致用户的视觉体验较差。
63.针对上述技术问题,本技术实施例提供一种虚拟角色的射击控制方法、装置、电子设备和计算机可读存储介质,能够模拟真实的射击表现,以提高用户在控制虚拟角色进行射击时的视觉体验。为便于更容易理解本技术实施例提供的虚拟角色的射击控制方法,首先说明本技术实施例提供的虚拟角色的射击控制方法的示例性实施场景,本技术实施例提供的虚拟角色的射击控制处理方法中的虚拟场景可以完全基于终端设备输出,或者基于终端设备和服务器协同输出。
64.在另一些实施例中,虚拟场景还可以是供游戏角色交互的环境,例如可以是供游戏角色在虚拟场景中进行对战,通过控制游戏角色的行动可以在虚拟场景中进行双方互动,从而使用户能够在游戏的过程中舒缓生活压力。
65.在一个实施场景中,参见图1,图1是本技术实施例提供的虚拟角色的射击控制方法的应用模式示意图,适用于一些完全依赖于终端设备400的图形处理硬件计算能力即可完成虚拟场景100的相关数据计算的应用模式,例如单机版/离线模式的游戏,通过智能手机、平板电脑和虚拟现实/增强现实设备等各种不同类型的终端设备400完成虚拟场景的输出。
66.作为示例,图形处理硬件的类型包括中央处理器(cpu,central processing unit)和图形处理器(gpu,graphics processing unit)。
67.当形成虚拟场景100的视觉感知时,终端设备400通过图形计算硬件计算显示所需
要的数据,并完成显示数据的加载、解析和渲染,在图形输出硬件输出能够对虚拟场景形成视觉感知的视频帧,例如,在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;此外,为了丰富感知效果,终端设备400还可以借助不同的硬件来形成听觉感知、触觉感知、运动感知和味觉感知的一种或多种。
68.作为示例,终端设备400上运行有客户端410(例如单机版的游戏应用),在客户端410的运行过程中输出包括有角色扮演的虚拟场景,虚拟场景可以是供游戏角色交互的环境,例如可以是用于供游戏角色进行对战的平原、街道、山谷等等;以第一人称视角显示虚拟场景100为例,在虚拟场景100中显示有虚拟角色101以及虚拟角色101通过握持部位(例如手部)握持的虚拟射击道具102(例如虚拟冲锋枪、虚拟狙击枪、虚拟散弹枪等),其中,虚拟角色101可以是受用户控制的游戏角色,即虚拟角色101受控于真实用户,将响应于真实用户针对控制器(例如触控屏、声控开关、键盘、鼠标和摇杆等)的操作而在虚拟场景100中运动,例如当真实用户向右移动摇杆时,虚拟角色101将在虚拟场景100中向右部移动,还可以保持原地静止、跳跃以及控制虚拟角色101进行射击操作等。
69.举例来说,当客户端410接收到用户触发的基于虚拟射击道具102的射击操作时,获取与虚拟射击道具102当前的射击阶段对应的抖动配置信息,并根据所获取的抖动配置信息获取与当前的射击阶段对应的抖动数据,以及在当前的射击阶段中,基于与当前的射击阶段对应的抖动数据,控制虚拟角色101的握持部位带动虚拟射击道具102进行对应的抖动,也就是说,在射击过程中,针对不同的射击阶段,分别获取每个射击阶段对应的抖动数据,并在每个射击阶段中,基于该射击阶段对应的抖动数据控制虚拟角色101的握持部位带动虚拟射击道具102进行对应的抖动,如此,由于不同的射击阶段对应的射击表现是各不相同的,而不是采用相关技术中重复播放同一动画资源的方式,从而能够显著提高虚拟角色在射击时的视觉表现,给用户一种真实的射击体验。
70.在另一个实施场景中,参见图2,图2是本技术实施例提供的虚拟角色的射击控制方法的应用模式示意图,应用于终端设备400和服务器200,适用于依赖于服务器200的计算能力完成虚拟场景计算、并在终端设备400输出虚拟场景的应用模式。
71.以形成虚拟场景100的视觉感知为例,服务器200进行虚拟场景相关显示数据(例如场景数据)的计算并通过网络300发送到终端设备400,终端设备400依赖于图形计算硬件完成计算显示数据的加载、解析和渲染,依赖于图形输出硬件输出虚拟场景以形成视觉感知,例如可以在智能手机的显示屏幕呈现二维的视频帧,或者,在增强现实/虚拟现实眼镜的镜片上投射实现三维显示效果的视频帧;对于虚拟场景的形式的感知而言,可以理解,可以借助于终端设备400的相应硬件输出,例如使用麦克风形成听觉感知,使用振动器形成触觉感知等等。
72.作为示例,终端设备400上运行有客户端410(例如网络版的游戏应用),通过连接服务器200(例如游戏服务器)与其他用户进行游戏互动,终端设备400输出客户端410的虚拟场景100,以第一人称视角显示虚拟场景100为例,在虚拟场景100中显示有虚拟角色101以及虚拟角色101通过握持部位(例如手部)握持的虚拟射击道具102(例如虚拟冲锋枪、虚拟狙击枪、虚拟散弹枪等),其中,虚拟角色101可以是受用户控制的游戏角色,即虚拟角色101受控于真实用户,将响应于真实用户针对控制器(例如触控屏、声控开关、键盘、鼠标和
摇杆等)的操作而在虚拟场景100中运动,例如当真实用户向右移动摇杆时,虚拟角色101将在虚拟场景100中向右部移动,还可以保持原地静止、跳跃以及控制虚拟角色101进行射击操作等。
73.举例来说,当客户端410接收到用户触发的基于虚拟射击道具102的射击操作时,获取虚拟射击道具102当前的射击阶段对应的抖动配置信息(例如从服务器200中获取与当前的射击阶段对应的抖动配置信息),并根据所获取的抖动配置信息获取与当前的射击阶段对应的抖动数据,以及在当前的射击阶段中,基于与当前的射击阶段对应的抖动数据,控制虚拟角色101的握持部位带动虚拟射击道具102进行对应的抖动,也就是说,在射击过程中,针对不同的射击阶段,分别获取每个射击阶段对应的抖动数据,并在每个射击阶段中,基于该射击阶段对应的抖动数据控制虚拟角色101的握持部位带动虚拟射击道具102进行对应的抖动,如此,由于不同的射击阶段对应的射击表现是各不相同的,而不是采用相关技术中重复播放同一动画资源的方式,从而能够显著提高虚拟角色在射击时的视觉表现,给用户一种真实的射击体验。
74.在一些实施例中,终端设备400可以通过运行计算机程序来实现本技术实施例提供的虚拟角色的射击控制方法,例如,计算机程序可以是操作系统中的原生程序或软件模块;可以是本地(native)应用程序(app,application),即需要在操作系统中安装才能运行的程序,例如游戏app(即上述的客户端410);也可以是小程序,即只需要下载到浏览器环境中就可以运行的程序;还可以是能够嵌入至任意app中的游戏小程序。总而言之,上述计算机程序可以是任意形式的应用程序、模块或插件。
75.以计算机程序为应用程序为例,在实际实施时,终端设备400安装和运行有支持虚拟场景的应用程序。该应用程序可以是第一人称射击游戏(fps,first-person shooting game)、第三人称射击游戏、虚拟现实应用程序、三维地图程序或者多人枪战类生存游戏中的任意一种。用户使用终端设备400操作位于虚拟场景中的虚拟对象进行活动,该活动包括但不限于:调整身体姿态、爬行、步行、奔跑、骑行、跳跃、驾驶、拾取、射击、攻击、投掷、建造虚拟建筑中的至少一种。示意性的,该虚拟对象可以是虚拟人物,比如仿真人物角色或动漫人物角色等。
76.在另一些实施例中,本技术实施例还可以借助于云技术(cloud technology)实现,云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
77.云技术是基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、以及应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源。
78.示例的,图2中的服务器200可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。终端设备400可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端设备400以及服务器200可以通过有线或无线通信方式进行直接或间接地连接,本技术实施例中不做限制。
79.在另一些实施例中,本技术实施例提供的虚拟角色的射击控制方法还可以结合区
块链技术实现。
80.区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
81.示例的,针对虚拟射击道具102预先配置的不同射击阶段分别对应的抖动配置信息可以是存储在区块链网络中的,当终端设备400具有发起获取抖动配置信息的权限,且接收到基于虚拟射击道具102的射击触发操作时,可以由终端设备400生成用于查询与虚拟射击道具102当前的射击阶段对应的抖动配置信息的交易并提交到区块链网络中,其中,查询请求中携带键名(即当前的射击阶段),以供区块链网络中的共识节点执行交易从状态数据库中查询与键名对应的数据(即与当前的射击阶段对应的抖动配置信息),接着,区块链网络将查询到的与当前的射击阶段对应的抖动配置信息发送至终端设备400,以使终端设备400根据抖动配置信息获取与当前的射击阶段对应的抖动数据,以及在当前的射击阶段中,基于与当前的射击阶段对应的抖动数据,控制虚拟角色101的握持部位带动虚拟射击道具102进行对应的抖动。如此,通过将不同的射击阶段分别对应的抖动配置信息存储在区块链网络中,基于区块链网络去中心化、分布式存储和不可篡改的特性,确保了抖动配置信息的安全性和可靠性。
82.下面对图1中示出的终端设备400的结构进行说明。参见图3,图3是本技术实施例提供的终端设备400的结构示意图,图3所示的终端设备400包括:至少一个处理器420、存储器460、至少一个网络接口430和用户接口440。终端设备400中的各个组件通过总线系统450耦合在一起。可理解,总线系统440用于实现这些组件之间的连接通信。总线系统450除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统450。
83.处理器420可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digital signal processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
84.用户接口440包括使得能够呈现媒体内容的一个或多个输出装置441,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口440还包括一个或多个输入装置442,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
85.存储器460可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器460可选地包括在物理位置上远离处理器420的一个或多个存储设备。
86.存储器460包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(rom,read only memory),易失性存储器可以是随机存取存储器(ram,random access memory)。本技术实施例描述的存储器460旨在包括任意适合类型的存储器。
87.在一些实施例中,存储器460能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
88.操作系统461,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
89.网络通信模块462,用于经由一个或多个(有线或无线)网络接口430到达其他计算设备,示例性的网络接口430包括:蓝牙、无线相容性认证(wifi)、和通用串行总线(usb,universal serial bus)等;
90.呈现模块463,用于经由一个或多个与用户接口440相关联的输出装置441(例如,显示屏、扬声器等)使得能够呈现信息(例如,用于操作外围设备和显示内容和信息的用户接口);
91.输入处理模块464,用于对一个或多个来自一个或多个输入装置442之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
92.在一些实施例中,本技术实施例提供的虚拟角色的射击控制装置可以采用软件方式实现,图3示出了存储在存储器460中的虚拟角色的射击控制装置465,其可以是程序和插件等形式的软件,包括以下软件模块:显示模块4651、获取模块4652、控制模块4653和确定模块4654,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。需要指出的是,在图3中为了方便表达,一次性示出了上述所有模块,但是不应视为在虚拟角色的射击控制装置465排除了可以只包括显示模块4651、获取模块4652和控制模块4653的实施,将在下文中说明各个模块的功能。
93.在另一些实施例中,本技术实施例提供的虚拟角色的射击控制装置可以采用硬件方式实现,作为示例,本技术实施例提供的虚拟角色的射击控制装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本技术实施例提供的虚拟角色的射击控制方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(asic,application specific integrated circuit)、dsp、可编程逻辑器件(pld,programmable logic device)、复杂可编程逻辑器件(cpld,complex programmable logic device)、现场可编程门阵列(fpga,field-programmable gate array)或其他电子元件。
94.下面将结合附图对本技术实施例提供的虚拟角色的射击控制方法进行具体说明。本技术实施例提供的虚拟角色的射击控制方法可以由图1中的终端设备400单独执行,也可以由图2中的终端设备400和服务器200协同执行。
95.下面,以由图1中的终端设备400单独执行本技术实施例提供的虚拟角色的射击控制方法为例进行说明。参见图4,图4是本技术实施例提供的虚拟角色的射击控制方法的流程示意图,将结合图4示出的步骤进行说明。
96.需要说明的是,图4示出的方法可以由终端设备400上运行的各种形式的计算机程序执行,并不局限于上述的客户端410,还可以是上文所述的操作系统461、软件模块和脚本,因此客户端不应视为对本技术实施例的限定。
97.在步骤s101中,在虚拟场景中显示虚拟角色以及虚拟角色通过握持部位握持的虚拟射击道具。
98.在一些实施例中,在终端设备上安装有支持虚拟场景的客户端(例如当虚拟场景为游戏时,对应的客户端可以是射击类游戏app),当用户打开终端设备上安装的客户端(例
如用户点击在终端设备的用户界面呈现的射击类游戏app对应的图标),且终端设备运行该客户端时,可以在客户端的人机交互界面呈现的虚拟场景中显示虚拟角色(例如受控于用户的虚拟角色a)以及虚拟角色通过握持部位(例如手部)握持的虚拟射击道具(例如虚拟重机枪、虚拟散弹枪、虚拟狙击枪等)。
99.在另一些实施例中,还可以通过以下方式实现上述的在虚拟场景中显示虚拟角色以及虚拟角色通过握持部位握持的虚拟射击道具:响应于虚拟射击道具选择操作,在虚拟场景中显示虚拟角色以及虚拟角色通过握持部位握持的被选中的目标虚拟射击道具。
100.示例的,以虚拟场景为游戏为例,在游戏中提供了多种虚拟武器供用户进行选择,例如包括虚拟重机枪、虚拟散弹枪和虚拟狙击枪等,并且针对每个虚拟武器,在游戏画面中均显示有对应的图标。当用户点击游戏画面中显示的虚拟重机枪对应的图标时,则显示受控于用户的虚拟角色通过手部握持虚拟重机枪的游戏画面。
101.在一些实施例中,在客户端的人机交互界面中可以是以第一人称视角显示虚拟场景(例如以用户自己的视角来扮演游戏中的虚拟角色);也可以是以第三人称视角显示虚拟场景(例如用户追着游戏中的虚拟角色来进行游戏);还可以是以鸟瞰大视角显示虚拟场景;其中,上述的不同视角之间可以进行任意的切换。
102.作为示例,虚拟角色可以是由游戏中的当前用户所控制的对象,当然,虚拟场景中还可以包括其他的虚拟角色,例如可以由其他用户控制或由机器人程序控制的虚拟角色。虚拟角色可以被划分到多个团队中的任意一个团队中,团队之间可以是敌对关系或协作关系,虚拟场景中的团队可以包括上述关系的一种或者全部。
103.以第一人称视角显示虚拟场景为例,在人机交互界面中显示的虚拟场景可以包括:根据虚拟角色在完整虚拟场景中的观看位置和视场角,确定虚拟角色的视场区域,呈现完整虚拟场景中位于视场区域中的部分虚拟场景,即所显示的虚拟场景可以是相对于全景虚拟场景的部分虚拟场景。因为第一人称视角是最能够给用户冲击力的观看视角,如此,能够实现用户在操作过程中身临其境的沉浸式感知。
104.以鸟瞰大视角显示虚拟场景为例,在人机交互界面中显示的虚拟场景可以包括:响应于针对全景虚拟场景的缩放操作,在人机交互界面中呈现对应缩放操作的部分虚拟场景,即所显示的虚拟场景可以是相对于全景虚拟场景的部分虚拟场景。如此,能够提高用户在操作过程中的可操作性,从而能够提高人机交互的效率。
105.在步骤s102中,响应于基于虚拟射击道具的射击触发操作,获取与虚拟射击道具当前的射击阶段对应的抖动配置信息。
106.在一些实施例中,不同的射击阶段可以是用射击次数来进行区分的,则在获取与虚拟射击道具当前的射击阶段对应的抖动配置信息之前,还可以执行以下处理:获取从开始射击时刻(即接收到射击触发操作的时刻)到当前时刻对应的已射击次数,确定已射击次数对应的射击阶段,并作为虚拟射击道具当前的射击阶段,其中,每个射击阶段包括固定的射击次数(例如每个射击阶段可以包括1次射击或者多次射击)。
107.示例的,假设接收到射击触发操作的时刻(即开始射击时刻)为00:00,当前时刻为00:01,且虚拟射击道具的射击间隔时间为0.1秒(即虚拟射击道具每隔0.1秒射击一次),则可以确定从开始射击时刻到当前时刻对应的已射击次数为10次,同时假设每个射击阶段包括的射击次数为2次,则可以确定虚拟射击道具当前的射击阶段为射击过程中的第5射击阶
段。
108.需要说明的是,在实际应用中,每个射击阶段包括的射击次数的取值可以是根据实际情况灵活调整的,例如当终端设备的性能较好时,则每个射击阶段包括的射击次数的取值可以对应小些(例如可以将1次射击作为一个射击阶段,即每次射击的射击表现均可以是各不相同的),以更加细腻地呈现射击效果;而当终端设备的性能较差时,则每个射击阶段包括的射击次数的取值可以对应大些(例如可以将连续的5次射击作为一个射击阶段,即这5次射击的射击表现是相同的),以避免因过分注重射击表现而导致游戏运行不畅(例如造成游戏画面卡顿等)。
109.在另一些实施例中,不同的射击阶段也可以是用固定的时间段来进行区分的,则在获取与虚拟射击道具当前的射击阶段对应的抖动配置信息之前,还可以执行以下处理:确定当前时刻与开始射击时刻之间的时间差,确定时间差对应的射击阶段,并作为虚拟射击道具当前的射击阶段,其中,每个射击阶段包括固定的时长(例如每个射击阶段包括的固定时长可以为0.1秒或者0.5秒等)。
110.示例的,假设开始射击时刻为00:00,当前时刻为00:01,则可以确定当前时刻与开始射击时刻之间的时间差为1秒,同时假设每个射击阶段包括的固定时长为0.1秒,则可以确定虚拟射击道具当前的射击阶段为射击过程中的第10射击阶段。
111.需要说明的是,在实际应用中,每个射击阶段包括的固定时长的取值可以是根据实际情况灵活调整的,例如当用户的终端设备性能较好、且用户对于射击动作表现的要求较高时,则每个射击阶段包括的固定时长的取值可以对应小些;而当用户的终端设备性能较差或者用户对于射击动作表现的要求较低时,则每个射击阶段包括的固定时长的取值可以对应大些。也就是说,固定时长的取值可以是根据用户在游戏中的设置而对应确定的。
112.在一些实施例中,游戏用户或游戏开发人员可以预先在配置界面中针对虚拟射击道具在射击过程中所处的不同射击阶段,分别配置每个射击阶段对应的抖动配置信息,如此,在确定出虚拟射击道具当前的射击阶段后,可以从多个抖动配置信息中获取与当前的射击阶段对应的抖动配置信息。
113.在步骤s103中,根据抖动配置信息获取与当前的射击阶段对应的抖动数据。
114.在一些实施例中,抖动配置信息可以包括被配置的动画后坐方式,其中,动画后坐方式包括以下至少之一:覆盖式、叠加式、曲线方式,则可以通过以下方式实现上述的根据抖动配置信息获取与当前的射击阶段对应的抖动数据:根据动画后坐方式获取与当前的射击阶段对应的抖动数据。
115.示例的,当动画后坐方式包括覆盖式(也可以称为打断式,即不会累加每一个射击阶段对应的后坐力的变化值,但是会用每一个射击阶段对应的虚拟射击道具的后坐力的变化值来获取当前的射击阶段对应的抖动数据)时,则可以通过以下方式实现上述的根据动画后坐方式获取与当前的射击阶段对应的抖动数据:获取虚拟射击道具在当前的射击阶段对应的后坐力的变化值;根据变化值确定与当前的射击阶段对应的抖动数据,其中,抖动数据包括虚拟角色的握持部位相对于不同参考方向的位移和旋转。
116.举例来说,以确定在当前的射击阶段中,虚拟角色的握持部位(例如手部)相对于x轴的位移为例,首先获取虚拟射击道具(例如虚拟轻机枪)在当前的射击阶段对应的后坐力的变化值,接着对所获取的变化值进行分解,得到x轴对应的变化值分量(当变化值分量为
正值时,对应于x轴的正方向,即向右的方向;当变化值分量为负值时,对应于x轴的负方向,即向左的方向),随后根据x轴对应的变化值分量确定虚拟角色的手部位置相对于x轴的位移(例如可以将x轴对应的变化值分量的1%作为虚拟角色的手部位置相对于x轴的位移)。
117.需要说明的是,在实际应用中,可以根据具体情况对x轴对应的变化值分量的百分比的取值进行调整,其中,百分比的取值可以是与虚拟射击道具的后坐力或杀伤力正相关的,例如当虚拟射击道具为虚拟重机枪(后坐力较大)时,对应的抖动较大,因此百分比的取值也可以大些(例如可以将x轴对应的变化值分量的3%作为手部相对于x轴的位移);而当虚拟射击道具为虚拟轻机枪(后坐力较小)时,对应的抖动较小,因此取值也可以小些(例如可以将x轴对应的变化值分量的1%作为手部相对于x轴的位移)。
118.示例的,当动画后坐方式包括叠加式(也可以称为累加方式,即会累加每一个射击阶段的虚拟射击道具的后坐力的变化值,即相当于根据从开始射击阶段到当前的射击阶段分别对应的后坐力的变化值的累加结果确定当前的射击阶段对应的抖动数据)时,则可以通过以下方式实现上述的根据动画后坐方式获取与当前的射击阶段对应的抖动数据:获取虚拟射击道具从开始射击阶段到当前的射击阶段分别对应的后坐力的变化值;对多个变化值进行累加处理,并根据累加结果确定与当前的射击阶段对应的抖动数据,其中,抖动数据包括虚拟角色的握持部位相对于不同参考方向的位移和旋转。
119.举例来说,以确定在当前的射击阶段中,虚拟角色的手部绕x轴的旋转为例,首先获取虚拟射击道具(例如虚拟轻机枪)从开始射击阶段到当前的射击阶段分别对应的后坐力的变化值,接着对多个变化值进行累加处理,并对累加结果进行分解处理,得到x轴对应的累加结果分量,随后可以基于x轴对应的累加结果分量确定虚拟角色的手部绕x轴的旋转(例如假设基于x轴对应的累加结果分量确定出虚拟角色的手部绕x轴的旋转为0.5
°
)。也就是说,针对叠加式的动画后坐方式,获取的虚拟角色的手部绕x轴的旋转的数值是从开始射击阶段到当前的射击阶段的旋转变化的总和。
120.示例的,当动画后坐方式包括曲线方式(包括游戏用户或者开发人员自定义的曲线资源和系统提供的固定类型(例如三角函数类型或者衰减函数类型)的程序曲线,以根据曲线资源或者程序曲线确定当前的射击阶段对应的抖动数据)时,则可以通过以下方式实现上述的根据动画后坐方式获取与当前的射击阶段对应的抖动数据:根据不同的射击阶段与偏移范围之间的对应关系确定曲线资源(即游戏用户或开发人员自定义的曲线),并根据曲线资源确定与当前的射击阶段对应的抖动数据;或者,根据程序曲线确定与当前的射击阶段对应的抖动数据(即系统提供的固定类型的曲线),其中,程序曲线包括以下至少之一:根据周期、振幅和初始值确定的三角函数类型的程序曲线;根据衰减的底数、衰减的频率、淡入时间和淡出时间确定的衰减函数类型的程序曲线。
121.举例来说,在抖动配置信息的配置界面中提供有多种不同类型的动画后坐方式供游戏用户或开发人员进行选择,当游戏用户或开发人员从多个不同类型的动画后坐方式中选中曲线方式时,可以进一步配置一个曲线资源(例如曲线的横轴可以是依次递增的射击阶段,曲线的纵轴可以是每个射击阶段分别对应的偏移范围)或者填写曲线类型(例如正弦或者柏林噪声)、周期、振幅、随机初始值、衰减的底数、衰减的频率、淡入时间、淡出时间等,从而得到后续用于确定与当前的射击阶段对应的抖动数据的曲线资源或者程序曲线。
122.示例的,承接上文,可以通过以下方式实现上述的根据曲线资源确定与当前的射
击阶段对应的抖动数据:根据当前的射击阶段,确定曲线资源中与当前的射击阶段对应的偏移范围;根据偏移范围确定对应的偏移值,并确定当前时刻与当前的射击阶段对应的射击时刻之间的时间差;基于时间差,确定与虚拟射击道具的射击间隔时间对应的插值曲线中与该时间差对应的取值;将偏移值与取值的乘积作为与当前的射击阶段对应的抖动数据。
123.举例来说,以确定在当前的射击阶段中,虚拟角色的手部相对于x轴的位移为例,假设在确定出当前的射击阶段为第3射击阶段后,则可以首先从曲线资源中获取与第3射击阶段对应的偏移范围(假设偏移范围对应的偏移上限为1,偏移下限为0.2),接着根据偏移范围确定对应的偏移值(例如从偏移范围中随机取一个值,假设取出的偏移值为0.5),随后确定当前时刻与第3射击阶段对应的射击时刻之间的时间差(假设两者之间的时间差为0.05秒),并获取与虚拟射击道具的射击间隔时间对应的插值曲线(例如假设虚拟射击道具的射击间隔时间为0.1秒,插值曲线的区间为0-1,则0秒对应于插值曲线的横坐标为0处对应的纵坐标的取值,0.1秒对应于插值曲线的横坐标为1处对应的纵坐标的取值),如此,可以基于时间差,确定插值曲线中与该时间差对应的取值(即获取插值曲线中横坐标为0.5处对应的纵坐标的取值,例如假设为0.5),最后可以将偏移值与取值的乘积(即0.5*0.5=0.25)作为虚拟角色的手部相对于x轴的位移。
124.示例的,承接上文,可以通过以下方式实现上述的根据程序曲线确定与当前的射击阶段对应的抖动数据:针对虚拟角色的握持部位(例如手部)对应的每个参考方向,执行以下处理:获取与位移对应的第一程序曲线,将第一程序曲线中与当前时刻对应的第一函数值作为参考方向的位移;获取与旋转对应的第二程序曲线,将第二程序曲线中与当前时刻对应的第二函数值作为参考方向的旋转。
125.举例来说,以参考方向为x轴为例,可以通过以下方式获取虚拟角色的手部相对于x轴的位移:获取与位移对应的第一程序曲线(例如三角函数类型的程序曲线,程序曲线的横坐标表示时间,纵坐标表示位移),将第一程序曲线中与当前时刻对应的第一函数值作为x轴的位移的取值;类似的,可以通过以下方式获取虚拟角色的手部绕x轴的旋转:获取与旋转对应的第二程序曲线(例如衰减函数类型的程序曲线,程序曲线的横坐标表示时间,纵坐标表示旋转),将第二程序曲线中与当前时刻对应的第二函数值作为绕x轴的旋转的取值。
126.需要说明的是,在实际应用中,第一程序曲线和第二程序曲线也可以是相同类型的程序曲线,例如第一程序曲线和第二程序曲线都是三角函数类型的程序曲线,或者都是衰减函数类型的程序曲线,当第一程序曲线和第二程序曲线都是三角函数类型的程序曲线时,两者的周期、振幅、初始值等参数可以是不相同的。
127.此外,还需要说明的是,在实际应用中,当当前的射击阶段对应的抖动配置信息中同时配置有曲线资源和程序曲线时,则在确定与当前的射击阶段对应的抖动数据之后,还可以执行以下处理:针对虚拟角色的握持部位对应的每个参考方向执行以下处理:将基于曲线资源确定的抖动数据包括的在不同参考方向的位移,对应与基于程序曲线确定的抖动数据包括的在不同参考方向的位移相加,得到位移加和(即将两个位移进行相加得到的结果,例如以参考方向为x轴为例,假设基于曲线资源确定出虚拟角色的手部相对于x轴的位移为a,基于程序曲线确定出虚拟角色的手部相对于x轴的位移为b,则将两个位移进行相加得到的位移加和c=a b);将基于曲线资源确定的抖动数据包括的在不同参考方向的旋转,
对应与基于程序曲线确定的抖动数据包括的在不同参考方向的旋转相加,得到旋转加和(即将两个旋转进行相加得到的结果,例如以参考方向为x轴为例,假设基于曲线资源确定出虚拟角色的手部绕x轴的旋转为d,基于程序曲线确定出虚拟角色的手部绕x轴的旋转为e,则将两个旋转进行相加得到的旋转加和f=d e);基于位移加和和旋转加和更新当前的射击阶段对应的抖动数据,如此,通过将不同方式获取的抖动数据进行整合,并将整合后的抖动数据叠加在虚拟角色的握持部位所在的位置上,从而能够在呈现用户控制虚拟角色进行射击的过程中的抖动效果能够更加平滑自然,以进一步提升用户的射击体验。
128.示例的,以确定在当前的射击阶段中,虚拟角色的握持部位相对于x轴的位移为例,当抖动配置信息中同时配置有曲线资源和程序曲线时,假设基于曲线资源确定的虚拟角色的握持部位相对于x轴的位移为a,基于程序曲线确定的虚拟角色的握持部位相对于x轴的位移为b,则可以将这两个位移的求和结果c作为虚拟角色的握持部位相对于x轴最终的位移,并叠加在握持部位在x轴的位置分量上。
129.在一些实施例中,图4示出的步骤s103可以通过图5示出的步骤s1031a至步骤s1032a实现,将结合图5示出的步骤进行说明。
130.在步骤s1031a中,获取虚拟射击道具的类型。
131.在一些实施例中,由于现实世界中不同的实际枪械在进行射击时对应的抖动情况是不同的,因此,为了使虚拟射击道具的射击表现更加符合现实生活中实际枪械的射击表现,还可以根据虚拟射击道具的类型对与当前的射击阶段对应的抖动数据进行更新,其中,虚拟射击道具的类型可以包括虚拟重机枪、虚拟轻机枪、虚拟散弹枪、虚拟狙击枪等。
132.在步骤s1032a中,确定与该类型的虚拟射击道具对应的第一调整系数,将第一调整系数与当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据。
133.在一些实施例中,抖动配置信息还可以包括不同类型的虚拟射击道具与调整系数之间的对应关系,则在获取到虚拟射击道具的类型后,可以根据虚拟射击道具的类型与调整系数之间的对应关系,确定出所获取的虚拟射击道具的类型对应的第一调整系数,并将第一调整系数与当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据,其中,第一调整系数可以与该类型的虚拟射击道具的后坐力或者杀伤力正相关。
134.示例的,假设获取到的虚拟射击道具的类型为虚拟重机枪,则可以从抖动配置信息包括的不同类型的虚拟射击道具与调整系数之间的对应关系中,获取与虚拟重机枪对应的调整系数(假设获取到的调整系数为a),并将调整系数a与当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据(例如假设当前的射击阶段对应的抖动数据包括的握持部位相对于x轴的位移为b,则更新后的握持部位相对于x轴的位移为a*b),如此,通过与虚拟射击道具的类型对应的调整系数对抖动数据进行更新,使得后续不同类型的虚拟射击道具呈现的射击表现各不相同,从而能够模拟现实生活中不同的实际枪械在进行射击时的射击表现,进一步提高了用户在控制虚拟角色进行射击时的视觉体验。
135.在另一些实施例中,图4示出的步骤s103还可以通过图6示出的步骤s1031b至步骤s1032b实现,将结合图6示出的步骤进行说明。
136.在步骤s1031b中,获取虚拟角色在当前的射击阶段对应的射击模式。
137.在一些实施例中,由于现实生活中真人在采用不同的射击模式(例如腰射、开镜等)进行射击时对应的抖动情况也是不同的,因此,为了使虚拟射击道具的射击表现更加符
合现实生活中真人采用不同射击模式时对应的射击表现,还可以根据虚拟角色在当前的射击阶段对应的射击模式确定调整系数,并根据所确定的调整系数对与当前的射击阶段对应的抖动数据进行更新。
138.在步骤s1032b中,确定与该射击模式对应的第二调整系数,将第二调整系数与当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据。
139.在一些实施例中,抖动配置信息还可以包括不同的射击模式与调整系数之间的对应关系,则在获取到虚拟角色在当前的射击阶段对应的射击模式后,可以从抖动配置信息包括的不同的射击模式与调整系数之间的对应关系中,获取与虚拟角色当前的射击模式对应的第二调整系数,并将第二调整系数与当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据,其中,第二调整系数可以是与射击模式的精度负相关的。
140.示例的,假设获取到虚拟角色在当前的射击阶段对应的射击模式为腰射(即在不开镜的情况下进行射击,对应的精度较低),则可以从抖动配置信息包括的不同射击模式与调整系数之间的对应关系中,获取与腰射对应的调整系数(假设获取到的调整系数为c),并将调整系数c与当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据(例如假设当前的射击阶段对应的抖动数据包括的握持部位相对于x轴的位移为d,则更新后的握持部位相对于x轴的位移为c*d),如此,通过与虚拟角色当前所处的射击模式对应的调整系数对抖动数据进行调整,使得后续在呈现射击表现时,不同的射击模式对应的射击表现可以是各不相同的,从而能够模拟现实生活中真人在采用不同的射击模式进行射击时的射击表现,进一步提高了用户在控制虚拟角色进行射击时的视觉体验。
141.需要说明的是,在实际应用中,还可以同时结合与虚拟射击道具的类型对应的第一调整系数以及与虚拟角色当前所处的射击模式对应的第二调整系数对抖动数据进行调整,如此,通过综合考虑虚拟射击道具的类型以及角色当前所处的射击模式,使得后续呈现的射击表现能够更加符合现实生活中实际枪械在射击时的射击表现,以提升用户的视觉体验。
142.在步骤s104中,在当前的射击阶段中,基于与当前的射击阶段对应的抖动数据,控制握持部位带动虚拟射击道具进行对应的抖动。
143.在一些实施例中,可以通过以下方式实现上述的基于与当前的射击阶段对应的抖动数据,控制握持部位带动虚拟射击道具进行对应的抖动:在当前的射击阶段中更新显示虚拟场景的每一帧图像时,执行以下处理:将每一帧图像的抖动数据包括的不同参考方向的位移和旋转,分别叠加在虚拟角色的握持部位对应参考方向的位置分量上,其中,不同参考方向的位移和旋转用于使虚拟角色的握持部位带动虚拟射击道具进行对应的抖动。
144.示例的,以虚拟场景为游戏为例,在当前的射击阶段中更新显示游戏的每一帧图像时,可以执行以下处理:首先对虚拟角色的手部所在的位置进行分解,得到不同参考方向分别对应的位置分量(例如可以将手部所在的位置分解成x、y、z三个方向的位置分量),接着将每一帧图像的抖动数据包括的不同参考方向的位移和旋转分别叠加在虚拟角色的手部对应参考方向的位置分量上,例如将x轴对应的位移和旋转叠加在x轴对应的位置分量上,将y轴对应的位移和旋转叠加在y轴对应的位置分量上,将z轴对应的位移和旋转叠加在z轴对应的位置分量上,如此,通过在虚拟角色的手部对应参考方向的位置分量上叠加对应的位置和旋转,从而实现虚拟角色手部骨骼的抖动,进而带动所握持的虚拟射击道具进行
抖动,实现模拟现实生活中实际枪械在射击时的射击表现,以提升用户在控制虚拟角色射击时的射击体验。
145.在另一些实施例中,在基于与当前的射击阶段对应的抖动数据,控制握持部位带动虚拟射击道具进行对应的抖动后,还可以获取虚拟射击道具在当前的射击阶段中的实时抖动方向,确定与实时抖动方向同步偏移的落弹点,并控制虚拟射击道具发射的虚拟子弹击中所确定出的落弹点,从而实现虚拟射击道具射击的落弹点与虚拟射击道具的实时抖动方向一致的效果。
146.示例的,以虚拟场景为游戏为例,在基于与当前的射击阶段对应的抖动数据,控制虚拟角色的手部带动虚拟武器进行对应的抖动后,还可以获取虚拟武在当前的射击阶段对应的实时抖动方向(例如虚拟武器向右抖动),接着,可以根据虚拟武器的抖动方向确定同步偏移的落弹点(当虚拟武器向右抖动时,虚拟子弹的落弹点也会同步向右偏移),以控制虚拟武器发射的虚拟子弹击中所确定的落弹点。
147.举例来说,假设虚拟射击道具在没有发生抖动的情况下,发射出的虚拟子弹的落弹点为a,当虚拟角色的手部带动虚拟射击道具向右抖动时,此时发射出的虚拟子弹则会落在位于a右侧一定距离的b,其中,a、b之间的距离与虚拟射击道具的抖动程度正相关,即虚拟射击道具的抖动程度越大,则抖动情况下对应的落弹点b的位置偏离未发生抖动时对应的落弹点a的位置越远,如此,通过控制虚拟射击道具射击的落弹点与抖动方向保持一致,能够进一步提升射击时的逼真度和操作性,给用户带来更加真实的手感。
148.本技术实施例提供的虚拟角色的射击控制方法,针对不同的射击阶段,分别获取每个射击阶段对应的抖动数据,并在每个射击阶段中,基于该射击阶段对应的抖动数据控制虚拟角色的握持部位带动虚拟射击道具进行对应的抖动,如此,在射击过程中,不同的射击阶段对应的射击表现是各不相同的,而不是采用相关技术中重复播放同一个动画资源的方式,从而能够显著提高虚拟角色在射击时的视觉表现,给用户一种真实的射击体验。
149.下面,将说明本技术实施例在一个实际的应用场景中的示例性应用。
150.在射击类游戏中,相关技术在做第一人称的角色射击的动作表现时,通常是让美术人员出一个射击(又称开火)的动画资源的方式实现。因为只有一个射击的动画资源,因此,在射击过程中射击动作表现单一,和现实生活中实际枪械射击时真人的动作后坐力的抖动不一致,造成不真实的射击表现,同时也会让用户产生视觉疲劳等问题。
151.示例的,参见图7,图7是相关技术提供的第一人称的角色在不同射击阶段分别对应的射击动作表现示意图,其中,图7从上到下依次是第一人称未射击、第一人称第一次射击、第一人称第二次射击时对应的射击动作表现,从图7中可以看出,由于只有一个射击的动画资源,因此第一次射击的动作表现和第二次射击的动作表现是相同的,也就是说,在每次用户控制虚拟角色执行射击操作时,均是重复播放同一个动画资源,这种简单、单调的射击动作表现方式很容易让用户产生视觉疲劳。
152.针对上述技术问题,本技术实施例提供了一种虚拟角色的射击控制方法,能够给游戏用户或开发人员提供一套配置系统,在游戏运行时,可以根据参数配置(例如三角函数、衰减函数、抖动曲线等)实时生成射击时角色的手部动作抖动数据,并将抖动数据加到当前虚拟角色的手部所在的位置上,让手部骨骼产生抖动的效果,进而带动虚拟武器一起抖动,从而达到模拟真实武器射击时的表现。同时,针对不同的武器以及不同的射击模式
(例如腰射和开镜)都可以设置对应的抖动配置。
153.示例的,参见图8,图8是本技术实施例提供的第一人称的角色在不同射击阶段分别对应的射击动作表现示意图,如图8所示,在游戏中显示有虚拟角色801和虚拟角色801通过手部握持的虚拟武器802,其中,图8从上到下依次是第一人称未射击(此时虚拟武器802距离屏幕顶端的距离为a,距离屏幕右端的距离为b)、第一人称第一次射击手部后拉最大时刻(此时虚拟武器802距离屏幕顶端的距离为c,距离屏幕右端的距离为d)、第一人称第二次射击手部后拉最大时刻(此时虚拟武器距离802屏幕顶端的距离为e,距离屏幕右端的距离为f)、第一人称第三次射击手部后拉最大时刻对应的射击动作表现(此时虚拟武器802距离屏幕顶端的距离为g,距离屏幕右端的距离为h),其中,a、c、e、g的取值是不同的、且b、d、f、h的取值也是不同的。
154.示例的,参见图9,图9是本技术实施例提供的第一人称连续射击手部后拉最大时刻的叠加图,如图9所示,在游戏中显示有虚拟角色901和虚拟角色901通过手部握持的虚拟武器902,此外,图9还示出了在不同的射击阶段中虚拟武器902所处的不同位置和旋转(例如在第一次射击时虚拟武器902所在的位置和旋转903和第二次射击时虚拟武器902所在的位置和旋转904),结合图8以及图9可以看出,在每一次射击的同一时刻虚拟角色的手和虚拟武器的位置和偏转都是不同的(残影是降低了图片透明图),也就是说,当角色开始射击时,程序会根据武器的射击配置,生成位移和旋转上的偏移,从而产生抖动的效果,让每次射击的动作表现都不一样。
155.示例的,参见图10,图10是本技术实施例提供的第一人称的角色处于瞄准状态时在不同射击阶段分别对应的射击动作表现示意图,如图10所示,在游戏中显示有虚拟角色1001和虚拟角色1001通过手部握持的虚拟武器1002,其中,图10从上到下依次是第一人称瞄准状态未射击(此时虚拟武器1002距离屏幕底端的距离为i,距离屏幕右端的距离为j)、第一人称瞄准状态第一次射击手部后拉最大时刻(此时虚拟武器1002距离屏幕底端的距离为k,距离屏幕右端的距离为l)、第一人称瞄准状态第二次射击手部后拉最大时刻(此时虚拟武器1002距离屏幕底端的距离为m,距离屏幕右端的距离为n)、第一人称瞄准状态第三次射击手部后拉最大时刻(此时虚拟武器距离1002屏幕底端的距离为o,距离屏幕右端的距离为p)对应的射击动作表现,其中,i、k、m、o的取值是不同的、且j、l、n、p的取值也是不同的。
156.示例的,参见图11,图11是本技术实施例提供的第一人称的角色处于瞄准状态时连续射击手部后拉最大时刻的叠加图,如图11所示,在游戏中显示有虚拟角色1101和虚拟角色1101通过手部握持的虚拟武器1102,此外,图11还示出了在不同的射击阶段中虚拟武器1102所处的不同位置和旋转(例如在第一次射击时虚拟武器1102所在的位置和旋转1103和第二次射击时虚拟武器1102所在的位置和旋转1104),结合图10以及图11可以看出,当虚拟角色处于瞄准状态时,在每一次射击的同一时刻虚拟角色的手和虚拟武器的位置和偏转都是不同的(残影是降低了图片透明图),也就是说,当角色开始射击时,程序会根据武器的射击配置,生成位移和旋转上的偏移,从而产生抖动的效果,让每次射击的动作表现都不一样;并且,结合图9和图11可以看出,不同的射击模式(例如图9示出的未瞄准状态和图11示出的瞄准状态)对应的抖动效果也是不同的。
157.下面对本技术实施例提供的虚拟角色的射击控制方法进行具体说明。
158.示例的,参见图12,图12是本技术实施例提供的虚拟角色的射击控制方法的流程
示意图,如图12所示,本技术实施例提供的虚拟角色的射击控制方法主要包括:接收用户输入的射击指令、更新射击逻辑、根据武器射击配置程序生成手部动画抖动数据、动画更新逻辑获取抖动数据以及抖动数据应用到动画骨骼计算五个步骤,下面分别进行说明。
159.(一)接收用户输入的射击指令
160.在一些实施例中,当用户(或称玩家)按下屏幕上显示的射击按钮时,即相当于用户输入射击指令,虚拟武器(对应于上述的虚拟射击道具)接收到用户输入的开始射击的指令时,会在一个类似定时器的逻辑中,以一定的间隔时间循环射击。
161.(二)更新射击逻辑
162.在一些实施例中,武器模块在更新射击逻辑时,一般也会在一个类似定时器的逻辑中,根据射击间隔时间来累加更新当前的射击次数。例如假设虚拟武器的射击间隔时间为0.1秒,且当前时刻距离接收到用户输入的开始射击的指令的时长为1秒,则当前的射击次数为第10次射击。
163.(三)根据武器射击配置程序生成手部动画抖动数据
164.在一些实施例中,在确定出当前的射击次数后,可以通过当前的射击次数,从图13所示的武器射击配置中获取与当前的这一次射击对应的抖动数据(例如手部抖动数据)。
165.下面对图13示出的武器射击配置包括的各个参数的含义进行说明。
166.动画后坐方式(weap anim recoil type):提供了三种不同类型的动画后坐方式,包括:覆盖式(override),又称打断式,不会累加每一次射击的武器后坐力,但是会用每一帧武器后坐力的变化值,来对动画进行处理;叠加式(additive),又称累加方式,是会累加每一帧武器的后坐力的变化,相当于从开始射击到当前时刻的旋转变化的总和;曲线方式(wave),这里提供了两种不同的曲线方式,一种是配置一个曲线资源,一种是填写曲线类型(包括正弦(sine)或者柏林(perlin))、周期、振幅、随机初始值、衰减的底数、衰减的频率、淡入的时间、淡出的时间等。
167.动画偏移类型(anim offset type):分为旋转(rot)和位移(loc),取决于当前的子配置是对旋转还是位移做处理。
168.坐标轴(axis):即要处理x、y、z中的哪个轴。
169.曲线资源(weapon anim recoil curve):x、y、z的三合一曲线,不使用z曲线,仅使用x、y曲线,其中,x是随机取值的下限,y是随机取值的上限,横轴是射击次数。
170.初始偏移类型(initial offset type):分为不偏移(zero)和随机偏移(random),只对程序曲线生效。
171.持续时间(duration):游戏用户或开发人员可以灵活设置,例如可以将持续时间设置为5秒。
172.程序曲线类型(waveform):包括三角函数(例如sine)或者衰减函数(例如perlin noise)。
173.振幅(wave amplitude):可以填正值或者负值。
174.周期(wave period):对于正弦函数(sine),可以用1秒标示一次完整的sine周期,即1秒对应的是2π,半个周期就是0.5秒,对应的是π,即0点。
175.指数的底数(power base value):用于衰减函数的底数。
176.指数的更新频率(power frequency):用于衰减的快慢。
177.淡入的时间(blend in time):游戏用户或开发人员可以灵活设置,例如可以将淡入的时间设置为0.5秒。
178.淡入过程曲线(blend in progress curve):基于淡入的时间设置的曲线,用于表现淡入的过程。
179.淡出的时间(blend out time):游戏用户或开发人员可以灵活设置,例如可以将淡出的时间设置为0.4秒。
180.淡出过程曲线(blend out progress curve):基于淡出的时间设置的曲线,用于表现淡出的过程。
181.不同视场角时的缩放曲线(curve fov weight):x是视场角(fov,field of view),y是缩放的比例(weight)。
182.插值速度(interp speed):用于叠加式(additive)和覆盖式(override)的类型。
183.插值曲线(curve interp):用于曲线类型变化的插值曲线,可以用来配置插值的快慢、开始和结束,以插值曲线的整个长度,缩放到射击间隔时间,例如假设插值曲线x的区间为0-1,射击间隔时间为0.1秒,则0秒对应于曲线x在0处的值,而0.1秒对应于曲线x在1处的值。
184.示例的,针对一把虚拟武器一般可以配置6个左右的抖动插槽,以分别对虚拟角色的手部骨骼的x、y、z轴三个方向的位移以及绕x、y、z轴的三个旋转做计算,根据抖动插槽中的各项配置参数,例如从曲线资源(横轴是射击次数,纵轴是偏移值)中获取偏移值,并在得到偏移值之后,根据当前时刻到这一次射击时刻之间的时间差,根据插值曲线对偏移值做一个平滑插值。这就是每一个插槽的整个计算过程。在分别计算完所有的插槽之后,就可以得到这一次射击的所有抖动数据(包括x、y、z轴三个方向的位移以及绕x、y、z轴的三个旋转)。
185.此外,还需要说明的是,由于现实世界中不同实际枪械在进行射击时对应的抖动情况是不同的,因此,本技术实施例中武器配置还可以是按照不同的虚拟武器单独配置的,如此,在呈现射击表现时,对于虚拟轻机枪来说,其在进行射击时对应的抖动会小一点;而对于虚拟重机枪来说,其在进行射击时对应的抖动会大一点,从而能够更加符合现实世界中实际枪械在射击时真人的后坐力抖动情况,以进一步提高用户在控制虚拟角色进行射击时的视觉表现。
186.(四)动画更新逻辑获取抖动数据
187.在一些实施例中,动画模块在更新时,也会在类似于一个定时器的逻辑中,做每一帧游戏画面的动画更新。在进行更新时,程序会访问武器模块中产生的抖动数据,并把抖动数据保存到动画模块,用于动画模块更新之后,骨骼位置和旋转的计算。
188.(五)抖动数据应用到动画骨骼计算
189.在一些实施例中,动画模块在更新之后,就会计算虚拟角色的骨骼的位置和旋转数据,当计算到虚拟角色的手部骨骼时,就可以访问动画模块中保存的手部动画抖动数据,并将抖动数据叠加到虚拟角色当前手部骨骼所在的位置上,从而让虚拟角色的手部骨骼产生抖动的效果,进而带动虚拟武器一起进行抖动。
190.在另一些实施例中,为了进一步提升射击时的逼真度和操作性,还可以在虚拟武器发生射击时,控制虚拟武器射击出的虚拟子弹的落弹点与虚拟武器当前的抖动方向保持
一致,例如当到达射击时刻时,控制虚拟武器进行射击,并根据虚拟武器当前的抖动方向,控制射击出的虚拟子弹的落弹点与抖动方向保持一致,例如当虚拟武器的抖动方向为向左偏移时,则虚拟武器的落弹点也相应向左偏移(举例来说,假设当虚拟武器没有发生抖动时,虚拟武器射击出的虚拟子弹的落弹点为a,当虚拟角色的手部带动虚拟武器向左抖动时,此时虚拟武器射击出的虚拟子弹的落弹点将位于a左侧一定距离的b,其中,落弹点a和落弹点b之间的距离是与虚拟武器的抖动程度正相关的,即虚拟武器的抖动程度越大,则落弹点b偏离落弹点a的距离也越大),从而使得虚拟武器的射击过程能够更加符合现实生活中实际枪械的射击表现,以提升用户的射击体验。
191.本技术实施例提供的虚拟角色的射击控制方法,在游戏运行时,会根据参数配置实时生成射击时角色的手部动作抖动数据,并将产生的抖动数据叠加在虚拟角色当前手部骨骼所在的位置上,从而能够达到模拟真实武器射击时的表现,如此,能够很明显的提高角色射击时的视觉表现,给用户一种真实的射击体验,给用户带来更好的手感和体验。
192.下面继续说明本技术实施例提供的虚拟角色的射击控制装置465实施为软件模块的示例性结构,在一些实施例中,如图3所示,存储在存储器460的虚拟角色的射击控制装置465中的软件模块可以包括:显示模块4651、获取模块4652和控制模块4653。
193.显示模块4651,用于在虚拟场景中显示虚拟角色以及虚拟角色通过握持部位握持的虚拟射击道具;获取模块4652,用于响应于基于虚拟射击道具的射击触发操作,获取与虚拟射击道具当前的射击阶段对应的抖动配置信息;获取模块4652,还用于根据抖动配置信息获取与当前的射击阶段对应的抖动数据;控制模块4653,用于在当前的射击阶段中,基于与当前的射击阶段对应的抖动数据,控制握持部位带动虚拟射击道具进行对应的抖动。
194.在一些实施例中,获取模块4652,还用于获取从开始射击时刻到当前时刻对应的已射击次数;虚拟角色的射击控制装置465还包括确定模块4654,用于确定已射击次数对应的射击阶段,并作为虚拟射击道具当前的射击阶段,其中,每个射击阶段包括固定的射击次数;确定模块4654,还用于确定当前时刻与开始射击时刻之间的时间差,以及用于确定时间差对应的射击阶段,并作为虚拟射击道具当前的射击阶段,其中,每个射击阶段包括固定的时长。
195.在一些实施例中,获取模块4652,还用于根据动画后坐方式获取与当前的射击阶段对应的抖动数据。
196.在一些实施例中,获取模块4652,还用于获取虚拟射击道具在当前的射击阶段对应的后坐力的变化值;确定模块4654,还用于根据变化值确定与当前的射击阶段对应的抖动数据,其中,抖动数据包括握持部位相对于不同参考方向的位移和旋转。
197.在一些实施例中,获取模块4652,还用于获取虚拟射击道具从开始射击阶段到当前的射击阶段分别对应的后坐力的变化值;确定模块4654,还用于对多个变化值进行累加处理,并根据累加结果确定与当前的射击阶段对应的抖动数据,其中,抖动数据包括握持部位相对于不同参考方向的位移和旋转。
198.在一些实施例中,确定模块4654,还用于根据不同的射击阶段与偏移范围之间的对应关系确定曲线资源,并根据曲线资源确定与当前的射击阶段对应的抖动数据;或者,用于根据程序曲线确定与当前的射击阶段对应的抖动数据,其中,程序曲线包括以下至少之一:根据周期、振幅和初始值确定的三角函数类型的程序曲线;根据衰减的底数、衰减的频
率、淡入时间和淡出时间确定的衰减函数类型的程序曲线。
199.在一些实施例中,确定模块4654,还用于根据当前的射击阶段,确定曲线资源中与当前的射击阶段对应的偏移范围;根据偏移范围确定对应的偏移值,并确定当前时刻与当前的射击阶段对应的射击时刻之间的时间差;基于时间差,确定与虚拟射击道具的射击间隔时间对应的插值曲线中与时间差对应的取值;将偏移值与取值的乘积作为与当前的射击阶段对应的抖动数据。
200.在一些实施例中,确定模块4654,还用于针对握持部位对应的每个参考方向,执行以下处理:获取与位移对应的第一程序曲线,将第一程序曲线中与当前时刻对应的第一函数值作为参考方向的位移;获取与旋转对应的第二程序曲线,将第二程序曲线中与当前时刻对应的第二函数值作为参考方向的旋转。
201.在一些实施例中,确定模块4654,还用于针对握持部位的每个参考方向执行以下处理:将基于曲线资源确定的抖动数据包括的在不同参考方向的位移,对应与基于程序曲线确定的抖动数据包括的在不同参考方向的位移相加,得到位移加和;将基于曲线资源确定的抖动数据包括的在不同参考方向的旋转,对应与基于程序曲线确定的抖动数据包括的在不同参考方向的旋转相加,得到旋转加和;基于位移加和和旋转加和更新当前的射击阶段对应的抖动数据。
202.在一些实施例中,获取模块4652,还用于获取虚拟射击道具的类型;确定模块4654,还用于确定与类型的虚拟射击道具对应的第一调整系数,将第一调整系数与当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据,其中,第一调整系数与类型的虚拟射击道具的后坐力或杀伤力正相关。
203.在一些实施例中,获取模块4652,还用于获取虚拟角色在当前的射击阶段对应的射击模式;确定模块4654,还用于确定与射击模式对应的第二调整系数,将第二调整系数与当前的射击阶段对应的抖动数据的乘积作为更新的抖动数据,其中,射击模式的精度与第二调整系数负相关。
204.在一些实施例中,控制模块4653,还用于在当前的射击阶段中更新显示虚拟场景的每一帧图像时,执行以下处理:将每一帧图像的抖动数据包括的不同参考方向的位移和旋转,分别叠加在握持部位对应参考方向的位置分量上,其中,不同参考方向的位移和旋转用于使握持部位带动虚拟射击道具进行对应的抖动。
205.在一些实施例中,获取模块4652,还用于获取虚拟射击道具在当前的射击阶段中的实时抖动方向;确定模块4654,还用于确定与实时抖动方向同步偏移的落弹点;控制模块4653,还用于控制虚拟射击道具发射的虚拟子弹击中落弹点。
206.需要说明的是,本技术实施例中关于装置的描述,与上文中虚拟角色的射击控制方法的实现是类似的,并具有相似的有益效果,因此不做赘述。对于本技术实施例提供的虚拟角色的射击控制装置中未尽的技术细节,可以根据图4、至图6、或图12任一附图的说明而理解。
207.本技术实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本技术实施例上述的虚拟角色的射击控制方法。
208.本技术实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本技术实施例提供的方法,例如,如图4至图6、或图12示出的虚拟角色的射击控制方法。
209.在一些实施例中,计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
210.在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
211.作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hyper text markup language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
212.作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
213.综上所述,本技术实施例针对不同的射击阶段,分别获取每个射击阶段对应的抖动数据,并在每个射击阶段中,基于该射击阶段对应的抖动数据控制虚拟角色的握持部位带动虚拟射击道具进行对应的抖动,如此,每个射击阶段的射击表现可以各不相同,而不是简单单一的动画,从而能够显著提高虚拟角色射击时的视觉表现,给用户一种真实的射击体验。
214.以上所述,仅为本技术的实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本技术的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献