虚拟交互场景中目标定位方法、装置及电子设备与流程

文档序号:18474927发布日期:2019-08-20 20:53阅读:214来源:国知局
虚拟交互场景中目标定位方法、装置及电子设备与流程

本公开涉及计算机技术领域,尤其涉及一种虚拟交互场景中目标定位方法、装置及电子设备。



背景技术:

随着计算机技术的发展,以第一人称构建的虚拟交互场景逐渐进入用户的视野,例如,该虚拟交互场景可以包括射击类游戏场景、打击类游戏场景等。以射击类游戏场景为例,用户在射击类游戏场景中透过以第一人称创建的用户指定虚拟对象进行瞄准射击游戏,即是以用户的主观视角进行虚拟目标瞄准,进而完成对虚拟目标的射击。

受用户视角的影响,虚拟目标的瞄准可能会有所偏差,而导致虚拟目标的射击不准确。为此,现有技术中提出了一种目标定位方法,即在虚拟目标上设置吸附点,当用于指向虚拟目标的触发点靠近该吸附点时,触发点将按照吸附角速度自动吸附到虚拟目标设置的吸附点上,进而实现对射击类游戏场景中虚拟目标的自动瞄准,以此来辅助用户准确地完成目标定位。

由于吸附角速度和用户指定虚拟对象与虚拟目标之间的直线距离有关,随着用户指定虚拟对象与虚拟目标之间直线距离的变化,将造成吸附角速度波动较大,即,当用户指定虚拟对象与虚拟目标之间的直线距离较近时,吸附角速度较快,当用户指定虚拟对象与虚拟目标之间的直线距离较远时,吸附角速度较慢,而有可能导致自动吸附失败,最终导致虚拟目标的瞄准不准确。

由上可知,虚拟交互场景中,现有的目标定位方法仍存在吸附角速度不稳定的局限性。



技术实现要素:

为了解决上述技术问题,本公开的一个目的在于提供一种虚拟交互场景中目标定位方法、装置及电子设备。

其中,本公开所采用的技术方案为:

一种虚拟交互场景中目标定位方法,包括:侦听用户进行目标定位的触发操作,获得触发点在屏幕中的位置;根据所述触发点的位置和所述虚拟目标上的吸附点,确定所述吸附点对应的吸附点位置;在所述触发点的位置处于所述吸附点位置确定的吸附范围时,通过所述虚拟目标与所述用户指定虚拟对象在水平方向上的相对位移进行吸附角速度运算;按照运算得到的吸附角速度将所述触发点移动至所述吸附点位置。

一种虚拟交互场景中目标定位装置,包括:触发点位置获取模块,用于侦听用户进行目标定位的触发操作,获得触发点在屏幕中的位置;吸附点位置获取模块,用于根据所述触发点的位置和所述虚拟目标上的吸附点,确定所述吸附点对应的吸附点位置;吸附角速度计算模块,用于在所述触发点的位置处于所述吸附点位置确定的吸附范围时,通过所述虚拟目标与所述用户指定虚拟对象在水平方向上的相对位移进行吸附角速度运算;触发点移动模块,用于按照运算得到的吸附角速度将所述触发点移动至所述吸附点位置。

一种电子设备,包括处理器及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上所述的虚拟交互场景中目标定位方法。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的虚拟交互场景中目标定位方法。

与现有技术相比,本公开具有以下有益效果:

通过侦听用户进行目标定位的触发操作获得触发点在屏幕中的位置,根据触发点的位置和虚拟目标上的吸附点触发进行吸附点位置确定,并在触发点的位置处于吸附点位置确定的吸附范围时,通过虚拟目标与用户指定虚拟对象在水平方向上的相对位移进行吸附角速度运算,进而按照运算得到的吸附角速度将触发点移动至该吸附点位置。

由此,吸附角速度还将与用户指定虚拟对象与虚拟目标在水平方向上的相对位移有关,以此对用户指定虚拟对象与虚拟目标之间直线距离所产生的变化进行部分抵消,避免造成吸附角速度波动过大,有效地保证了虚拟交互场景中目标定位时吸附角速度的稳定性,进而有利于提高目标定位的准确性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

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

图1是现有技术所涉及的吸附角速度和用户指定虚拟对象与虚拟目标之间的直线距离有关的示意图。

图2是根据一示例性实施例示出的一种电子设备的硬件结构示意图。

图3是根据一示例性实施例示出的一种虚拟交互场景中目标定位方法的流程图。

图4是本公开所涉及的吸附点的示意图。

图5是本公开所涉及的用户指定虚拟对象与虚拟目标之间相对位移有关的示意图。

图6是根据一示例性实施例示出的另一种虚拟交互场景中目标定位方法的流程图。

图7是图3对应实施例中步骤330在一个实施例的流程图。

图8是本公开所涉及的吸附点位置确定的吸附范围的示意图。

图9是图3对应实施例中步骤350在一个实施例的流程图。

图10是本公开所涉及的相对移动速度的示意图。

图11是图9对应实施例中步骤353在一个实施例的流程图。

图12是本公开所涉及的吸附系数与用户滑屏速度之间的转换关系的示意图。

图13是图9对应实施例中步骤357在一个实施例的流程图。

图14是根据一示例性实施例示出的另一种虚拟交互场景中目标定位方法的流程图。

