本发明涉及辅助计算技术领域,尤其是涉及一种出射力度的提示方法和装置。
背景技术:
在抛物线射击应用程序中,常见的场景是用户根据风力、角度两个关键因素计算出其控制的操作对象a命中对象b需要的力度,再使用该力度控制操作对象a沿应用程序计算出的轨迹做抛物运动,并最后确定是否命中。
由于抛体运动的轨迹计算涉及风力、角度、力度、重力、物体质量等多种因素,并且需要结合目标距离进行,用户无法在短时间内计算出命中目标对象所需要的力度,只能根据个人经验进行估算,得到的估算结果往往存在偏差,而且估算耗时长,不仅耗费用户时间,也加大了用户对于这类应用程序的使用难度。
针对上述用户难以短时间计算出抛物线射击的力度的问题,目前尚未提出有效的解决方案。
技术实现要素:
有鉴于此,本发明的目的在于提供一种出射力度的提示方法和装置,向用户提供力度提示,以降低用户的估算力度造成的学习成本和操作难度。
第一方面,本发明实施例提供了一种出射力度的提示方法,包括:获取当前显示场景中虚拟对象的出射角度;根据出射角度和当前显示场景对应的参数,计算虚拟对象命中目标对象需要的力度值;参数至少包括以下之一:虚拟对象的坐标、虚拟对象的质量、目标对象的坐标、目标对象的速度、重力加速度、阻力和风力;在当前显示场景的指定区域显示力度值对应的力度提示信息。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,根据出射角度和当前显示场景对应的参数,计算虚拟对象命中目标对象需要的力度值包括:定义虚拟对象在运动过程中与目标对象处于相同高度时的水平坐标计算公式;计算公式包括当前场景的参数、出射角度和力度参数;通过二分法查找水平坐标计算公式的结果与目标对象的水平坐标相同时的力度参数;将力度参数作为力度值。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第二种可能的实施方式,其中,通过二分法查找水平位置计算公式的结果与目标对象的水平坐标相同时的力度参数包括:将第一值代入计算公式得到虚拟对象的水平坐标;第一值为力度参数最小值与最大值的中间值;比较虚拟对象的水平坐标与目标对象的水平坐标;当虚拟对象的水平坐标小于目标对象的水平坐标时,将第二值代入计算公式得到虚拟对象的水平坐标并进行比较步骤;第二值为第一值与最大值的中间值;当虚拟对象的水平坐标大于目标对象的水平坐标时,将第三值代入计算公式得到虚拟对象的水平坐标并进行比较步骤;第三值为最小值与第一值的中间值;当虚拟对象的水平坐标等于目标对象的水平坐标时,将当前值作为查找到的力度参数。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,在当前显示场景的指定区域显示力度值对应的力度提示信息包括:根据力度值占力度最大值的比例确定力度值在力度控制区域对应的位置;在对应的位置显示力度提示符号;力度提示符号包括形状、颜色和/或数值。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,在当前显示场景的指定区域显示力度值对应的力度提示信息包括:确定力度值在力度控制区域对应的刻度;在对应的刻度处显示力度提示符号;力度提示符号为提示刻度线。
结合第一方面的第一种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,当通过二分法查找水平坐标计算公式的结果与目标对象的水平坐标相同时的力度参数超出当前显示场景对应的力度参数的范围时,在指定区域显示无结果提示消息。
结合第一方面的第五种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,还包括:在指定区域显示更改出射角度的提示。
第二方面,本发明实施例还提供一种出射力度的提示装置,包括:出射角度获取模块,用于获取当前显示场景中虚拟对象的出射角度;力度值计算模块,用于根据出射角度和当前显示场景对应的参数,计算虚拟对象命中目标对象需要的力度值;参数至少包括以下之一:虚拟对象的坐标、虚拟对象的质量、目标对象的坐标、目标对象的速度、重力加速度、阻力和风力;力度提示模块,用于在当前显示场景的指定区域显示力度值对应的力度提示信息。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,力度值计算模块包括:公式定义单元,用于定义虚拟对象在运动过程中与目标对象处于相同高度时的水平坐标计算公式;计算公式包括当前场景的参数、出射角度和力度参数;查找单元,用于通过二分法查找水平坐标计算公式的结果与目标对象的水平坐标相同时的力度参数;确定单元,用于将力度参数作为力度值。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,力度提示模块还用于:根据力度值占力度最大值的比例确定力度值在力度控制区域对应的位置;在对应的位置显示力度提示符号;力度提示符号包括形状、颜色和/或数值。
本发明实施例带来了以下有益效果:本发明实施例提供的出射力度的提示方法和装置,可以通过出射角度和当前显示场景对应的参数,计算虚拟对象命中目标对象需要的力度值,并提供可视化的提示供用户输入力度使用,可以减少用户估算力度需要的时间,加强用户估算力度的准确性,降低了用户的学习成本和操作难度,提升了交互场景下的用户体验度。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种出射力度的提示方法的流程示意图;
图2为本发明实施例提供的一种出射力度的提示方法的步骤s13的流程示意图;
图3为本发明实施例提供的一种力度提示符号的示意图;
图4为本发明实施例提供的另一种力度提示符号的示意图;
图5为本发明实施例提供的一种出射力度的提示方法的步骤s13的流程示意图;
图6为本发明实施例提供的一种抛物线射击游戏的提示方法的流程示意图;
图7为本发明实施例提供的一种出射力度的提示装置的结构示意图;
图8为本发明实施例提供的另一种出射力度的提示装置的结构示意图;
图9为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前常见的抛物线射击应用需要用户根据多种因素估算命中目标对象所需要的力度,其估算结果往往存在偏差,而且估算耗时长,用户的使用学习成本和操作难度高,基于此,本发明实施例提供的一种出射力度的提示方法和装置,可以计算力度并提供力度提示,以降低用户的学习成本和操作难度。为便于对本实施例进行理解,首先对本发明实施例所公开的一种出射力度的提示方法进行详细介绍。
在介绍出射力度的提示方法前,需要先定义上述方法的应用场景,应用场景包括但不限于游戏、动画制作等需要控制虚拟对象的出射力度,并击中某个目标的场景。在本发明实施例中以射击游戏应用场景为例进行说明。除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
实施例1
本发明实施例1提供了一种出射力度的提示方法,参见图1所示的出射力度的提示方法的流程示意图,包括如下步骤:
步骤s11,获取当前显示场景中虚拟对象的出射角度。
以射击游戏应用场景为例,上述虚拟对象可以是子弹或者炮弹等。上述出射角度可以是用户输入的,例如通过键盘上的上下方向按键、通过触摸屏上的虚拟上下按键或者通过鼠标等输入装置输入;也可以是应用在自动瞄准过程中自动提供的出射角度;还可以是上回合结束时默认保存的出射角度。
步骤s12,根据出射角度和当前显示场景对应的参数,计算虚拟对象命中目标对象需要的力度值。
其中当前显示场景对应的参数至少包括以下之一:虚拟对象的坐标、虚拟对象的质量、目标对象的坐标、目标对象的速度、重力加速度、阻力和风力。根据出射角度和上述参数可以得到虚拟对象的运动轨迹,当该运动轨迹经过该目标对象的坐标时,即可确定为击中该目标,此处需要说明的是虚拟对象和目标对象均可以具有一定的体积,因此在运动轨迹与目标对象的坐标之间的距离小于设定阈值时,即可认为可以击中目标对象。
进一步,上述计算并非每次射击前均进行,可以根据用户的控制指示来确定是否进行。例如在当前显示场景中设置力度提示虚拟按键,当用户点击力度提示虚拟按键启用力度提示功能后,进行上述计算及后续的提示步骤,否则不进行。
具体地,上述计算方式可以采用二分法查找,可以提高查找到命中需要的力度值的效率,然而也可以采用将力度范围内的力度值逐一带入验算的方式。进一步地,可以根据虚拟对象和目标对象坐标差和当前风力预先估计可能的力度范围,再进行上述查找或逐一带入,以提高计算效率,缩短计算时间,以避免用户等待时间过久,提高体验度。
步骤s13,在当前显示场景的指定区域显示力度值对应的力度提示信息。
在计算得到力度值后,将该力度值对应的力度提示信息显示在指定区域,即可视化了计算所得的力度值。其中,指定区域优选在力度控制区域。常见的力度输入方式包括力度条、圆式、弹性形变式等
作为步骤s13的一种实施方式,若上述力度输入方式为线性增加的力度条式,请参阅图2,步骤s13可以包括:
步骤s21,根据力度值占力度最大值的比例确定力度值在力度控制区域对应的位置。
力度条式的输入方式,是根据用户按住力度键的时间来输入力度的:用户按下力度键后,力度条指示的力度不断增加,用户松开力度键,则力度条指示停止增加,完成力度输入。力度的大小用长方形的纯色图形表示,力度可以从0到应用预先设置的最大力度值之间递增变化,按下力度键时间越长,输入力度越大,则长方形纯色图形越长。
在力度条指示的力度为线性增加的情况下,可以通过力度值占最大值的比例确定该力度值对应的位置。
步骤s22,在对应的位置显示力度提示符号。
为了可视化上述力度值,方便用户观察并按照该力度值控制输入的力度,在该力度值对应的力度位置显示力度提示符号,该力度提示符号包括形状、颜色、数值或者任意两者的组合。参见图3和图4所示的力度提示符号的示意图,在图3中示出了以条形提示符号显示的示意,在图4中示出了以弧形提示符号(图中虚线)显示的示意。
当目标对象有多个的时候,可针对不同目标对象分别计算力度值,并在力度控制区域对应的位置显示多个力度提示符号,给用户多个目标对象的提示。例如目标对象包括三个,可以在显示场景中以a、b、c标记,同时显示在小地图中,力度提示符号也以相同的a、b、c对应标记,如图3和4所示,分别包括3条条形提示符号和3条弧形提示符号。
作为步骤s13的另一种实施方式,若上述力度输入方式包括力度值刻度,请参阅图5,步骤s13还可以包括:
步骤s51,确定力度值在力度控制区域对应的刻度。
步骤s52,在对应的刻度处显示力度提示符号。
具体地,上述力度提示符号为提示刻度线。当力度输入方式包括力度刻度时,可以在力度控制区域中对应的刻度处显示力度提示线,是用户在输入力度时,清楚知道命中目标对象需要的力度大小,方便使用。
本实施例提供的出射力度的提示方法,可以通过出射角度和当前显示场景对应的参数,计算虚拟对象命中目标对象需要的力度值,并提供可视化的提示供用户输入力度使用,可以减少用户估算力度需要的时间,加强用户估算力度的准确性,降低了用户的学习成本和操作难度,提升了交互场景下的用户体验度。
具体地,上述根据出射角度和当前显示场景对应的参数,计算虚拟对象命中目标对象需要的力度值包括:
(1)定义虚拟对象在运动过程中与目标对象处于相同高度时的水平坐标计算公式;计算公式包括当前场景的参数、出射角度和力度参数;
(2)通过二分法查找水平坐标计算公式的结果与目标对象的水平坐标相同时的力度参数;
(3)将力度参数作为力度值。
其中,以虚拟对象进行抛体运动为例进行物理计算,涉及到影响抛体运动的因素有风力,力度,角度,抛射物初始位置,重力加速度,空气阻力因素,质量,时间,目标对象的速度,其他阻力等。首先定义虚拟对象在抛体运动过程中与目标对象处于同一竖直高度时的水平坐标计算公式为f,水平坐标为pos,则有
pos=f(power,wind,angle,pos0,g,air,mass)
在公式中,power为力度,wind为风力,angle为角度,pos0为抛射物初始位置,g为重力加速度,air为空气阻力因素,mass为质量。其中风力为程序随机生成,力度和角度是用户输入,空气阻力因素是应用预先设定的值,质量也可以通过应用设置。其中pos在程序中可以分别取pos.x和pos.y,分别表示抛射物所在位置的水平坐标和竖直坐标。
上述步骤(2)通过二分法查找的步骤具体包括:
1.将第一值代入计算公式得到虚拟对象的水平坐标;第一值为力度参数最小值与最大值的中间值;
2.比较虚拟对象的水平坐标与目标对象的水平坐标;
3.当虚拟对象的水平坐标小于目标对象的水平坐标时,将第二值代入计算公式得到虚拟对象的水平坐标并进行比较步骤;第二值为第一值与最大值的中间值;
4.当虚拟对象的水平坐标大于目标对象的水平坐标时,将第三值代入计算公式得到虚拟对象的水平坐标并进行比较步骤;第三值为最小值与第一值的中间值;
5.当虚拟对象的水平坐标等于目标对象的水平坐标时,将当前值作为查找到的力度参数。
进一步,当通过二分法查找水平坐标计算公式的结果与目标对象的水平坐标相同时的力度参数超出当前显示场景对应的力度参数的范围时,在指定区域显示无结果提示消息。此时,在指定区域显示更改出射角度的提示。
为了便于理解,举例如下:
首先定义如下:
pos1=f(power1,wind,angle,pos0,g,air,mass);
pos2=f(power2,wind,angle,pos0,g,air,mass);
pos3=f(power3,wind,angle,pos0,g,air,mass);
power1=0;
power2=max_power/2;
power3=max_power;
其中max_poser为最大力度值。
利用公式计算出抛射物使用0力度,中间力度,最大力度做抛体运动与目标对象处于同一竖直高度时的位置pos1,pos2,pos3,定义目标对象的坐标为pos4,则有如下几种情况。
第一种是pos1.x>pos4.x,这时与目标对象过近或目标对象在初始位置的水平负方向,最小的0力度也无法命中目标对象,此时无解,提示用户在当前角度和风力的情况下,没有可以命中目标的力度值。
第二种是pos4.x>pos3.x,这时距离目标对象过远,最大力度也无法命中目标,此时也是无解,并提示用户。
第三种是|pos2.x-pos4.x|≤k,k为一个固定的误差值,当pos2在水平方向上的坐标与目标对象的水平方向坐标之间相差小于k时,认为两者差距可以忽略不计,pos2≈pos4,可以认为命中了目标对象。这时取pos2对应计算带入的power2,作为可以命中目标对象的力度值返回并提示用户,二分查找结束。
第四种情况是|pos2.x-pos4.x|>k,则这时因为大于固定的误差值,认为误差较大,没有命中目标对象,这时如果pos2.x>pos4.x,则可以得到命中目标的力度值必然在0度到power2之间,如果pos2.x<pos4.x,则可以得到命中目标的力度值必然在power2到power3之间。如果是命中目标的力度值必然在0度到power2之间,则power2的值改变为(power1+power2)/2,将power3的值改变为原power2,代入到前述的三个算式中,计算出新的pos1,pos2,pos3,再次进行比较,循环往复,直到误差值小于k找到命中目标对象的力度值为止。如果是命中目标的力度必然在power2到power3之间,则将power2的值改变为(power2+power3)/2,将power1的值改变为原power2,同理循环,直到找到命中目标对象的力度值为止。
本实施例提供的上述方法通过二分法查找虚拟对象命中目标对象需要的力度值,计算效率高,节省时间,省去了用户估算力度所需时间,根本上解决了用户估算力度不准确的问题。
实施例2
本发明实施例2提供了一种抛物线射击游戏的提示方法,应用了上述实施例中的方法,参见图6所示的流程示意图,具体包括如下步骤:
步骤s61,打开应用,并进入抛物线射击场景。
步骤s62,初始化重力加速度,空气阻力因素,抛射物质量,并随机生成风力。
步骤s63,用户选择出射角度。
在本实施例中,以用户输入出射角度为例进行说明。
步骤s64,计算抛射物命中目标对象所需力度。
步骤s65,判断是否有命中力度值。如果是,执行步骤s66;如果否,执行步骤s68。
步骤s66,显示力度提示线以提示用户上述力度值。
步骤s67,用户根据上述力度提示线输入力度。
步骤s68,提示用户当前出射角度下无法命中目标对象。此时用户需要重新选择出射角度。
本实施例提供的抛物线射击游戏的提示方法,在用户输入出射角度后,可以通过出射角度和当前显示场景对应的参数计算虚拟对象命中目标对象需要的力度值,并提供可视化的力度提示,减少用户估算力度需要的时间,提升了交互场景下的用户体验度。
实施例3
本发明实施例3提供了一种出射力度的提示装置,应用于处理器或者服务器,参见图7所示的结构示意图,包括出射角度获取模块310、力度值计算模块320和力度提示模块330,其中,各模块的功能如下:
出射角度获取模块310,用于获取当前显示场景中虚拟对象的出射角度;
力度值计算模块320,用于根据出射角度和当前显示场景对应的参数,计算虚拟对象命中目标对象需要的力度值;参数至少包括以下之一:虚拟对象的坐标、虚拟对象的质量、目标对象的坐标、目标对象的速度、重力加速度、阻力和风力;
力度提示模块330,用于在当前显示场景的指定区域显示力度值对应的力度提示信息。
参见图8所示的结构示意图,其中力度值计算模块320包括:
公式定义单元321,用于定义虚拟对象在运动过程中与目标对象处于相同高度时的水平坐标计算公式;计算公式包括当前场景的参数、出射角度和力度参数;
查找单元322,用于通过二分法查找水平坐标计算公式的结果与目标对象的水平坐标相同时的力度参数;
确定单元323,用于将力度参数作为力度值。
进一步,上述力度提示模块330还用于:根据力度值占力度最大值的比例确定力度值在力度控制区域对应的位置;在对应的位置显示力度提示符号;力度提示符号包括形状、颜色和/或数值。
进一步,上述力度提示模块330还用于:确定力度值在力度控制区域对应的刻度;在对应的刻度处显示力度提示符号;力度提示符号为提示刻度线。
进一步,还包括无结果提示模块,用于通过二分法查找水平坐标计算公式的结果与目标对象的水平坐标相同时的力度参数超出当前显示场景对应的力度参数的范围时,在指定区域显示无结果提示消息。
进一步,还包括更改角度提示模块,用于在指定区域显示更改出射角度的提示。
本发明实施例提供的出射力度的提示装置,可以通过出射角度和当前显示场景对应的参数,计算虚拟对象命中目标对象需要的力度值,并提供可视化的提示供用户输入力度使用,可以减少用户估算力度需要的时间,加强用户估算力度的准确性,降低了用户的学习成本和操作难度,提升了交互场景下的用户体验度。
参见图9,本发明实施例还提供一种虚拟对象的服务器100,包括:处理器90,存储器91,总线92和通信接口93,上述处理器90、通信接口93和存储器91通过总线92连接;处理器90用于执行存储器91中存储的可执行模块,例如计算机程序。
其中,存储器91可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口93(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。
总线92可以是isa总线、pci总线或eisa总线等。上述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器91用于存储程序,上述处理器90在接收到执行指令后,执行上述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器90中,或者由处理器90实现。
处理器90可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器90中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器90可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器91,处理器90读取存储器91中的信息,结合其硬件完成上述方法的步骤。
本发明实施例所提供的出射力度的提示方法和装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
上述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。