本发明涉及虚拟现实技术领域,尤其涉及一种玩家角色位置高低偏移实现方法、装置及相关产品。
背景技术:
现有技术中,光学动捕系统捕捉到的玩家角色位置信息,是以玩家在现实场地中的定位位置为标准,但是在虚拟现实游戏中玩家角色需要完成跳跃的效果,具体表现为实现玩家角色高低偏移的效果,譬如实现玩家角色上、下楼梯或者是坐电梯或从高处坠落等等。然而,由于现实场地中的玩家走的是平地,如果直接使用从动捕系统得到的数据就会表现为玩家角色站在平地上,无法满足上述虚拟现实游戏中实现玩家角色位置高低偏移的效果。
技术实现要素:
本发明的主要目的在于解决由于现有动捕系统无法满足上述虚拟现实游戏中实现玩家角色位置高低偏移的效果的技术问题。
为实现上述目的,本发明第一方面提供了一种玩家角色位置高低偏移实现方法,包括:
在预置高度发射一条追踪射线,所述预置高度高于玩家角色位置数据中用户坐标中的z轴数值,所述用户坐标中的z轴数值为当前玩家角色位置数据中世界坐标中的z轴数值与当前设置的玩家角色偏移高度之和,所述用户坐标为玩家角色在虚拟世界中的位置坐标,所述世界坐标为玩家角色在现实世界中的位置坐标;
通过所述追踪射线向下扫射以检测与所述追踪射线发生重叠的点,并获取对应的重叠点信息;
根据所述重叠点信息中的每一个重叠点的高度与当前设置的玩家角色偏移高度的对比结果,判定出所述重叠点信息中的有效重叠点;
获取所述有效重叠点中高度最高的有效重叠点,并将所述高度最高的有效重叠点对应的高度作为当前筛选出的适合偏移高度;
判断所述适合偏移高度是否高于所述当前设置的玩家角色偏移高度;
若所述适合偏移高度高于所述当前设置的玩家角色偏移高度,则将玩家角色的目标偏移高度设置为所述适合偏移高度;
对所述世界坐标中的z轴数值与所述玩家角色的偏移高度进行求和,得到对应的求和值;
将目标用户坐标中的z轴数值设置为所述求和值。
可选的,在本发明第一方面的另一种实现方式中,在所述判断所述适合偏移高度是否高于所述当前设置的玩家角色偏移高度之后,所述方法还包括:
若所述适合偏移高度低于所述当前设置的玩家角色偏移高度,则获取所述当前设置的玩家角色偏移高度与所述适合偏移高度的高度差值;
判断所述高度差值是否小于预设不发生变化的最小高度;
若所述高度差值小于所述预设不发生变化的最小高度,则将玩家角色的目标偏移高度设置为所述适合偏移高度。
可选的,在本发明第一方面的另一种实现方式中,在所述判断所述高度差值是否小于预设不发生变化的最小高度之后,所述方法还包括:
若所述高度差值大于所述预设不发生变化的最小高度,则将自由落体下坠的目标偏移高度设置为所述适合偏移高度;
根据当前下坠的速度、自由落体的加速度、预设下坠时间以及预置加速度位移计算公式计算出自由落体下坠的位移;
将所述当前设置的玩家角色偏移高度减去所述自由落体下坠的位移,得到对应的偏差值;
判断所述偏差值是否小于所述自由落体下坠的目标偏移高度;
若所述偏差值小于所述自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为所述自由落体下坠的目标偏移高度;
若所述偏差值大于所述自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为所述偏差值。
可选的,在本发明第一方面的另一种实现方式中,所述通过所述追踪射线向下扫射以检测与所述追踪射线发生重叠的点,并获取对应的重叠点信息,具体包括:
通过所述追踪射线进行向下扫射;
检测并获取与所述追踪射线发生重叠的物体数组的点信息;
遍历所述物体数组的点信息,得到每一个重叠点的各种信息的结构体,所述各种信息的结构体为重叠点信息。
可选的,在本发明第一方面的另一种实现方式中,所述根据所述重叠点信息中的每一个重叠点的高度与当前设置的玩家角色偏移高度的对比结果,判定出所述重叠点信息中的有效重叠点,具体包括:
判断每一个重叠点的高度是否高于所述用户坐标中的z轴数值;
若所述目标重叠点的高度低于所述用户坐标中的z轴数值,则判定所述目标重叠点为有效重叠点。
可选的,在本发明第一方面的另一种实现方式中,所述判断每一个重叠点的高度是否高于所述用户坐标中的z轴数值之后,还包括:
若判定出目标重叠点的高度高于所述用户坐标中的z轴数值,则计算所述目标重叠点的高度与所述用户坐标中的z轴数值的差值;
判断所述差值是否高于预设最高瞬间移动高度;
若所述差值高于预设最高瞬间移动高度,则判定所述目标重叠点不是有效重叠点;
若所述差值低于预设最高瞬间移动高度,则判定所述目标重叠点为有效重叠点。
可选的,在本发明第一方面的另一种实现方式中,在所述在预置高度发射一条追踪射线之前,所述方法还包括:
创建一个所述追踪射线对应的射线碰撞通道,所述射线碰撞通道用于定义可与所述追踪射线发生重叠的对应碰撞物体的属性条件;
对关于位置高低偏移和追踪射线检测的变量进行声明,所述位置高低偏移和追踪射线检测的变量包括射线起点高度、射线终点高度、玩家角色偏移高度、最高瞬间移动高度、不发生变化的最小高度、自由落体下坠的目标偏移高度、自由落体的加速度以及当前下坠的速度。
本发明第二方面提供了一种玩家角色位置高低偏移实现装置,包括:
追踪射线发射模块,用于在预置高度发射一条追踪射线,所述预置高度高于玩家角色位置数据中用户坐标中的z轴数值,所述用户坐标中的z轴数值为当前玩家角色位置数据中世界坐标中的z轴数值与当前设置的玩家角色偏移高度之和,所述用户坐标为玩家角色在虚拟世界中的位置坐标,所述世界坐标为玩家角色在现实世界中的位置坐标;
重叠点信息获取模块,用于通过所述追踪射线向下扫射以检测与所述追踪射线发生重叠的点,并获取对应的重叠点信息;
有效重叠点获取模块,用于根据所述重叠点信息中的每一个重叠点的高度与当前设置的玩家角色偏移高度的对比结果,判定出所述重叠点信息中的有效重叠点;
适合偏移高度获取模块,用于获取所述有效重叠点中高度最高的有效重叠点,并将所述高度最高的有效重叠点对应的高度作为当前筛选出的适合偏移高度;
第一判断模块,用于判断所述适合偏移高度是否高于所述当前设置的玩家角色偏移高度;
第一偏移高度设置模块,用于若所述适合偏移高度高于所述当前设置的玩家角色偏移高度,则将玩家角色的目标偏移高度设置为所述适合偏移高度;
求和模块,用于对所述世界坐标中的z轴数值与所述玩家角色的偏移高度进行求和,得到对应的求和值;
用户坐标设置模块,用于将目标用户坐标中的z轴数值设置为所述求和值。
可选的,在本发明第二方面的另一种实现方式中,所述装置还包括:
高度差值获取模块,用于若所述适合偏移高度低于所述当前设置的玩家角色偏移高度,则获取所述当前设置的玩家角色偏移高度与所述适合偏移高度的高度差值;
第二判断模块,用于判断所述高度差值是否小于预设不发生变化的最小高度;
第二偏移高度设置模块,用于若所述高度差值小于所述预设不发生变化的最小高度,则将玩家角色的目标偏移高度设置为所述适合偏移高度。
可选的,在本发明第二方面的另一种实现方式中,所述装置还包括:
自由落体下坠的目标偏移高度设置模块,用于若所述高度差值大于所述预设不发生变化的最小高度,则将自由落体下坠的目标偏移高度设置为所述适合偏移高度;
自由落体下坠位移计算模块,用于根据当前下坠的速度、自由落体的加速度、预设下坠时间以及预置加速度位移计算公式计算出自由落体下坠的位移;
偏差值获取模块,用于将所述当前设置的玩家角色偏移高度减去所述自由落体下坠的位移,得到对应的偏差值;
第三判断模块,用于判断所述偏差值是否小于所述自由落体下坠的目标偏移高度;
第三偏移高度设置模块,用于若所述偏差值小于所述自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为所述自由落体下坠的目标偏移高度;
第四偏移高度设置模块,用于若所述偏差值大于所述自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为所述偏差值。
可选的,在本发明第二方面的另一种实现方式中,所述重叠点信息获取模块具体用于:
通过所述追踪射线进行向下扫射;
检测并获取与所述追踪射线发生重叠的物体数组的点信息;
遍历所述物体数组的点信息,得到每一个重叠点的各种信息的结构体,所述各种信息的结构体为重叠点信息。
可选的,在本发明第二方面的另一种实现方式中,所述有效重叠点获取模块具体用于:
判断每一个重叠点的高度是否高于所述用户坐标中的z轴数值;
若所述目标重叠点的高度低于所述用户坐标中的z轴数值,则判定所述目标重叠点为有效重叠点。
可选的,在本发明第二方面的另一种实现方式中,所述有效重叠点获取模块具体还用于:
若判定出目标重叠点的高度高于所述用户坐标中的z轴数值,则计算所述目标重叠点的高度与所述用户坐标中的z轴数值的差值;
判断所述差值是否高于预设最高瞬间移动高度;
若所述差值高于预设最高瞬间移动高度,则判定所述目标重叠点不是有效重叠点;
若所述差值低于预设最高瞬间移动高度,则判定所述目标重叠点为有效重叠点。
可选的,在本发明第二方面的另一种实现方式中,所述装置还包括:
射线碰撞通道创建模块,用于创建一个所述追踪射线对应的射线碰撞通道,所述射线碰撞通道用于定义可与所述追踪射线发生重叠的对应碰撞物体的属性条件;
变量声明模块,用于对关于位置高低偏移和追踪射线检测的变量进行声明,所述位置高低偏移和追踪射线检测的变量包括射线起点高度、射线终点高度、玩家角色偏移高度、最高瞬间移动高度、不发生变化的最小高度、自由落体下坠的目标偏移高度、自由落体的加速度以及当前下坠的速度。
本发明第三方面提供了一种玩家角色位置高低偏移实现设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互联;所述至少一个处理器调用所述存储器中的所述指令,以使得所述玩家角色位置高低偏移实现设备执行上述第一方面所述的方法。
本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
本发明提供的技术方案中,在预置高度发射一条追踪射线,所述预置高度高于玩家角色位置数据中用户坐标中的z轴数值;通过所述追踪射线向下扫射以检测与所述追踪射线发生重叠的点,并获取对应的重叠点信息;根据所述重叠点信息中的每一个重叠点的高度与当前设置的玩家角色偏移高度的对比结果,判定出所述重叠点信息中的有效重叠点;获取所述有效重叠点中高度最高的有效重叠点,并将所述高度最高的有效重叠点对应的高度作为当前筛选出的适合偏移高度;判断所述适合偏移高度是否高于所述当前设置的玩家角色偏移高度;若所述适合偏移高度高于所述当前设置的玩家角色偏移高度,则将玩家角色的目标偏移高度设置为所述适合偏移高度;对所述世界坐标中的z轴数值与所述玩家角色的偏移高度进行求和,得到对应的求和值;将目标用户坐标中的z轴数值设置为所述求和值,本发明实施例实现了动捕系统的虚拟现实游戏中玩家角色位置高低偏移的效果。
附图说明
图1为本发明实施例中玩家角色位置高低偏移实现方法的一个实施例示意图;
图2为本发明实施例中玩家角色位置高低偏移实现方法的另一个实施例示意图;
图3为本发明实施例中玩家角色位置高低偏移实现装置的一个实施例示意图;
图4为本发明实施例中玩家角色位置高低偏移实现装置的另一个实施例示意图;
图5为本发明实施例中玩家角色位置高低偏移实现设备的一个实施例示意图。
具体实施方式
本发明实施例提供了一种玩家角色位置高低偏移实现方法、装置、设备及存储介质,用于实现动捕系统的虚拟现实游戏中玩家角色位置高低偏移的效果。
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例进行描述。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本发明实施例中,所述玩家角色位置高低偏移实现方法由计算机或服务器执行。
为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中玩家角色位置高低偏移实现方法的一个实施例包括:
101、在预置高度发射一条追踪射线,预置高度高于玩家角色位置数据中用户坐标中的z轴数值,用户坐标中的z轴数值为当前玩家角色位置数据中世界坐标中的z轴数值与当前设置的玩家角色偏移高度之和,用户坐标为玩家角色在虚拟世界中的位置坐标,世界坐标为玩家角色在现实世界中的位置坐标。
具体实施时,服务器通过调用接口函数multilinetracebychannel在预置高度发射一条追踪射线,预置高度高于玩家角色的头上,即预置高度高于玩家角色位置数据中用户坐标中的z轴数值。其中,玩家角色位置数据包括世界坐标和用户坐标,用户坐标为玩家角色在虚拟世界中的位置坐标,世界坐标为玩家角色在现实世界中的位置坐标,因此玩家角色位置数据中用户坐标中的z轴数值应为当前玩家角色位置数据中世界坐标中的z轴数值与当前设置的玩家角色偏移高度之和。譬如,玩家角色在虚拟游戏里平地站立是170cm、即现实世界中玩家角色的位置坐标中z值是170cm,由于虚拟游戏里楼梯等因素产生高度偏移,因此虚拟世界中玩家角色的位置坐标与其在现实世界中的位置坐标不一致,玩家角色在虚拟世界中的位置坐标要考虑高度偏移因素,因此若当前设置的玩家角色偏移高度为200cm,则玩家角色在虚拟世界中的位置是370cm的高度,即玩家角色的用户坐标中的z值为370cm。
进一步地,在步骤101之前,还包括:
创建一个追踪射线对应的射线碰撞通道,射线碰撞通道用于定义可与追踪射线发生重叠的对应碰撞物体的属性条件。
对关于位置高低偏移和追踪射线检测的变量进行声明,位置高低偏移和追踪射线检测的变量包括射线起点高度、射线终点高度、玩家角色偏移高度、最高瞬间移动高度、不发生变化的最小高度、自由落体下坠的目标偏移高度、自由落体的加速度以及当前下坠的速度。
具体的,譬如在游戏项目设置中服务器预先创建一个追踪射线的检测通道,该检测通道可以自定义物体在哪些属性条件的碰撞才可以和这条追踪射线发生重叠,然后声明一系列的关于位置高低偏移和追踪射线检测的变量:射线起点高度、射线终点高度、玩家角色偏移高度、最高瞬间移动高度、不发生变化的最小高度、自由落体下坠的目标偏移高度、自由落体的加速度以及当前下坠的速度。具体实施时,在玩家角色类里声明一个traceground函数,这个函数没有参数和返回值,通过traceground函数实现追踪射线检测、以及筛选适合偏移高度的功能,首先在traceground函数中声明两个局部变量:适合偏移高度和布尔变量,适合偏移高度用于表示当前筛选出适合偏移的高度,布尔变量用于表示当前的偏移高度是否是有效。
本发明通过在需要影响玩家角色偏移高度的物体的碰撞属性中勾选射线碰撞通道,从而创建对应追踪射线的检测通道,通过射线碰撞通道检测出与追踪射线发生重叠的物体,为进一步获取发生重叠的物体信息作好基础。
102、通过追踪射线向下扫射以检测与追踪射线发生重叠的点,并获取对应的重叠点信息。
具体的,服务器通过调用接口函数multilinetracebychannel发射的追踪射线,向下扫射以检测与追踪射线发生重叠的点,以获取对应的重叠点信息。具体实施时,接口函数multilinetracebychannel的返回值为多个重叠的物体数组的点信息,此外该接口函数有很多参数,在追踪射线检测发生重叠的物体时有用到的4个参数分别是射线起点、射线终点、射线碰撞通道、射线忽略自身。
进一步地,步骤102具体包括:
通过追踪射线进行向下扫射;
检测并获取与追踪射线发生重叠的物体数组的点信息;
遍历物体数组的点信息,得到每一个重叠点的各种信息的结构体,各种信息的结构体为重叠点信息。
具体实施时,服务器通过追踪射线进行向下扫射,首先确定射线起点高度和射线终点高度,射线起点高度是上述预置高度,即高于玩家角色在虚拟世界里用户坐标中的z值,射线终点高度是追踪射线向下扫射的终点在虚拟世界的位置坐标中的z值,然后在射线忽略自身参数的布尔变量上设置为真,即使该追踪射线将不会检测玩家角公自身的重叠。进一步地通过函数multilinetracebychannel的返回值中获取到所有的发生重叠的物体数组的点信息,物体数组的点信息包括每一个发生重叠的物体的信息结构体,即每一个重叠点的各种信息的结构体,并通过物体数组的点信息,得到每一个重叠点的各种信息的结构体,各种信息的结构体为重叠点信息。本发明该步骤实现了获取所有与追踪射线发生重叠的点以及对应的重叠点信息,对需影响高度偏移的位置中玩家角色周围环境可能发生的物体碰撞进行检测识别以及碰撞物体信息获取。
103、根据重叠点信息中的每一个重叠点的高度与当前设置的玩家角色偏移高度的对比结果,判定出重叠点信息中的有效重叠点。
进一步地,步骤103具体包括:
判断每一个重叠点的高度是否高于用户坐标中的z轴数值。
若目标重叠点的高度低于用户坐标中的z轴数值,则判定目标重叠点为有效重叠点。
若判定出目标重叠点的高度高于用户坐标中的z轴数值,则计算目标重叠点的高度与用户坐标中的z轴数值的差值。
判断差值是否高于预设最高瞬间移动高度。
若差值高于预设最高瞬间移动高度,则判定目标重叠点不是有效重叠点。
若差值低于预设最高瞬间移动高度,则判定目标重叠点为有效重叠点。
具体实施时,服务器首先判断每一个重叠点的高度是否比玩家角色当前在虚拟游戏中的高度高,即比用户坐标中的z轴数值高,在此分两种情况:若某一重叠点,譬如射线碰到楼梯的点,该重叠点的高度比玩家角色当前在虚拟游戏中的高度低,说明玩家角色将要向下走,则该目标重叠点是有效重叠点;若该重叠点的高度比玩家角色当前在虚拟游戏中的高度高,说明玩家角色将要向上走。判断出该重叠点的高度比玩家角色当前在虚拟游戏中的高度高时,需进一步地判断高了多少、即目标重叠点的高度与用户坐标中的z轴数值的差值,并且当判定出该差值高于预设最高瞬间移动高度时、则判断该重叠点不是有效点,因为最高瞬间移动高度是限制玩家角色跳跃的瞬间最高高度值、即玩家角色不能一瞬间走太高或跳太高,因此当判定出该差值低于预设最高瞬间移动高度时、则判定该重叠点为有效重叠点。
具体的,通过判断上述重叠点信息中的每一个重叠点的高度与当前设置的玩家角色偏移高度进行对比,并通过对比结果判定出重叠点信息中的有效重叠点,本发明获取有效重叠点为玩家角色实现高、低偏移过程中,追踪射线与物体发生有效碰撞的重叠点,通过有效重叠点能进行适合偏移高度筛选。
104、获取有效重叠点中高度最高的有效重叠点,并将高度最高的有效重叠点对应的高度作为当前筛选出的适合偏移高度。
进一步的,在该步骤具体实施时,服务器还可以对有效重叠点中是否存在高度最高的有效重叠点进行判断;若存在高度最高的有效重叠点,则将高度最高的有效重叠点对应的高度作为当前筛选出的适合偏移高度,并将用于表示当前的偏移高度是否是有效的布尔变量设置为真,并继续执行步骤105;若不存在高度最高的有效重叠点,则结束进程,即跳出traceground函数。
可见,在判定出有效重叠点后,服务器获取这些有效重叠点中高度最高的有效重叠点,并将该高度最高的有效重叠点对应的高度作为当前筛选出的适合偏移高度,该适合偏移高度可以作为玩家角色的目标偏移高度的设置值,至于是否直接将该适合偏移高度作为目标偏移高度的设置值,则需要作进一步判断。
105、判断适合偏移高度是否高于当前设置的玩家角色偏移高度。
具体的,在确定适合偏移高度后,服务器进一步判断适合偏移高度是否高于当前设置的玩家角色偏移高度,通过对比结果作下一步操作。
106、若适合偏移高度高于当前设置的玩家角色偏移高度,则将玩家角色的目标偏移高度设置为适合偏移高度。
具体的,若判定出适合偏移高度高于当前设置的玩家角色偏移高度,则将玩家角色的目标偏移高度设置为适合偏移高度。
具体实施时,假如适合偏移高度存在,接下来则判断适合偏移高度是否高于当前设置的玩家角色偏移高度,如果高于,则直接将玩家角色的目标偏移高度设置为适合偏移高度的值,譬如该适合偏移高度为400cm。
107、对世界坐标中的z轴数值与玩家角色的偏移高度进行求和,得到对应的求和值。
具体的,服务器进一步对世界坐标中的z轴数值与玩家角色的偏移高度进行求和,得到对应的求和值,譬如上述该玩家角色的世界坐标中的z轴数值为170cm,则对应求和值为570cm。
108、将目标用户坐标中的z轴数值设置为求和值。
具体的,服务器进一步将玩家角色在虚拟世界里的位置坐标,即目标用户坐标中的z轴数值修改为求和值,则玩家角色的用户坐标中的z轴数值修改为570cm,可见玩家角色的用户坐标中的z轴数值由370cm变更为570cm,则可以实现玩家角色向上偏移的效果。
综上,本发明实施例通过在预设高度位置发射一条追踪射线,这条追踪射线向下扫射以检测到所有与追踪射线重叠得到的物体数组,再依次对物体数组中的这些物体进行判断,并且若是往上走则设置一个向上走的最高距离,进一步地求出玩家角色的适合偏移高度,通过重新设置玩家角色在虚拟世界中的z轴数值,从而实现了动捕系统的虚拟现实游戏中玩家角色位置向高偏移的效果。
进一步地,请参阅图2,本发明实施例中玩家角色位置高低偏移实现方法的另一个实施例中,还包括:
201、在预置高度发射一条追踪射线,预置高度高于玩家角色位置数据中用户坐标中的z轴数值,用户坐标中的z轴数值为当前玩家角色位置数据中世界坐标中的z轴数值与当前设置的玩家角色偏移高度之和,用户坐标为玩家角色在虚拟世界中的位置坐标,世界坐标为玩家角色在现实世界中的位置坐标。
202、通过追踪射线向下扫射以检测与追踪射线发生重叠的点,并获取对应的重叠点信息。
203、根据重叠点信息中的每一个重叠点的高度与当前设置的玩家角色偏移高度的对比结果,判定出重叠点信息中的有效重叠点。
204、获取有效重叠点中高度最高的有效重叠点,并将高度最高的有效重叠点对应的高度作为当前筛选出的适合偏移高度。
205、判断适合偏移高度是否高于当前设置的玩家角色偏移高度。
206、若适合偏移高度高于当前设置的玩家角色偏移高度,则将玩家角色的目标偏移高度设置为适合偏移高度。
207、对世界坐标中的z轴数值与玩家角色的偏移高度进行求和,得到对应的求和值。
208、将目标用户坐标中的z轴数值设置为求和值。
具体的,步骤201-208的具体实施描述参照步骤101-108,在此不作赘述。
在步骤205之后,玩家角色位置高低偏移实现方法还包括:
209、若适合偏移高度低于当前设置的玩家角色偏移高度,则获取当前设置的玩家角色偏移高度与适合偏移高度的高度差值。
具体的,当服务器判定出适合偏移高度低于当前设置的玩家角色偏移高度,譬如适合偏移高度为100cm,上述当前设置的玩家角色偏移高度为200cm,则将当前设置的玩家角色偏移高度减去适合偏移高度,以获取当前设置的玩家角色偏移高度与适合偏移高度的高度差值100cm。
210、判断高度差值是否小于预设不发生变化的最小高度。
具体的,服务器继续判断高度差值是否小于预设不发生变化的最小高度,譬如将预设不发生变化的最小高度与上述得到的高度差值100cm进行对比,本发明该预设不发生变化的最小高度根据具体需求而设定。
211、若高度差值小于预设不发生变化的最小高度,则将玩家角色的目标偏移高度设置为适合偏移高度。
具体的,譬如,服务器判定出高度差值100cm小于预设不发生变化的最小高度,则将玩家角色的目标偏移高度设置为适合偏移高度,并对世界坐标中的z轴数值与玩家角色的偏移高度进行求和,譬如世界坐标中的z轴数值170cm加上高度差值100cm,得到对应的求和值270cm;并进一步地将目标用户坐标中的z轴数值设置为求和值,即将玩家角色的用户坐标中的z轴数值设置为270cm,由于玩家角色的用户坐标中的z轴数值由370cm降为270cm,可以实现在虚拟世界中玩家角色向下偏移的效果。
212、若高度差值大于预设不发生变化的最小高度,则将自由落体下坠的目标偏移高度设置为适合偏移高度。
进一步地,若高度差值大于预设不发生变化的最小高度,则让玩家角色自由落体运动,并将自由落体下坠的目标偏移高度设置为适合偏移高度。
213、根据当前下坠的速度、自由落体的加速度、预设下坠时间以及预置加速度位移计算公式计算出自由落体下坠的位移。
进一步地,根据步骤212可知,要让玩家角色自由落体运动,则需要根据当前下坠的速度、自由落体的加速度、预设下坠时间以及预置加速度位移计算公式计算出自由落体下坠的位移,服务器在玩家角色类里声明一个tofalling函数,以实现玩家角色的自由落体下坠,其参数为一个代表上一帧执行的时间变量。具体的通过以下公式计算自由落体下坠的位移:
214、将当前设置的玩家角色偏移高度减去自由落体下坠的位移,得到对应的偏差值。
进一步地,还将当前设置的玩家角色偏移高度减去自由落体下坠的位移,得到对应的偏差值。
215、判断偏差值是否小于自由落体下坠的目标偏移高度。
具体实施时,譬如若上述得到自由落体下坠的目标偏移高度为-100cm、自由落体下坠的位移400cm,若将当前设置的玩家角色偏移高度200cm减去自由落体下坠的位移400cm,得到对应的偏差值-200cm,则可以判断出偏差值-200cm小于自由落体下坠的目标偏移高度-100cm。
216、若偏差值小于自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为自由落体下坠的目标偏移高度。
进一步地,若服务器判定出偏差值小于自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为自由落体下坠的目标偏移高度-100cm,世界坐标中的z轴数值170cm加上目标偏移高度-100cm,得到对应的求和值70cm;并进一步地将目标用户坐标中的z轴数值设置为求和值,即将玩家角色的用户坐标中的z轴数值设置为70cm,由于玩家角色的用户坐标中的z轴数值由370cm降为70cm,可以实现在虚拟世界中玩家角色自由落体下坠的效果。
217、若偏差值大于自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为偏差值。
进一步地,若服务器判定出偏差值大于自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为偏差值。譬如,若上述得到自由落体下坠的目标偏移高度为-300cm、自由落体下坠的位移400cm,若将当前设置的玩家角色偏移高度200cm减去自由落体下坠的位移400cm,得到对应的偏差值-200cm,则可以判断出偏差值-200cm大于自由落体下坠的目标偏移高度-300cm。则将玩家角色的目标偏移高度设置为自由落体下坠的目标偏移高度-300cm,世界坐标中的z轴数值170cm加上目标偏移高度-300cm,得到对应的求和值-230cm;并进一步地将目标用户坐标中的z轴数值设置为求和值,即将玩家角色的用户坐标中的z轴数值设置为-230cm,由于玩家角色的用户坐标中的z轴数值由370cm降为-230cm,也同样实现在虚拟世界中玩家角色自由落体下坠的效果。本发明具体实施时,上述tofalling函数和traceground函数,通过在玩家角色类中的tick函数调用。
由上可见,本发明玩家角色位置高低偏移实现方法通过在预设高度位置发射一条追踪射线,这条追踪射线向下扫射以检测到所有与追踪射线重叠得到的物体数组,再依次对物体数组中的这些物体进行判断,从而设置玩家角色的目标偏移高度,并且根据目标偏移高度通过修改玩家角色在虚拟世界中的用户坐标的z轴数值,以实现了动捕系统的虚拟现实游戏中玩家角色位置高低偏移的效果。
上面对本发明实施例中玩家角色位置高低偏移实现方法进行了描述,下面对本发明实施例中玩家角色位置高低偏移实现装置进行描述,请参阅图3,本发明实施例中玩家角色位置高低偏移实现装置的一个实施例包括:
301、追踪射线发射模块,用于在预置高度发射一条追踪射线,预置高度高于玩家角色位置数据中用户坐标中的z轴数值,用户坐标中的z轴数值为当前玩家角色位置数据中世界坐标中的z轴数值与当前设置的玩家角色偏移高度之和,用户坐标为玩家角色在虚拟世界中的位置坐标,世界坐标为玩家角色在现实世界中的位置坐标;
302、重叠点信息获取模块,用于通过追踪射线向下扫射以检测与追踪射线发生重叠的点,并获取对应的重叠点信息;
303、有效重叠点获取模块,用于根据重叠点信息中的每一个重叠点的高度与当前设置的玩家角色偏移高度的对比结果,判定出重叠点信息中的有效重叠点;
304、适合偏移高度获取模块,用于获取有效重叠点中高度最高的有效重叠点,并将高度最高的有效重叠点对应的高度作为当前筛选出的适合偏移高度;
305、第一判断模块,用于判断适合偏移高度是否高于当前设置的玩家角色偏移高度;
306、第一偏移高度设置模块,用于若适合偏移高度高于当前设置的玩家角色偏移高度,则将玩家角色的目标偏移高度设置为适合偏移高度;
307、求和模块,用于对世界坐标中的z轴数值与玩家角色的偏移高度进行求和,得到对应的求和值;
308、用户坐标设置模块,用于将目标用户坐标中的z轴数值设置为求和值。
可选的,如图4所示,本发明实施例中玩家角色位置高低偏移实现装置的另一个实施例包括:
401、追踪射线发射模块,用于在预置高度发射一条追踪射线,预置高度高于玩家角色位置数据中用户坐标中的z轴数值,用户坐标中的z轴数值为当前玩家角色位置数据中世界坐标中的z轴数值与当前设置的玩家角色偏移高度之和,用户坐标为玩家角色在虚拟世界中的位置坐标,世界坐标为玩家角色在现实世界中的位置坐标;
402、重叠点信息获取模块,用于通过追踪射线向下扫射以检测与追踪射线发生重叠的点,并获取对应的重叠点信息;
403、有效重叠点获取模块,用于根据重叠点信息中的每一个重叠点的高度与当前设置的玩家角色偏移高度的对比结果,判定出重叠点信息中的有效重叠点;
404、适合偏移高度获取模块,用于获取有效重叠点中高度最高的有效重叠点,并将高度最高的有效重叠点对应的高度作为当前筛选出的适合偏移高度;
405、第一判断模块,用于判断适合偏移高度是否高于当前设置的玩家角色偏移高度;
406、第一偏移高度设置模块,用于若适合偏移高度高于当前设置的玩家角色偏移高度,则将玩家角色的目标偏移高度设置为适合偏移高度;
407、求和模块,用于对世界坐标中的z轴数值与玩家角色的偏移高度进行求和,得到对应的求和值;
408、用户坐标设置模块,用于将目标用户坐标中的z轴数值设置为求和值。
409、高度差值获取模块,用于若适合偏移高度低于当前设置的玩家角色偏移高度,则获取当前设置的玩家角色偏移高度与适合偏移高度的高度差值;
410、第二判断模块,用于判断高度差值是否小于预设不发生变化的最小高度;
411、第二偏移高度设置模块,用于若高度差值小于预设不发生变化的最小高度,则将玩家角色的目标偏移高度设置为适合偏移高度。
412、自由落体下坠的目标偏移高度设置模块,用于若高度差值大于预设不发生变化的最小高度,则将自由落体下坠的目标偏移高度设置为适合偏移高度;
413、自由落体下坠位移计算模块,用于根据当前下坠的速度、自由落体的加速度、预设下坠时间以及预置加速度位移计算公式计算出自由落体下坠的位移。
414、偏差值获取模块,用于将当前设置的玩家角色偏移高度减去自由落体下坠的位移,得到对应的偏差值;
415、第三判断模块,用于判断偏差值是否小于自由落体下坠的目标偏移高度;
416、第三偏移高度设置模块,用于若偏差值小于自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为自由落体下坠的目标偏移高度;
417、第四偏移高度设置模块,用于若偏差值大于自由落体下坠的目标偏移高度,则将玩家角色的目标偏移高度设置为偏差值。
可选的,在本发明实施例中玩家角色位置高低偏移实现装置的另一个实施例中,重叠点信息获取模块具体用于:
通过追踪射线进行向下扫射;
检测并获取与追踪射线发生重叠的物体数组的点信息;
遍历物体数组的点信息,得到每一个重叠点的各种信息的结构体,各种信息的结构体为重叠点信息。
可选的,在本发明实施例中玩家角色位置高低偏移实现装置的另一个实施例中,有效重叠点获取模块具体用于:
判断每一个重叠点的高度是否高于用户坐标中的z轴数值;
若目标重叠点的高度低于用户坐标中的z轴数值,则判定目标重叠点为有效重叠点。
可选的,在本发明实施例中玩家角色位置高低偏移实现装置的另一个实施例中,有效重叠点获取模块具体还用于:
若判定出目标重叠点的高度高于用户坐标中的z轴数值,则计算目标重叠点的高度与用户坐标中的z轴数值的差值;
判断差值是否高于预设最高瞬间移动高度;
若差值高于预设最高瞬间移动高度,则判定目标重叠点不是有效重叠点;
若差值低于预设最高瞬间移动高度,则判定目标重叠点为有效重叠点。
可选的,在本发明实施例中玩家角色位置高低偏移实现装置的另一个实施例中,装置还包括:
射线碰撞通道创建模块,用于创建一个追踪射线对应的射线碰撞通道,射线碰撞通道用于定义可与追踪射线发生重叠的对应碰撞物体的属性条件;
变量声明模块,用于对关于位置高低偏移和追踪射线检测的变量进行声明,位置高低偏移和追踪射线检测的变量包括射线起点高度、射线终点高度、玩家角色偏移高度、最高瞬间移动高度、不发生变化的最小高度、自由落体下坠的目标偏移高度、自由落体的加速度以及当前下坠的速度。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置或系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
上面图3和图4从模块化功能实体的角度对本发明实施例中的玩家角色位置高低偏移实现装置进行详细描述,下面从硬件处理的角度对本发明实施例中玩家角色位置高低偏移实现设备进行详细描述。
图5是本发明实施例提供的一种玩家角色位置高低偏移实现设备的结构示意图,该玩家角色位置高低偏移实现设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)501(例如,一个或一个以上处理器)和存储器509,一个或一个以上存储应用程序507或数据506的存储介质508(例如一个或一个以上海量存储设备)。其中,存储器509和存储介质508可以是短暂存储或持久存储。存储在存储介质508的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对图计算的布尔型变量存储中的一系列指令操作。更进一步地,处理器501可以设置为与存储介质508通信,在玩家角色位置高低偏移实现设备500上执行存储介质508中的一系列指令操作。
玩家角色位置高低偏移实现设备500还可以包括一个或一个以上电源502,一个或一个以上有线或无线网络接口503,一个或一个以上输入输出接口504,和/或,一个或一个以上操作系统505,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图5中示出的玩家角色位置高低偏移实现设备结构并不构成对玩家角色位置高低偏移实现设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。