图15是根据一示例性实施例示出的一种虚拟交互场景中目标定位装置的框图。

图16是图15对应实施例中吸附角速度计算模块750在一个实施例的框图。

图17是图16对应实施例中相对移动速度确定单元753在一个实施例的框图。

图18是图16对应实施例中吸附角速度计算子单元757在一个实施例的框图。

图19是根据一示例性实施例示出的另一种虚拟交互场景中目标定位装置的框图。

通过上述附图,已示出本公开明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本公开构思的范围,而是通过参考特定实施例为本领域技术人员说明本公开的概念。

具体实施方式

这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。

如前所述,吸附角速度和用户指定虚拟对象与虚拟目标之间的直线距离有关。

具体而言,如图1所示,假设用户指定虚拟对象处于a点,虚拟目标处于b点,并且用户指定虚拟对象在a点不动,而虚拟目标在水平方向上远离用户指定虚拟对象移动。

在虚拟目标的移动过程中,虚拟目标在水平方向上的移动速度为v,移动时间为t,所产生的位移为s0=vt。

在水平方向上的位移s0产生之后,便可进行吸附角速度ω的计算。

吸附角速度ω的计算公式如下:

其中,s表示用户指定虚拟对象与虚拟目标之间的直线距离。

即,先根据计算公式(1)中位移s0和直线距离s计算得到θ角度的正切值,再根据计算公式(2)由θ角度的正切值和移动时间t计算得到吸附角速度ω。

然而,如果将计算公式(1)和计算公式(2)结合起来,则吸附角速度ω的计算公式可以简化为即移动时间t对吸附角速度ω没有任何影响,主要决定吸附角速度ω的是直线距离s和虚拟目标的移动速度v。

由于虚拟目标的移动速度v通常是固定值,这就使得吸附角速度仅与直线距离成反比,即,当用户指定虚拟对象与虚拟目标之间的直线距离较小时,吸附角速度较大,当虚拟对象与虚拟目标之间的直线距离较大时,吸附角速度较小,进而有可能因吸附角速度波动太大而导致自动吸附失败,最终导致虚拟目标的定位不准确。

基于此,现有技术中目标定位方法仍存在吸附角速度不稳定的缺陷,为此,本公开中将提出一种虚拟交互场景中目标定位方法,通过该虚拟交互场景中目标定位方法充分地保证吸附角速度的稳定性。

图2是根据一示例性实施例示出的一种电子设备100的硬件结构示意图。该电子设备100可以是智能手机、台式电脑、笔记本电脑、平板电脑等等,在此不进行限定。

需要说明的是,该电子设备100只是一个适配于本公开的示例,不能认为是提供了对本公开的使用范围的任何限制。该电子设备100也不能解释为需要依赖于或者必须具有图2中示出的示例性的电子设备100中的一个或者多个组件。

该电子设备100的硬件结构可因配置或者性能的不同而产生较大的差异,如图2所示,电子设备100包括:电源110、接口130、至少一存储介质150、以及至少一中央处理器(cpu,centralprocessingunits)170。

其中,电源110用于为电子设备100上的各硬件设备提供工作电压。

接口130包括至少一有线或无线网络接口131、至少一串并转换接口133、至少一输入输出接口135以及至少一usb接口137等,用于与外部设备通信。

存储介质150作为资源存储的载体,可以是随机存储介质、磁盘或者光盘等,其上所存储的资源包括操作系统151、应用程序153及数据155等,存储方式可以是短暂存储或者永久存储。其中,操作系统151用于管理与控制电子设备100上的各硬件设备以及应用程序153,以实现中央处理器170对海量数据155的计算与处理,其可以是windowsservertm、macosxtm、unixtm、linuxtm、freebsdtm等。应用程序153是基于操作系统151之上完成至少一项特定工作的计算机程序,其可以包括至少一模块(图2中未示出),每个模块都可以分别包含有对电子设备100的一系列操作指令。数据155可以是存储于磁盘中的照片、图片等等。

中央处理器170可以包括一个或多个以上的处理器,并设置为通过总线与存储介质150通信,用于运算与处理存储介质150中的海量数据155。

如上面所详细描述的,适用本公开的电子设备100将通过中央处理器170读取存储介质150中存储的一系列操作指令的形式来进行虚拟交互场景中目标定位。

此外,通过硬件电路或者硬件电路结合软件指令也能同样实现本公开,因此,实现本公开并不限于任何特定硬件电路、软件以及两者的组合。

请参阅图3,在一示例性实施例中,一种虚拟交互场景中目标定位方法适用于图2所示的电子设备100,该种虚拟交互场景中目标定位方法可以由电子设备100执行,可以包括以下步骤:

步骤310,侦听用户进行目标定位的触发操作,获得触发点在屏幕中的位置。

针对电子设备中以第一人称构建的虚拟交互场景,虚拟目标可以是虚拟交互场景中的人物、动物、物品、山川河流、建筑等虚拟对象。换而言之,虚拟目标即是虚交互场景中被用户触发进行目标定位的虚拟对象,例如,在打击类游戏场景中,用户为了执行船只爆破任务,将针对虚拟对象船只进行目标定位。

相应地,用户可以通过操控电子设备所配置的输入装置,例如键盘、鼠标、游戏摇杆、触控笔、触摸屏等,对虚拟对象进行目标定位。用户进行目标定位的触发操作便可以由用户操控输入装置触发,触发点则是与用户操控输入装置进行的触发操作相对应,并用于指向被用户触发进行目标定位的虚拟对象。

