发明内容
本发明旨在至少在一定程度上解决相关技术中的技术问题之一。为此,本发明的目的是提供一种优化手柄移动映射到鼠标移动的转换灵敏度的方法、装置、设备和存储介质。
本发明所采用的技术方案是:
第一方面,本发明提供一种手柄映射到鼠标灵敏度的优化方法,包括:
获取手柄上摇杆的位移量;
根据手柄鼠标映射公式、预设优化方法和所述摇杆的位移量获得映射后的鼠标的相对位移量;
所述手柄鼠标映射公式的参数包括预设缩放值和预设位移比例函数;
所述预设优化方法为:根据鼠标位置改变所述预设缩放值,和/或,
改变所述预设位移比例函数为非线性预设位移比例函数,使得不同手柄操作状态对应不同的鼠标灵敏度。
进一步地,所述手柄鼠标映射公式表示如下:
mouse_x=mouse_scale*Function(mouse_x_asix)
mouse_x_asix=JoystickGetAxis(x_asix)
mouse_y=mouse_scale*Function(mouse_y_asix)
mouse_y_asix=JoystickGetAxis(y_asix)
其中,mouse_scale表示预设缩放值,Function()表示预设位移比例函数,mouse_x表示x轴方向鼠标的相对位移量,mouse_y表示y轴方向鼠标的相对位移量,mouse_x_asix表示x轴方向手柄摇杆的位移比例,mouse_y_asix表示y轴方向手柄摇杆的位移比例,x_asix表示x轴方向手柄摇杆的位移量,y_asix表示y轴方向手柄摇杆的位移量。
进一步地,所述根据鼠标位置改变所述预设缩放值具体为:
当鼠标位置位于高灵敏度区域时,减小所述预设缩放值;
当鼠标位置位于低灵敏度区域时,增大所述预设缩放值。
进一步地,非线性预设位移比例函数为平方函数。
进一步地,还包括步骤:
根据所述鼠标相对位移量得到鼠标在屏幕上的绝对坐标,表示为:
curr_mouse_x+=mouse_x
curr_mouse_y+=mouse_y
其中,curr_mouse_x表示x轴方向鼠标的绝对坐标,curr_mouse_y表示y轴方向鼠标的绝对坐标。
第二方面,本发明还提供一种手柄映射到鼠标灵敏度的优化装置,包括:
获取手柄摇杆位移量装置,用于获取手柄上摇杆的位移量;
获取鼠标的相对位移量装置,用于根据手柄鼠标映射公式选择预设优化方法,根据所述位移量获得映射后的鼠标的相对位移量;
获取鼠标绝对坐标装置,用于根据所述鼠标相对位移量得到鼠标在屏幕上的绝对坐标;
所述手柄鼠标映射公式的参数包括预设缩放值和预设位移比例函数;
所述预设优化方法为:
根据鼠标位置改变所述预设缩放值,和/或,
改变所述预设位移比例函数为非线性预设位移比例函数,使得不同手柄操作状态对应不同的鼠标灵敏度。
第三方面,本发明提供一种手柄映射到鼠标灵敏度的优化设备,包括:
至少一个处理器,以及与所述至少一个处理器通信连接的存储器;
其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如第一方面任一项所述的方法。
第四方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一项所述的方法。
本发明的有益效果是:
本发明通过获取手柄上摇杆的位移量,根据手柄鼠标映射公式、预设优化方法和所述摇杆的位移量获得映射后的鼠标的相对位移量,其中手柄鼠标映射公式的参数包括预设缩放值和预设位移比例函数,预设优化方法为:根据鼠标位置改变预设缩放值和/或改变预设位移比例函数为非线性预设位移比例函数,使得不同手柄操作状态对应不同的鼠标灵敏度,通过调整预设缩放值或调整预设位移比例函数,优化手柄事件转换成鼠标事件的灵敏度,克服了现有技术中由于游戏手柄的硬件稳定性不如鼠标,较小的摇杆动作都可能产生较大的鼠标位移,或者摇杆灵敏度低时,用户觉得很难操控的问题,优化了手柄事件转换为鼠标事件的灵敏度,扩大云游戏内容的广泛性,降低了云游戏的运营成本。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。
本发明优化了手柄事件转换为鼠标事件的灵敏度和准确度,扩大云游戏内容的广泛性,降低了云游戏的运营成本。
常见的网页游戏的缺省操作设备是鼠标和键盘,其依靠鼠标的精确点击和预先定义的键盘快捷键来进行游戏操作信息输入,但是如果没有键盘,仍可以通过鼠标选择来完成所有操作,因此页游的最少输入设备是鼠标,因此需要完成将手柄事件转换为鼠标事件。
实施例一提供一种手柄映射到鼠标灵敏度的优化方法。图1为本发明实施例提供的一种手柄映射到鼠标灵敏度的优化方法的实现流程图,如图1所示,该方法可以包括以下步骤:
S1:获取手柄上摇杆的位移量,手柄通过将左摇杆(或右摇杆)的移动映射为鼠标位置的移动,即将手柄上的某两个按键映射为鼠标左键和右键,因此需要获取手柄上摇杆的位移量。
S2:根据手柄鼠标映射公式、预设优化方法和所述摇杆的位移量获得映射后的鼠标的相对位移量,这里手柄鼠标映射公式的参数包括预设缩放值和预设位移比例函数,预设优化方法为:根据鼠标位置改变预设缩放值和/或改变预设位移比例函数为非线性预设位移比例函数,使得不同手柄操作状态对应不同的鼠标灵敏度。
S3:根据鼠标相对位移量得到鼠标在屏幕上的绝对坐标,即根据鼠标的相对位移量和鼠标前一时刻的位置获取鼠标在屏幕上的实时移动坐标。
手柄鼠标映射公式指将手柄事件映射成鼠标事件的实现方式,表示为:
mouse_x=mouse_scale*Function(mouse_x_asix)
mouse_x_asix=JoystickGetAxis(x_asix)
mouse_y=mouse_scale*Function(mouse_y_asix)
mouse_y_asix=JoystickGetAxis(y_asix)
curr_mouse_x+=mouse_x
curr_mouse_y+=mouse_y
其中:
mouse_scale表示预设缩放值;
Function()表示预设位移比例函数;
mouse_x表示x轴方向鼠标的相对位移量,以像素为单位;
mouse_y表示y轴方向鼠标的相对位移量,以像素为单位;
mouse_x_asix表示x轴方向手柄摇杆的位移比例;
mouse_y_asix表示y轴方向手柄摇杆的位移比例;
x_asix表示x轴方向手柄摇杆的位移量;
y_asix表示y轴方向手柄摇杆的位移量;
curr_mouse_x表示x轴方向鼠标的绝对坐标,以像素为单位;
curr_mouse_y表示y轴方向鼠标的绝对坐标,以像素为单位。
通过位移比例函数和手柄摇杆在不同坐标轴的位移量,能够得到手柄摇杆在不同坐标轴上的位移比例,例如通过JoystickGetAxis(x_asix)得到mouse_x_asix,表示当前x轴方向手柄摇杆的位移比例,本实施例中定义其取值范围为[-1,1],当其值为0时,表示手柄未移动,当其值为-1时,表示手柄摇杆移动到最左边,当其值为1时,表示手柄摇杆移动到最右边,当手柄摇杆向上时,其值为正,当手柄摇杆向下时,其值为负,类似的,JoystickGetAxis(y_asix)表示当前手柄摇杆在Y轴上的位移比例。
预设缩放值mouse_scale用来表示手柄摇杆位移量到屏幕像素之间的缩放值,将手柄摇杆在不同坐标轴上的位移比例转换成[-mouse_scale,mouse_scale]之间的一个整数值,当mouse_scale较大时,较小的摇杆动作下,都可以产生较大的鼠标位移,此时用户会觉得手柄很难操作,反之,当mouse_scale较小时,用户会感觉操作滞后,以较大幅度推动摇杆都不能快速的移动到期望位置,因此mouse_scale反映了手柄事件到鼠标事件映射的灵敏度。
另外,当位移比例比较小时,例如手柄设备的微小漂移,即便用户不操作手柄,位移比例也不为0,此时转换后可能不足1个像素,因此可以忽略这种微小漂移的情况。
本实施例中,根据鼠标位置改变所述预设缩放值具体指:根据当前应用场景和鼠标位置选取不同的预设缩放值,当鼠标操作位置位于高灵敏度区域时,减小所述预设缩放值;当鼠标操作位置位于低灵敏度区域时,增大所述预设缩放值。
如图2所示,为本实施例中鼠标操作区域示意图,通过鼠标位置判断操作区域,例如用户游戏过程中包括多种不同的游戏场景下有不同的操作区域,如菜单选择区域、人物操作区域等,菜单选择区域一般范围较小,图中示出了菜单选择区域1、菜单选择区域2、菜单选择区域3、人物操作区域等,其中菜单选择区域1、菜单选择区域2、菜单选择区域3均属于高灵敏度区域,人物操作区域属于低灵敏度区域,当然灵敏度高低是相对的。
因此本实施例在图2这种场景下,在菜单选择区域中采用较小的预设缩放值mouse_scale,防止用户操作摇杆进行菜单选择时,还未完成选择即跳出菜单区域,其他的区域,如人物操作区域,采用较大的预设缩放值mouse_scale,可将其设定为缺省的预设缩放值,即根据鼠标所在的不同灵敏度要求的区域,定义多个级别的预设缩放值,以满足不同区域的精度要求,此时mouse_scale不再是一个固定值,而是一个根据当前应用场景和鼠标位置变化的值。
本实施例中,改变预设位移比例函数为非线性预设位移比例函数,使得不同手柄操作状态对应不同的鼠标灵敏度,具体指:预设位移比例函数采用非线性位移比例函数,下面就非线性预设位移比例函数为平方函数为例,但是并非只有平方函数一种非线性位移比例函数。
本实施例中,定义位移比例函数如下:
v=JoystickGetAxis(x_asix)
Function(v)=sign(v)*v*v
mouse_x=mouse_scale*Function(v)
即将预设位移比例函数转换为平方输出的非线性函数,优势在于,当用户轻触摇杆,导致位移比例v较小时,计算抑制鼠标的相对位移量mouse_x,使得输出的鼠标相对位移量降低,避免用户稍一触碰手柄,鼠标位移就偏大,造成的鼠标漂移,当用户用力推动摇杆,导致位移比例v较大时,计算结果增大鼠标的相对位移量mouse_x,使得输出的鼠标相对位移量快速增加,鼠标能够快速移动到用户的期望位置。
采用非线性位移函数能够达到的效果是,当用户的手柄操作状态是大力摇动时,增大转换后的鼠标位移量,类似于增大灵敏度,当用户的手柄操作状态是轻微摇动时,减小转换后的鼠标位移量,类似于降低灵敏度。
如图3所示,为不同预设位移比例函数效果示意图,图中可见,虚线为非线性位移比例函数,实现为线性位移比例函数,纵轴表示X轴鼠标的相对位移量,横轴表示位移比例,在区间[0,0.667]之间时,非线性预设位移比例函数的X轴鼠标的相对位移量小于线性预设位移比例函数的X轴鼠标的相对位移量,而在[0.667,1]区间,非线性预设位移比例函数的X轴鼠标的相对位移量大于线性预设位移比例函数的X轴鼠标的相对位移量,即当用户轻触摇杆时,输出的鼠标相对位移量降低,当用户用力推动摇杆时,输出的鼠标的相对位移量增大,提高了使用灵敏度。
实施例二:
如图4所示,为本实施例的一种手柄映射到鼠标灵敏度的优化装置结构框图,包括:
获取手柄摇杆位移量装置,用于获取手柄上摇杆的位移量;
获取鼠标的相对位移量装置,用于根据手柄鼠标映射公式选择预设优化方法,根据所述位移量获得映射后的鼠标的相对位移量;
获取鼠标绝对坐标装置,用于根据所述鼠标相对位移量得到鼠标在屏幕上的绝对坐标;
手柄鼠标映射公式的参数包括预设缩放值和预设位移比例函数;
预设优化方法为:根据鼠标位置改变预设缩放值,和/或,改变预设位移比例函数为非线性预设位移比例函数,使得不同手柄操作状态对应不同的鼠标灵敏度。
另外,本发明还提供一种手柄映射到鼠标灵敏度的优化设备,包括:
至少一个处理器,以及与所述至少一个处理器通信连接的存储器;
其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如实施例一所述的方法。
另外,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,其中计算机可执行指令用于使计算机执行如实施例一所述的方法。
本发明通过获取手柄上摇杆的位移量,根据手柄鼠标映射公式、预设优化方法和所述摇杆的位移量获得映射后的鼠标的相对位移量,其中手柄鼠标映射公式的参数包括预设缩放值和预设位移比例函数,预设优化方法为:根据鼠标位置改变预设缩放值和/或改变预设位移比例函数为非线性预设位移比例函数,使得不同手柄操作状态对应不同的鼠标灵敏度,通过调整预设缩放值或调整预设位移比例函数,优化手柄事件转换成鼠标事件的灵敏度,克服了现有技术中由于游戏手柄的硬件稳定性不如鼠标,较小的摇杆动作都可能产生较大的鼠标位移,或者摇杆灵敏度低时,用户觉得很难操控的问题,优化了手柄事件转换为鼠标事件的灵敏度,扩大云游戏内容的广泛性,提升了用户手柄使用满意度。
以上各实施例仅用以说明本发明的技术方案,而非对其限制,尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。