举例说明如下,射击类游戏场景中,用户对虚拟对象触发进行目标定位即是以用户视角透过用户指定虚拟对象操控枪械等装备的瞄准准心对目标敌人进行瞄准。

在对目标敌人进行瞄准射击时,首先用户通过手指在触摸屏上滑动而将瞄准准心由其他任意位置移动至靠近目标敌人一定范围,以对目标敌人实施瞄准;在瞄准准心停留在靠近目标敌人一定范围时,再由用户通过点击操作(例如轻触触摸屏)对已进行了瞄准的目标敌人实施射击。

上述过程中,瞄准准心被移动且具有指向目标敌人的移动趋势,由此,该瞄准准心即可视为触发点,即在射击类游戏场景中,触发点是与用户手指在触摸屏上所进行的滑动操作相对应,并用于指向被用户实施瞄准的目标敌人。

进一步地,在射击类游戏场景中,为了辅助用户准确地完成目标敌人瞄准,以保证用户对目标敌人射击时的命中率,对目标敌人的瞄准还包括自动瞄准,即用户不需要精确地控制瞄准而仅需要将瞄准准心靠近目标敌人一定范围,当用户将瞄准准心靠近目标敌人一定范围的时候,瞄准准心将被自动吸附至该目标敌人身上设置的吸附点。也就是说,自动吸附生效的前提是瞄准准心靠近吸附点,即触发点靠近吸附点。

为此,在进行自动吸附之前,首先需要确定触发点和吸附点在屏幕中的位置,进而由此判断触发点是否靠近了吸附点,仅当触发点靠近吸附点时触发自动吸附。

如前所述,触发点是由其他任何位置移动至靠近虚拟目标的一定范围,且移动过程中具有指向虚拟目标的移动趋势,并最终停留在靠近虚拟目标的一定范围。

因此,在上述过程中,可以连续地检测用户进行目标定位的触发操作,以得到整个移动过程中触发点在屏幕中的位置,包括移动中触发点在屏幕中的位置以及停留的触发点在屏幕中的位置,由此便能够根据触发点在屏幕中的位置判断触发点是否靠近了虚拟目标上的吸附点。

在一实施例的具体实现中,将针对停留的触发点在屏幕中的位置来判断触发点是否靠近虚拟目标上的吸附点,进而及时准确地发起触发点的自动吸附,还同时降低了处理器的任务处理压力,有利于提高目标定位效率。

值得一提的是,进行触发点在屏幕中位置检测的检测函数是预置的,例如mouseposition函数可获取鼠标在屏幕中所对应光标的停留位置,在此不一一列举,上述被预置的函数均可直接被电子设备所调用。

此外,触发点在屏幕中的位置可以通过坐标值的形式进行表示。

步骤330,根据触发点的位置和虚拟目标上的吸附点,确定吸附点对应的吸附点位置。

在确定触发点的位置之后,将进一步地确定虚拟目标上的吸附点所对应的吸附点位置。其中,虚拟目标是由触发点所指向的。也就是说,通过触发点的位置将首先确定用户触发进行目标定位的虚拟目标,进而根据虚拟目标上的吸附点确定对应的吸附点位置。

具体而言,由配置参数文件中获取虚拟目标上的吸附点,并检测该吸附点在屏幕中的位置,即得到该吸附点对应的吸附点位置。

例如,电子设备中运行有可供虚拟交互场景展示的客户端,配置参数文件则是该客户端中参数(preference)目录下的xml文件,被用于存储被配置的各类参数,例如,参数包括但不限于虚拟交互场景中设置在各虚拟对象上的吸附点。

应当说明的是,吸附点在配置参数文件中是通过吸附点标识唯一表示的,吸附点标识可以通过数字、字母、或者二者组合表示,在此并不加以限定。例如,虚拟对象a上设置有两个吸附点a1和a2,a1和a2即为吸附点标识。

当然,在其他实施例中,配置参数文件还会相应地保存用户准备进入虚拟交互场景时所作的选择,以射击类游戏场景为例,所作的选择包括用户指定虚拟对象、用户指定的枪械类型、用户指定进入的射击关卡等等,同时也将存储游戏的其他一些固有的配置参数,例如,配置参数包括虚拟对象的移动速度等等。其中,用户指定虚拟对象是指虚拟交互场景中以第一人称创建的虚拟对象。

进一步地,假设虚拟目标为动画角色,可以理解,该动画角色所对应的动画姿态是会发生变化的,例如动画角色的动画姿态由站立变为卧倒,相应地,设置在该动画角色上的吸附点所对应的吸附点位置也将随之变化,即吸附点位置与该动画角色的动画姿态相关联。

更进一步地,吸附点位置的数量为若干个,每一吸附点位置对应一个吸附点,换而言之,虚拟交互场景中设置在各虚拟对象上的吸附点数量为若干个。

由此,触发点自动吸附时,针对虚拟目标上设置的若干吸附点,触发点可以被自动吸附至与其自身距离最近的吸附点上,也可以按照吸附点权重值自动吸附至吸附点权重值最大的吸附点上。

步骤350,在触发点的位置处于吸附点位置确定的吸附范围时,通过虚拟目标与用户指定虚拟对象在水平方向上的相对位移进行吸附角速度运算。

吸附范围是以吸附点位置为圆心,预设间距为半径所定义的范围。

针对一个吸附点位置,当触发点的位置处于该吸附点位置所定义的范围内,则视为触发点的位置在该吸附点位置确定的吸附范围,此时,自动吸附生效,即触发点将按照吸附角速度自动吸附至该吸附点位置所对应的吸附点。

而针对若干个吸附点位置,此时,当触发点的位置处于任一吸附点位置所定义的范围内,则视为触发点的位置在该任一吸附点位置确定的吸附范围,此时,自动吸附生效,即触发点将按照吸附角速度自动吸附至其中一个吸附点位置所对应的吸附点。

简而言之,当触发点被移动进入吸附范围时,便会按照吸附角速度进行自动吸附。

进一步地,本实施例中,吸附角速度是通过用户指定虚拟对象与虚拟目标在水平方向上的相对位移计算得到的。

具体而言,如图5所示,假设用户指定虚拟对象处于a点,虚拟目标处于b点。

此时,用户指定虚拟对象与虚拟目标均朝着相反的斜后方移动,由此产生了水平方向上的相对位移s1,即,s1=sa—sb。其中,sa表示用户指定虚拟对象沿着水平方向移动的位移,sb表示虚拟目标沿着水平方向移动的位移。

在水平方向上的相对位移s1产生之后,便可进行吸附角速度ω的计算。

吸附加速度ω的计算公式如下:

其中,s表示用户指定虚拟对象与虚拟目标之间的直线距离,t表示产生相对位移所使用的时间。

即,先根据计算公式(3)中相对位移s1和直线距离s计算得到θ角度的正切值,再根据计算公式(4)由θ角度的正切值和相对位移所使用的时间t计算得到吸附角速度ω。值得一提的是,相对位移所使用的时间t可以由定时器获取。

在上述过程中,在吸附角速度的计算过程中引入相对位移s1,以此部分抵消了用户指定虚拟对象与虚拟目标之间的直线距离s所产生的变化,从而解决了自动瞄准中吸附角速度不够稳定的问题。

步骤370,按照运算得到的吸附角速度将触发点移动至吸附点位置。

待触发点按照吸附角速度自动吸附至吸附点位置对应的吸附点,则辅助用户完成了目标定位。

进一步地,如前所述,虚拟交互场景中设置在各虚拟对象上的吸附点数量为若干个。因此,每一吸附点位置对应一个吸附点,则吸附点位置的数量为若干个。

由此,触发点按照吸附角速度自动吸附时,针对虚拟目标上设置的若干吸附点,触发点可以被自动吸附至与其自身距离最近的吸附点上,也可以按照吸附点权重值自动吸附至吸附点权重值最大的吸附点上。

较优地,每一吸附点位置所对应的吸附点具有优先级。

其中,吸附点的优先级可以通过吸附点权重值表示,吸附点权重值可以根据吸附点所在吸附点位置、枪械类型、吸附点是否可见进行动态配置。

例如,以虚拟目标为动画角色进行说明,如图4所示,假设该动画角色上设置了五个吸附点,分别位于头部、身体、腿部、左手和右手,则按照优先级顺序相应为身体、头部、腿部和双手(左手和右手)。也就是说,吸附点位置位于该动画角色中间三个部位上的吸附点的优先级均要高于吸附点位置位于该动画角色两侧部位上的吸附点的优先级。

又或者,用户指定的枪械类型是狙击枪时,动画角色头部上吸附点的优先级将高于其身体上其余吸附点的优先级。

在上述过程中,若干吸附点被设置在虚拟对象上,当虚拟对象通过用户进行目标定位的触发操作而成为虚拟目标时,只要触发点靠近虚拟目标上的任一吸附点都将触发进行自动吸附,使得对于用户而言,吸附点并非设置在虚拟目标的固定位置上,而是吸附点位置可变的,任何一个吸附点位置对应的吸附点都有可能被触发点自动吸附,以此有效地增强了目标定位的灵活性。

此外,不同吸附点对应不同的吸附点权重值,触发点将移动至吸附点权重值最大的吸附点,如果吸附点权重值发生变化,触发点的自动吸附也将随之产生变化,从而进一步地增强了目标定位的灵活性。

在一示例性实施例中,虚拟目标为动画角色且通过若干动画骨骼点表示。该动画角色包括人物角色、动物角色等。

首先需要说明的是,虚拟目标为动画角色时,是采用骨骼动画作为动画角色动画的方式,即在骨骼动画中,以互相连接的“骨骼”组成动画角色的骨架结构,并通过改变骨架结构中“骨骼”的朝向以及位置来为动画角色生成动画,进而使得动画角色以不同的动画姿态显示在屏幕中。

基于此,虚拟目标为动画角色时是通过若干动画骨骼点表示的。例如,以动画骨骼点a表示动画角色的头部,以动画骨骼点b表示动画角色的左手。换而言之,动画骨骼点唯一地标识了动画角色上的不同部位。

相应地,请参阅图6,步骤330之前,如上所述的方法还可以包括以下步骤:

步骤410,由虚拟目标上选取若干动画骨骼点,并分别建立选取到的动画骨骼点与吸附点之间一一对应的绑定关系。

步骤430,将绑定关系存储至配置参数文件中,配置参数文件用于进行吸附点位置确定。

举例来说,预定义五个吸附点,即该五个吸附点准备设置在动画角色的头部、身体、腿部、左手和右手。

相应地,由动画角色上选取五个动画骨骼点,该五个动画骨骼点分别标识了动画角色上的不同部位:头部、身体、腿部、左手和右手。

进一步地,建立该五个动画骨骼点与五个吸附点之间一一对应的绑定关系,并存储该绑定关系至配置参数文件中。

由此,五个吸附点便设置在动画角色上。并且,在动画角色的动画姿态发生变化时,由于动画骨骼点的位置发生了变化,将使得吸附点所在吸附点位置也将跟随动画骨骼点的位置变化。

换而言之,无论动画角色的动画姿态如何变化,人物身上设置的五个吸附点始终存在,进而使得触发点的自动吸附能够跟随动画角色动画姿态的变化而变化,以此充分地保障了目标定位的有效性。

进一步地,请参阅图7,步骤330可以包括以下步骤:

步骤331,获取与吸附点具有绑定关系的动画骨骼点。

步骤333,检测动画骨骼点在屏幕中的位置。

步骤335,将动画骨骼点在屏幕中的位置作为吸附点对应的吸附点位置。

如前所述,在动画角色的动画姿态发生变化时,由于动画骨骼点的位置发生了变化,将使得吸附点所在吸附点位置也跟随动画骨骼点的位置变化。

由此,吸附点对应的吸附点位置即为与该吸附点具有绑定关系的动画骨骼点的位置。

具体而言,通过配置参数文件中存储的吸附点与动画骨骼点之间一一对应的绑定关系,首先得到与吸附点具有绑定关系的动画骨骼点,并对该动画骨骼点在屏幕中的位置进行检测,进而将检测得到的动画骨骼点在屏幕中的位置作为该吸附点对应的吸附点位置。

进一步地,动画骨骼点位置的检测可以是实时的,也可以是周期性的,在此不进行限定,可以根据实际的应用场景进行灵活地调整。例如,在移动性较强的射击类游戏场景中,动画骨骼点位置的检测周期较短。

应当说明的是,动画骨骼点在屏幕中的位置也将通过坐标值的形式进行表示。

在上述实施例的配合下,实现了吸附点的角色动画绑定,即使得无论动画角色处于何种动画姿态都将具有稳定的吸附点位置,进而保证了始终存在有效的吸附点可供触发点进行自动吸附,避免自动吸附失效,以此保障了目标定位的可靠性和准确性。

在一示例性实施例中,步骤350之前,如上所述的方法还可以包括以下步骤:

判断触发点的位置与吸附点位置之间的距离是否小于预设间距。

如果是,则判定触发点的位置处于吸附点位置确定的吸附范围。

如前所述,吸附范围是以吸附点位置为圆心,预设间距为半径所定义的范围。

其中,预设间距可以根据实际应用场景进行灵活地调整,在此不加以限定。

由此,如图8所示,假设任一吸附点所在吸附点位置为a,预设间距为r,则图8中圆圈所示范围即为该吸附点位置a确定的吸附范围。

假设触发点的位置为b,触发点的位置b与吸附点位置a之间的距离为rab,由于rab>r,表示触发点的位置b与吸附点位置a之间的距离大于预设间距,则判定触发点的位置b不处于吸附点位置a确定的吸附范围,此时,自动吸附不生效,不进行吸附点权重值运算,并返回步骤310。

假设触发点的位置为c,触发点的位置c与吸附点位置a之间的距离为rac,由于rac<r,表示触发点的位置b与吸附点位置a之间的距离小于预设间距,则判定触发点的位置c处于吸附点位置a确定的吸附范围,此时,自动吸附生效,进行吸附角速度运算,即跳转进入步骤350。

在上述实施例的作用下,通过预设间距的设置可以灵活地调整吸附范围的大小,进而实现为不同的虚拟目标设置不同的吸附范围,例如,射击类游戏场景中,boss级动画角色可以设置相对较小的吸附范围,以此增加虚拟目标瞄准的复杂度,进一步有效地增强了目标定位的灵活性。

请参阅图9,在一示例性实施例中,步骤350可以包括以下步骤:

步骤351,分别获取用户指定虚拟对象与虚拟目标的移动速度,并按照用户指定虚拟对象与虚拟目标在水平方向上产生相对位移时的移动方向,将用户指定虚拟对象与虚拟目标的移动速度分别分解出水平方向上的速度矢量。

步骤353,根据用户指定虚拟对象与虚拟目标在水平方向上的速度矢量确定相对移动速度。

步骤355,检测用户指定虚拟对象与虚拟目标在屏幕中的位置,根据用户指定虚拟对象与虚拟目标的位置计算得到用户指定虚拟对象与虚拟目标之间的直线距离。

步骤357,通过相对移动速度和直线距离计算吸附角速度。

如前所述,如果将计算公式(3)和公式(4)结合起来,则吸附角速度ω的计算公式可以简化为即相对位移所使用的时间t对吸附角速度ω没有任何影响,主要决定吸附角速度ω的是直线距离s和相对移动速度vab。

其中,相对移动速度vab即va-vb,va表示用户指定虚拟对象在水平方向上的速度矢量,vb表示虚拟目标在水平方向上的速度矢量。

换而言之,除了用户指定虚拟对象与虚拟目标之间的直线距离,吸附角速度实际还与用户指定虚拟对象与虚拟目标在水平方向上的相对移动速度相关。

由此,在进行吸附角速度计算之前,首先需要由配置参数文件中分别获得用户指定虚拟对象与虚拟目标的移动速度,进而针对该两移动速度进行水平方向上的速度矢量分解处理。

如图10所示,在用户指定虚拟对象与虚拟目标均朝着相反的斜后方移动过程中,用户指定虚拟对象与虚拟目标将分别具有移动速度v’a、v’b,以此分解出水平方向上的速度矢量va、vb,进而得到相对移动速度vab=va-vb。

在此基础上,便可得到吸附角速度ω。

需要说明的是,配置参数文件中存储的移动速度是标量,仅在实际移动过程中才被赋予了移动方向,进而以矢量的形式表示。

请参阅图11,在一示例性实施例中,步骤353还可以包括以下步骤:

步骤3531,针对用户指定虚拟对象与虚拟目标在水平方向上的速度矢量进行速度差计算。

步骤3533,以计算得到的速度差、虚拟目标在水平方向上速度矢量中的最大值作为相对移动速度。

应当理解,用户指定虚拟对象的移动速度与虚拟目标的移动速度通常是相同的,以此保证了用户指定虚拟对象能够追赶上虚拟目标。

基于此,假设用户指定虚拟对象与虚拟目标在水平方向上同向运动,则二者之间的相对移动速度为零,相应地,吸附角速度为零,进而导致触发点的自动吸附失败。

为此,本实施例中,将对相对移动速度进一步地扩展,避免吸附角速度为零的情况出现。

即,以速度差、虚拟目标在水平方向上速度矢量中的最大值作为相对移动速度。其中,速度差是根据用户指定虚拟对象与虚拟目标在水平方向上的速度矢量计算得到的。

具体而言,vab=max{vb,va-vb}。此时,如果va-vb为零,即用户指定虚拟对象与虚拟目标在水平方向上以相同的移动速度同向运动,则相对移动速度为虚拟目标在水平方向上的速度矢量vb,反之,如果va-vb非零,即用户指定虚拟对象与虚拟目标在水平方向上以相同的移动速度反向运动,则相对移动速度为速度差va-vb。

在上述实施例的配合下,有效地避免了吸附角速度为零的情况,以此保证了吸附角速度的有效性,充分提高了自动吸附的成功率,即使得触发点一定能够被自动吸附在虚拟目标设置的吸附点上。

在一示例性实施例中,如上所述的方法还可以包括以下步骤:

建立吸附系数与用户滑屏速度之间的转换关系,并将转换关系存储至配置参数文件。

可以理解,在用户欲使触发点脱离吸附范围,进而脱离虚拟目标时,将进行与目标定位时相反的触发操作。例如,用户通过操控鼠标靠近屏幕中显示的虚拟目标进行目标定位,反之,用户将通过操控鼠标远离屏幕中显示的虚拟目标进行触发点脱离。

然而,当吸附角速度较大的时候,用户需要以相对吸附角速度较小时更快的速度进行输入装置的操控,否则难以使触发点脱离虚拟目标,以此导致目前触发点脱离虚拟目标的成本较大。

为此,本实施例中,将通过一吸附系数的设置来降低触发点脱离虚拟目标的成本。

吸附系数反映出触发点脱离虚拟目标的难易程度,吸附系数越小,触发点越容易脱离虚拟目标。

进一步地,吸附系数是一个可变的数值,其与用户输入速度相关,即,用户输入速度越快,表示用户欲使触发点脱离虚拟目标,则吸附系数越小,以使触发点越容易脱离虚拟目标,以此保证了游戏手感和体验更加符合用户的习惯。

其中,用户输入速度可以是用户滑屏速度、用户摇杆速度、用户滑鼠速度、用户按键速度等等,在此不进行一一描述。

以用户滑屏速度为例,用户滑屏速度是指用户通过手指、鼠标或者触控笔滑动屏幕的速度。该速度以单位时间内手指、鼠标或者触控笔滑动的距离来衡量。

以吸附系数k作为纵坐标,以用户滑屏速度v作为横坐标,通过建立二者之间的转换关系即得到相应的曲线函数,如图12所示。

在该转换关系中,吸附系数k随着用户滑屏速度v的增长而递减,随着用户滑屏速度增长到一定程度,吸附系数也会降低至一个固定的最低数值,而当用户滑屏速度继续增长时,吸附系数将始终保持在该最低数值,不会随之改变。

在此过程中,吸附系数永远不会降低至零,以此有利于保证吸附角速度始终存在,而不会因为用户滑屏速度过快而消失。

相应地,请参阅图13,步骤357可以包括以下步骤:

步骤3571,通过侦听用户进行触发点脱离虚拟目标的触发操作计算得到用户滑屏速度。

具体而言,连续侦听用户进行触发点脱离虚拟目标的触发操作,以此确定触发点在屏幕中的至少两个位置,即当前位置和上一个当前位置,进而根据触发点在屏幕中的当前位置与上一个当前位置计算得到手指、鼠标或者触控笔的滑动距离,并根据连续进行侦听所对应的时间戳计算得到滑动距离的滑动时间,以此得到用户滑屏速度。

步骤3573,按照吸附系数与用户滑屏速度之间的转换关系将用户滑屏速度转换为对应的吸附系数。

步骤3575,根据转换得到的吸附系数、相对移动速度和直线距离计算得到吸附角速度。

具体地,吸附角速度ω的计算公式为

通过如上所述的过程,当用户轻微滑动屏幕时,仍然保证用户在虚拟目标上具有较大的吸附角速度;而当用户快速滑动屏幕时,则认为用户有让触发点脱离虚拟目标的欲望,于是吸附角速度将在吸附系数的作用下变小,进而使得触发点更容易脱离虚拟目标,以此很好地满足了用户的需求。

请参阅图14,在一示例性实施例中,如上所述的方法还可以包括以下步骤:

步骤510,对用户滑屏速度进行监听。

步骤530,如果监听到用户滑屏速度发生了变化,则触发进行吸附角速度重新运算。

步骤550,按照重新运算得到的吸附角速度移动触发点。

如前所述,用户滑屏速度与吸附系数相关。

由此,如果监听到用户滑屏速度发生了变化,则依照配置参数文件中所存储的用户滑屏速度与吸附系数之间的转换关系,便可认为吸附系数随之发生了改变,进而使得吸附角速度也相应地变化了,此时,触发点将按照变化了的吸附角速度移动至吸附点位置。

在上述实施例的作用下,实现了吸附角速度的动态变化,即触发点始终能够以某一速度自动吸附在虚拟目标设置的吸附点上,以此充分保证了自动吸附的有效性,进一步地保证了虚拟目标的击发准确性。

在一示例性实施例中,如前所述,设置在虚拟目标上的吸附点的数量为若干个。此时,每一个吸附点具有不同的优先级,即吸附点权重值不同。

相应地,步骤370之前,如上所述的方法还可以包括以下步骤:

对若干吸附点进行吸附点权重值运算,得到若干对应吸附点的吸附点权重值。

具体而言,对于每一个吸附点,其对应的吸附点权重值计算公式如下:

wpoint=ωbase×rhit。

其中,wpoint表示虚拟目标上任意一个吸附点的吸附点权重值;ωbase表示该吸附点的基础权重系数;rhit表示该吸附点的可见系数。

基础权重系数,与吸附点所在吸附点位置相关,也就是说,吸附点位置不同,则基础权重系数有所区别,以此表示虚拟目标中不同部位上吸附点的优先级。

如图4所示,虚拟目标为动画角色时,吸附点位置位于头部,基础权重系数为3,吸附点位置位于身体,基础权重系数为4,则表示该虚拟目标身体上吸附点的优先级高于其头部上吸附点的优先级。

基础权重系数是预先定义并记录在配置参数文件中,同时,该基础权重系数可以根据实际应用场景灵活地调整。例如,在射击类游戏场景中,假设用户更倾向于瞄准虚拟目标的头部,则可以将位于头部的吸附点的基础权重系数调整至5,以此满足用户的需求,进而有利于提升用户的瞄准射击体验。

其中,配置参数文件中的基础权重系数可以由用户自定义,也可以由开发人员定义,在此不进行限定。

在此基础上,由配置参数文件中便可得到吸附点的基础权重系数。

可以理解,当虚拟目标隐藏在掩体背后,设置在虚拟目标上的部分甚至全部吸附点也可能会被掩体遮挡。

由此,可见系数,用于指示吸附点是否被掩体遮挡。例如,可见系数为0,则指示吸附点被掩体遮挡,反之,可见系数为1,则指示吸附点未被掩体遮挡。

本实施例中,可见系数是通过对虚拟目标进行光线投射检测得到的。光线投射检测是指使光线由虚拟目标外向虚拟目标投射,若光线能够由虚拟目标外穿过虚拟目标,则视为可见。

例如,光线投射检测可以通过电子设备中预置的检测函数进行,例如,raycast函数返回的光线投射检测结果即为可见系数。

在上述过程中,即能够得到虚拟目标上设置的各吸附点所分别对应的吸附点权重值,以此为触发点的自动吸附提供了充分的依据。

进一步地,为若干枪械类型分别配置枪械权重系数,并将若干枪械类型及其枪械权重系数关联存储至配置参数文件。

相应地,由配置参数文件中根据用户指定的枪械类型关联查找到的枪械权重系数,并根据枪械权重系数、以及基础权重系数和可见系数计算得到吸附点的吸附点权重值。

具体而言,吸附点权重值计算公式如下:

wpoint=ωbase×μweapon×rhit。

其中,wpoint表示虚拟目标上任意一个吸附点的吸附点权重值;ωbase表示该吸附点的基础权重系数;μweapon表示用户指定的枪械类型对应的枪械权重系数;rhit表示该吸附点的可见系数。

在上述过程中,各吸附点的吸附点权重值与用户指定的枪械类型相关,即用户指定的枪械类型发生变化,则各吸附点的吸附点权重值也将相应地变化,以此进一步地增强了目标定位的灵活性。

更进一步地,应当理解,对于用户而言,可以重新定义不同的基础权重系数,也可以重新选择不同的枪械类型,还可以重新选择不同的用户指定虚拟对象并在该重新选择过程中重新选择不同的枪械类型,进而使得枪械权重系数随之发生变化,而对于虚拟目标而言,则有可能为了躲避被瞄准而来回地隐藏或者暴露于掩体,进而使得可见系数产生相应地变化。

由此,通过对枪械权重系数、基础权重系数和可见系数中的任意一种进行监听,如果监听到枪械权重系数、基础权重系数和可见系数中的任意一种发生了变化,则重新计算吸附点权重值,进而使得触发点的自动吸附重新进行,即触发点移动至重新计算得到的最大吸附点权重值对应吸附点所在位置。

在上述过程中,实现了吸附点权重值的动态变化,进而使得触发点的移动也是动态变化的,即触发点始终能够自动吸附在虚拟目标上设置的某一吸附点,以此充分保证了目标定位的有效性以及灵活性,进一步地保证了目标定位的准确性。

下述为本公开装置实施例,可以用于执行本公开所涉及的虚拟交互场景中目标定位方法。对于本公开装置实施例中未披露的细节,请参照本公开所涉及的虚拟交互场景中目标定位方法实施例。

请参阅图15,在一示例性实施例中,一种虚拟交互场景中目标定位装置700包括但不限于:触发点位置获取模块710、吸附点位置获取模块730、吸附角速度计算模块750和触发点移动模块770。

其中,触发点位置获取模块710用于侦听用户进行目标定位的触发操作,获得触发点在屏幕中的位置。

吸附点位置获取模块730用于根据触发点的位置和虚拟目标上的吸附点,确定吸附点对应的吸附点位置。

吸附角速度计算模块750用于在触发点的位置处于吸附点位置确定的吸附范围时,通过虚拟目标与用户指定虚拟对象在水平方向上的相对位移进行吸附角速度运算。

触发点移动模块770用于按照运算得到的吸附角速度将触发点移动至吸附点位置。

在一示例性实施例中,如上所述的装置700还包括但不限于:距离判断模块。

其中,距离判断模块用于当触发点的位置与吸附点位置之间的距离小于预设间距时,通知吸附角速度计算模块750。

请参阅图16,在一示例性实施例中,吸附角速度计算模块750包括但不限于:速度矢量确定单元751、相对移动速度确定单元753、直线距离计算单元755和吸附角速度计算单元757。

其中,速度矢量确定单元751用于分别获取用户指定虚拟对象与虚拟目标的移动速度,并按照用户指定虚拟对象与虚拟目标在水平方向上产生相对位移时的移动方向,将用户指定虚拟对象与虚拟目标的移动速度分别分解出水平方向上的速度矢量。

相对移动速度确定单元753用于根据用户指定虚拟对象与虚拟目标在水平方向上的速度矢量确定相对移动速度。

直线距离计算单元755用于检测用户指定虚拟对象与虚拟目标在屏幕中的位置,根据用户指定虚拟对象与虚拟目标的位置计算得到用户指定虚拟对象与虚拟目标之间的直线距离。

吸附角速度计算单元757用于通过相对移动速度和直线距离计算吸附角速度。

请参阅图17,在一示例性实施例中,相对移动速度确定单元753包括:速度差计算子单元7531和相对移动速度确定子单元7533。

其中,速度差计算子单元7531用于针对用户指定虚拟对象与虚拟目标在水平方向上的速度矢量进行速度差计算。

相对移动速度确定子单元7533用于以计算得到的速度差、虚拟目标在水平方向上的速度矢量中的最大值作为相对移动速度。

请参阅图18,在一示例性实施例中,吸附角速度计算子单元757包括但不限于:滑屏速度计算子单元7571、吸附系数获取子单元7573和吸附角速度计算子单元7575。

其中,滑屏速度计算子单元7571用于当侦听到用户进行触发点脱离虚拟目标的触发操作时,计算用户滑屏速度。

吸附系数获取子单元7573用于按照吸附系数与用户滑屏速度之间的转换关系将用户滑屏速度转换为对应的吸附系数。

吸附角速度计算子单元7575用于根据转换得到的吸附系数、相对移动速度和直线距离计算得到吸附角速度。

请参阅图19,在一示例性实施例中,如上所述的装置700包括但不限于:监听模块910、重新计算模块930和移动模块950。

其中,监听模块910用于对用户滑屏速度进行监听。

重新计算模块930用于如果监听到用户滑屏速度发生了变化,则触发进行吸附角速度重新运算。

移动模块950用于按照重新运算得到的吸附角速度移动触发点。

需要说明的是,上述实施例所提供的虚拟交互场景中目标定位装置在进行虚拟交互场景中目标定位处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即虚拟交互场景中目标定位装置的内部结构将划分为不同的功能模块,以完成以上描述的全部或者部分功能。

另外,上述实施例所提供的虚拟交互场景中目标定位装置与虚拟交互场景中目标定位方法的实施例属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。

在一示例性实施例中,一种电子设备,包括处理器及存储器。

其中,存储器上存储有计算机可读指令,该计算机可读指令被处理器执行时实现如上所述的各实施例中的虚拟交互场景中目标定位方法。

在一示例性实施例中,一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述的各实施例中的虚拟交互场景中目标定位方法。

上述内容,仅为本公开的较佳示例性实施例,并非用于限制本公开的实施方案,本领域普通技术人员根据本公开的主要构思和精神,可以十分方便地进行相应的变通或修改,故本公开的保护范围应以权利要求书所要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1