本申请涉及计算机技术领域,特别是涉及一种游戏区域的目标点检测方法、装置、计算机可读存储介质和计算机设备。
背景技术:
在虚拟场景中,虚拟对象可通过释放钩锁等工具,飞跃到游戏区域上。传统的方式是在虚拟场景中预先放置碰撞器,该碰撞器中预先设置了立足点,当虚拟对象释放钩锁,且该钩锁碰到碰撞器时,将碰撞器中距离碰撞位置最近的立足点作为虚拟对象的立足点。
但是,传统的方式需要设置立足点以及放置碰撞器,然而虚拟场景复杂多变,巨大的工作量很容易出错,比如由于人工失误,将不可立足的点设置在碰撞器中,导致虚拟对象使用工具后卡在虚拟场景中。
技术实现要素:
基于此,有必要针对传统的目标点检测方法检测得到的目标点不准确的技术问题,提供一种能准确检测目标点的游戏区域的目标点检测方法、装置、计算机可读存储介质和计算机设备。
一种游戏区域的目标点检测方法,包括:
获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向;
以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点;
在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当在准心方向上未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点;
根据游戏区域的边缘点确定游戏区域的目标点,目标点所在位置用于虚拟对象立足。
一种游戏区域的目标点检测装置,装置包括:
获取模块,用于获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向;
检测模块,用于以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点;
检测模块,用于在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当在准心方向上未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点;
确定模块,用于根据游戏区域的边缘点确定游戏区域的目标点,目标点所在位置用于虚拟对象立足。
一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行任一项游戏区域的目标点检测方法的步骤。
一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行任一项游戏区域的目标点检测方法的步骤。
上述游戏区域的目标点检测方法、装置、计算机可读存储介质和计算机设备,首先获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向,然后以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点,在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点,并根据游戏区域的边缘点确定游戏区域的目标点,目标点所在位置用于虚拟对象立足。这样,首先通过第一阶段的碰撞检测,确定游戏区域的碰撞点,同时提高了对游戏区域的碰撞点的检测概率,然后基于游戏区域的碰撞点,通过第二阶段的碰撞检测,确定游戏区域的边缘点,同时提高了对游戏区域的边缘点检测的准确率,再基于游戏区域的边缘点,通过第三阶段的碰撞检测,确定游戏区域的目标点,同时提升了对游戏区域的目标点检测的成功率。从而总体上提升了对游戏区域的目标点检测的准确率。
附图说明
图1为一个实施例中游戏区域的目标点检测方法的应用环境图;
图2为一个实施例中游戏区域的目标点检测方法的流程示意图;
图3为一个实施例中获取碰撞点的步骤的流程示意图;
图4为一个实施例中准心位置的示意图;
图5为一个实施例中球体碰撞体的作用示意图;
图6为另一个实施例中球体碰撞体的作用示意图;
图7为再一个实施例中球体碰撞体的作用示意图;
图8为一个实施例中获取边缘点的步骤的流程示意图;
图9为一个实施例中获取边缘点的作用原理示意图;
图10为一个实施例中获取目标点的步骤的流程示意图;
图11为一个实施例中虚拟场景的示意图;
图12(a)为另一个实施例中准心位置的示意图;
图12(b)为再一个实施例中准心位置的示意图;
图12(c)为又一个实施例中准心位置的示意图;
图13为另一个实施例中虚拟场景的示意图;
图14为另一个实施例中获取边缘点的作用原理示意图;
图15为一个实施例中目标点的障碍物的示意图;
图16为再一个实施例中虚拟场景的示意图;
图17为又一个实施例中虚拟场景的示意图;
图18为一个实施例中游戏区域的目标点检测装置的结构框图;
图19为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中游戏区域的目标点检测方法的应用环境图。终端110具体可以是台式终端或移动终端,台式终端具体可以是台式电脑、电视游戏机等中的至少一种,移动终端具体可以是手机、平板电脑、笔记本电脑、便携式游戏机、vr(virtualreality,虚拟现实)设备、ar(augmentedreality,增强现实)设备等中的至少一种。该游戏区域的目标点检测方法可应用于游戏领域,进一步地,可应用于fps(first-personshootinggame,第一人称射击类游戏)。fps是以玩家的主观视角来进行射击游戏,使得玩家身临其境的体验游戏带来的视觉冲击。比如,当虚拟对象面向游戏区域(该游戏区域可为可攀爬区域)时,虚拟对象向游戏区域瞄准准心,并朝向准心位置扔出一条钩锁,该钩锁用于勾住游戏区域的边缘位置,以使得虚拟对象通过该钩锁飞跃到游戏区域上进行站立。具体地,终端110获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向。接着,终端110以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点。接着,终端110在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当在准心方向上未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点。接着,终端110根据游戏区域的边缘点确定游戏区域的目标点,目标点所在位置用于虚拟对象立足。
在一个实施例中,如图2所示,提供了一种游戏区域的目标点检测方法。本实施例主要以该方法应用于上述图1中的终端110来举例说明。参照图2,该游戏区域的目标点检测方法具体包括如下步骤:
步骤202,获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向。
其中,虚拟对象是处于虚拟场景中的可控对象,用户可通过终端操纵该虚拟对象。虚拟场景是指通过计算机技术构建的数字化场景,可选地,该虚拟场景可为电子游戏场景,虚拟对象可为电子游戏场景中的可控对象;进一步地,该虚拟场景可为vr场景,虚拟对象可为vr场景中的可控对象。虚拟对象所在位置是指虚拟对象在虚拟场景中所处的位置。
游戏区域是处于虚拟场景中的静态对象。游戏区域可为可攀爬区域,其可包括攀爬区域和目标区域,攀爬区域用于虚拟对象向上方或者斜上方运动,以到达目标区域;目标区域相对于地面具有一定的高度,其存在可使虚拟对象立足的位置。
准心是虚拟场景中的工具,用于在虚拟场景中瞄准一个位置。准心位置是指准心在虚拟场景中所处的位置。准心方向是以虚拟对象所在位置指向准心位置的方向。
在一个实施例中,终端接收用户对虚拟对象的操作指令,根据该操作指令控制虚拟对象将攀爬工具瞄向游戏区域上的准心。
步骤204,以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点。
其中,碰撞是指在虚拟场景中移动的对象碰到另一对象停止移动。碰撞检测是指检测虚拟场景中至少两个对象之间是否会发生碰撞。游戏区域的碰撞点是指碰撞检测所使用的测试物与游戏区域相碰撞得到的交点。
在一个实施例中,虚拟场景中的碰撞检测可通过物理引擎来实现。物理引擎是一种计算机仿真程序,其模拟真实世界的物理定律来计算虚拟场景中物体的运动、旋转和碰撞反应。物理引擎可提供碰撞检测所使用的测试物。可选地,碰撞检测所使用的测试物为透明状态,其不会显示在虚拟场景中。测试物需携带有碰撞器组件以及刚体组件,该测试物还可携带有触碰器组件。碰撞体组件使得测试物可与游戏区域产生碰撞,不会在与游戏区域接触时,直接穿过游戏区域;刚体组件使得测试物能够受力和施力,从而可被物理引擎控制;触碰器组件使得测试物与游戏区域碰撞时不会产生碰撞效果。物理引擎还可计算碰撞检测的结果。物理引擎计算测试物最先碰到的障碍物,并计算该测试物与该障碍物碰撞的交点。
在一个实施例中,以虚拟对象所在位置作为起始位置,朝向准心方向发射测试物,当该测试物与游戏区域碰撞时,将该测试物与游戏区域的交点作为游戏区域的碰撞点。
具体地,该测试物可为射线,即以虚拟对象所在位置作为起始位置,朝向准心方向发射一条射线,物理引擎计算出该射线最先碰到的障碍物,以及该射线与该障碍物的交点,一般来说,该射线最先碰到的障碍物处于游戏区域中,该交点即为游戏区域的碰撞点。该测试物也可为碰撞体,即以虚拟对象所在位置作为起始位置,朝向准心位置发射一个碰撞体,物理引擎计算出该碰撞体最先碰到的障碍物,以及该碰撞体与该障碍物的交点,一般来说,该碰撞体最先碰到的障碍物处于游戏区域中,该交点即为游戏区域的碰撞点。
在一个实施例中,对测试物的检测距离设置阈值,该阈值可大于或等于虚拟对象所在位置与准心位置在准心方向上的距离。当测试物的检测距离大于阈值,但未产生碰撞时,则判定未检测到游戏区域的碰撞点。具体地,当测试物未检测到游戏区域的碰撞点时,物理引擎可返回(0,0,0),以表示此次碰撞检测结果为空。
步骤206,在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当在准心方向上未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点。
其中,预设方向可以是碰撞点所在位置的上方,进一步地,预设方向可以是碰撞点所在位置的垂直上方。检测点位于碰撞点所在位置的预设方向上,其用于作为起始位置,向准心方向做碰撞检测,以检测准心方向是否存在障碍物。
第一虚拟物体用于表征障碍物,第一虚拟物体可以是游戏区域的攀爬区域。准心方向的碰撞检测轨迹是指朝向准心方向做碰撞检测时,测试物的飞行轨迹。游戏区域的边缘点位于游戏区域的目标区域,其可位于目标区域与攀爬区域的交界处。
具体地,游戏区域的属性为:游戏区域的目标区域具有一定高度,且游戏区域的攀爬区域在准心方向存在障碍物,游戏区域的目标区域在准心方向不存在阻碍虚拟对象的障碍物。因此可利用该属性,在游戏区域的碰撞点所在位置的预设方向上获取检测点,以该检测点所在位置作为起始位置朝向准心方向做碰撞检测,若在准心方向上未检测到障碍物,根据该准心方向的碰撞检测轨迹确定游戏区域的边缘点。若在准心方向上检测到障碍物,在碰撞点所在位置的预设方向上更换检测点,继续朝向准心方向做碰撞检测,直至在准心方向上检测不到障碍物。当在准心方向检测不到障碍物时,说明该准心方向的碰撞检测轨迹位于游戏区域的目标区域,可根据该碰撞检测轨迹确定游戏区域的边缘点。
在一个实施例中,以游戏区域的碰撞点所在位置作为起始位置,朝向预设方向做碰撞检测,当没有碰到障碍物时,在预设方向的碰撞检测轨迹上确定检测点。进一步地,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当在准心方向检测到障碍物时,利用该检测点再次朝向预设方向做碰撞检测,当没有检测到障碍物时,在该预设方向的碰撞检测轨迹上确定另一检测点,以新确定的检测点所在位置作为起始位置,朝向准心方向做碰撞检测,直至找到游戏区域的边缘点。
具体地,朝向准心方向做碰撞检测的方式可以是:朝向准心方向发射测试物。可选地,该测试物可为射线,也可为碰撞体。可选地,朝向预设方向做碰撞检测的方式可以是:朝向预设方向发射测试物。可选地,该测试物可为射线,也可为碰撞体。
步骤208,根据游戏区域的边缘点确定游戏区域的目标点,目标点所在位置用于虚拟对象立足。
其中,游戏区域的目标点位于游戏区域的目标区域,其用于虚拟对象立足,即虚拟对象可在该目标点所在位置站立、蹲等。
在一个实施例中,将游戏区域的边缘点直接作为游戏区域的目标点。可选地,检测游戏区域的边缘点是否可使虚拟对象立足,当游戏区域的边缘点可使虚拟对象立足时,再将游戏区域的边缘点作为游戏区域的目标点。
在一个实施例中,当游戏区域的边缘点不能使虚拟对象立足时,根据游戏区域的边缘点获取可使虚拟对象立足的点,并将该可使虚拟对象立足的点作为游戏区域的目标点。比如,当虚拟对象在边缘点所在位置不可立足时,说明有障碍物阻碍虚拟对象立足,此时可对该障碍物进行躲避,即获取可躲避该障碍物的躲避点,将该躲避点作为游戏区域的目标点。可以理解,可躲避该障碍物的点很多,可选地,在可躲避该障碍物的点中,选取距离边缘点最近、且虚拟对象可立足的点,作为游戏区域的目标点。
上述游戏区域的目标点检测方法,首先获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向,然后以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点,在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点,并根据游戏区域的边缘点确定游戏区域的目标点,目标点所在位置用于虚拟对象立足。这样,首先通过第一阶段的碰撞检测,确定游戏区域的碰撞点,同时提高了对游戏区域的碰撞点的检测概率,然后基于游戏区域的碰撞点,通过第二阶段的碰撞检测,确定游戏区域的边缘点,同时提高了对游戏区域的边缘点检测的准确率,再基于游戏区域的边缘点,通过第三阶段的碰撞检测,确定游戏区域的目标点,同时提升了对游戏区域的目标点检测的成功率。从而总体上提升了对游戏区域的目标点检测的准确率。
在一个实施例中,如图3所示,以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点,包括:
步骤302,以虚拟对象所在位置作为起始位置,利用碰撞体朝向准心方向做碰撞检测。
其中,碰撞体是物理引擎提供的组件。碰撞体可为任意形状和尺寸,比如球体碰撞体、胶囊碰撞体、盒子碰撞体、网格碰撞体等。球体碰撞体,形状是球形,其组件属性是:球体的半径。盒子碰撞体,形状是立方体,其组件属性包括:盒子碰撞体的中心点、盒子碰撞体的大小。胶囊碰撞体,形状是胶囊,其组件属性包括:胶囊碰撞体的半径、胶囊碰撞体沿某个方向缩放的高度以及调整缩放高度的方向。网格碰撞体,其组件属性为:根据指定的网络,生成碰撞体骨骼。可选地,虚拟对象携带有碰撞体,虚拟对象的碰撞体使得虚拟对象可在虚拟场景中活动,而不会穿透虚拟场景,可参照虚拟对象的碰撞体的形状和尺寸,来设置碰撞检测所使用的碰撞体的形状和尺寸。
具体地,以虚拟对象所在位置作为起始位置,朝向准心方向发射碰撞体。
步骤304,获取碰撞体在准心方向上所碰到的第二虚拟物体,将碰撞体与第二虚拟物体之间的碰撞点作为游戏区域的碰撞点。
其中,第二虚拟物体用于表征障碍物,第二虚拟物体为碰撞体在准心方向上最先碰到的障碍物,比如游戏区域的攀爬区域。
由于碰撞体具备体积,其可增大与游戏区域的碰撞概率,比如当虚拟对象的准心没有准确地对准游戏区域的目标区域时,碰撞体也有可能与游戏区域发生碰撞。以球体碰撞体为例,如图4所示,准心未准确地对准游戏区域的目标区域,如图5所示,图中显示了球体碰撞体的飞行轨迹,通过球体碰撞体可检测到碰撞点。
上述游戏区域的目标点检测方法,以虚拟对象所在位置作为起始位置,利用碰撞体朝向准心方向做碰撞检测,获取碰撞体在准心方向上所碰到的第二虚拟物体,将碰撞体与第二虚拟物体之间的碰撞点作为游戏区域的碰撞点,增大了与游戏区域的碰撞概率,提高了游戏区域的碰撞点的检测概率。
在一个实施例中,利用碰撞体朝向准心方向做碰撞检测的方式,包括:根据碰撞检测的检测距离确定碰撞体的体积,其中,碰撞体的体积与碰撞检测的检测距离正相关。
其中,碰撞体的体积用于表征碰撞体的大小。碰撞检测的检测距离是指测试物的飞行距离。
在一个实施例中,可预先设置检测距离与碰撞体的体积之间的映射关系,比如:将检测距离划分为至少两段,每一段对应设置碰撞体的体积。随着检测距离增加,可增大碰撞体的体积,这样,随着检测距离增加,碰撞体的检测面积加大,进而增加了与游戏区域的碰撞概率。
上述游戏区域的目标点检测方法,根据碰撞检测的检测距离确定碰撞体的体积,碰撞体的体积与碰撞检测的检测距离正相关,这样,提高了对游戏区域的碰撞点的检测概率。
在一个实施例中,碰撞体为球体碰撞体;利用碰撞体朝向准心方向做碰撞检测的方式,包括:根据碰撞检测的检测距离确定球体碰撞体的半径,其中,球体碰撞体的半径与碰撞检测的检测距离正相关。
具体地,利用球体碰撞体朝向准心方向做碰撞检测,球体碰撞体具有一定的体积,其可增大与游戏区域的碰撞概率;并且,球体碰撞体具有圆滑的特性,其可避免碰到一些多余的障碍物。
在一个实施例中,可预先设置检测距离与球体碰撞体的半径之间的映射关系,比如:将检测距离划分为至少两段,每一段对应设置球体碰撞体的半径。
具体地,球体碰撞体的半径与碰撞检测的检测距离正相关,即随着检测距离增加,可增大球体碰撞体的半径,使得随着检测距离增加,碰撞体的检测面积加大,在虚拟对象与游戏区域距离较远时,也能实现对游戏区域的碰撞点的检测。如图6所示,图中显示了球体碰撞体的飞行轨迹,虚拟对象瞄准的准心位置距离虚拟对象较远,使用同一半径的球体碰撞体无法碰到游戏区域;如图7所示,通过多重球形检测的方式,使得在虚拟对象距离游戏区域较远时,球形碰撞体也可碰到游戏区域,进而检测到碰撞点。
上述游戏区域的目标点检测方法,利用球体碰撞体朝向准心方向做碰撞检测,并根据碰撞检测的检测距离确定球体碰撞体的半径,球体碰撞体的半径与碰撞检测的检测距离正相关,提高了对游戏区域的碰撞点的检测概率。
在一个实施例中,该方法还包括:当碰撞检测的检测距离达到预设距离,但没有碰到第二虚拟物体时,判定游戏区域的目标点检测失败。
其中,预设距离用于限制碰撞检测的距离。在一个实施例中,预设距离大于或等于虚拟对象所在位置与准心位置在准心方向上的距离。
当碰撞检测的检测距离达到预设距离,说明按照准心方向无法与游戏区域进行碰撞,此时判定游戏区域的目标点检测失败。
上述游戏区域的目标点检测方法,当碰撞检测的检测距离达到预设距离,但没有碰到第二虚拟物体时,判定游戏区域的目标点检测失败,及时结束对游戏区域的目标点的检测,节省计算机资源。
在一个实施例中,如图8所示,在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当在准心方向上未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点,包括:
步骤802,以游戏区域的碰撞点所在位置作为起始位置,朝向预设方向做预定长度的碰撞检测。
其中,预定长度用于限制在预设方向上的碰撞检测的检测距离,具体的大小可根据实际的应用场景进行设定。
在一个实施例中,该碰撞检测方式为:朝向预设方向发射碰撞体,且该碰撞检测的检测距离为预定长度,该碰撞体可以是球体、立方体等各种形状的碰撞体。在另一个实施例中,该碰撞检测方式为:朝向预设方向发射射线,且该射线检测的检测距离为预定长度。
步骤804,当没有碰到第三虚拟物体时,以预定长度的碰撞检测的末端点作为检测点,以检测点所在位置作为起始位置,朝向准心方向做预设长度的碰撞检测。
其中,第三虚拟物体用于表征障碍物。第三虚拟物体可以是该游戏区域周围的障碍物,比如该游戏区域上方的障碍物。预设长度用于限制在准心方向上的碰撞检测的检测距离,具体的大小可根据实际的应用场景进行设定。
预定长度的碰撞检测的末端点是指,该预定长度的碰撞检测的最终位置。比如,当碰撞检测方式为朝向准心方向发射射线,该预定长度的碰撞检测的末端点为:当预定长度的碰撞检测结束时,该射线的末端位置。
以预定长度的碰撞检测的末端点所在位置作为起始位置,朝向准心方向做预设长度的碰撞检测,其主要目的是检测该碰撞点是否在游戏区域的目标区域。在一个实施例中,该碰撞检测方式为:朝向准心方向发射碰撞体,且该碰撞检测的检测距离为预设长度,该碰撞体可以是球体、立方体等各种形状的碰撞体。在另一个实施例中,该碰撞检测方式为:朝向准心方向发射射线,且该射线检测的检测距离为预设长度。
步骤806,当没有碰到第一虚拟物体时,将预设长度的碰撞检测的末端点作为游戏区域的边缘点。
其中,预设长度的碰撞检测的末端点是指,该预设长度的碰撞检测的最终位置。比如,当碰撞检测方式为朝向准心方向发射碰撞体,该预设长度的碰撞检测的末端点为:预设长度的碰撞检测结束时,该碰撞体所在位置。
当没有碰到第一虚拟物体时,说明该碰撞点在游戏区域的目标区域,但是该碰撞点可能在目标区域的边缘,因此可将预设长度的碰撞检测的末端点作为边缘点。
上述游戏区域的目标点检测方法,以游戏区域的碰撞点所在位置作为起始位置,朝向预设方向做预定长度的碰撞检测,当没有碰到第三虚拟物体时,以预定长度的碰撞检测的末端点所在位置作为起始位置,朝向准心方向做预设长度的碰撞检测,当没有碰到第一虚拟物体时,将预设长度的碰撞检测的末端点作为游戏区域的边缘点,保证检测得到的边缘点处于游戏区域的目标区域内,提高了对游戏区域的边缘点的检测效率。
在一个实施例中,方法还包括:当碰到第一虚拟物体时,则以检测点所在位置作为起始位置,再次执行朝向预设方向做预定长度的碰撞检测的步骤,直至找到游戏区域的边缘点。
根据游戏区域的属性,当以预定长度的碰撞检测的末端点所在位置作为起始位置,朝向准心方向做预设长度的碰撞检测,且碰到第一虚拟物体时,说明该碰撞点落在游戏区域的攀爬区域。
如图9所示,以预设方向为垂直上方为例,以游戏区域的碰撞点所在位置作为起始位置,朝向预设方向做预定长度的碰撞检测,当没有碰到第三虚拟物体时,以预定长度的碰撞检测的末端点所在位置作为起始位置,朝向准心方向做预设长度的碰撞检测,当碰到第一虚拟物体时,以预定长度的碰撞检测的末端点所在位置作为起始位置,再次朝向预设方向做预定长度的碰撞检测,以确定新的检测点,该检测点用于作为起始位置向准心方向做碰撞检测,以检测准心方向是否存在第一虚拟物体,直至在准心方向检测不到第一虚拟物体,将预设长度的碰撞检测的末端点作为边缘点。
在一个实施例中,朝向准心方向做预设长度的碰撞检测,每次碰撞检测的检测距离可不同,每次碰撞检测的检测方式也可不同。同理,朝向预设方向做预定长度的碰撞检测,每次碰撞检测的检测距离可不同,每次碰撞检测的检测方式也可不同。在一个实施例中,随着检测次数增多,可增大朝向预设方向做碰撞检测的检测距离,以快速找到边缘点。比如,可预先设置检测次数与预设方向的检测距离之间的对应关系,以根据检测次数适当增大检测距离。
上述游戏区域的目标点检测方法,当以预定长度的碰撞检测的末端点所在位置作为起始位置,朝向准心方向做预设长度的碰撞检测,且碰到第一虚拟物体时,则以预定长度的碰撞检测的末端点所在位置作为起始位置,再次执行朝向预设方向做预定长度的碰撞检测的步骤,直至找到游戏区域的边缘点,保证检测得到的边缘点处于游戏区域的目标区域内,提高了边缘点检测的准确率。
在一个实施例中,方法还包括:当碰到第三虚拟物体时,判定游戏区域的目标点检测失败。
当以检测点或者碰撞点作为起始位置,朝向预设方向做预定长度的碰撞检测,且碰到第三虚拟物体时,说明游戏区域的预设方向上存在障碍物,此时判定游戏区域的目标点检测失败。
上述游戏区域的目标点检测方法,当朝向预设方向做预定长度的碰撞检测,且碰到第三虚拟物体时,判定游戏区域的目标点检测失败,及时结束对游戏区域的目标点的检测,节省计算机资源。
在一个实施例中,如图10所示,根据游戏区域的边缘点确定游戏区域的目标点,包括:
步骤1002,获取模拟体,模拟体与虚拟对象的碰撞体的尺寸一致;
其中,模拟体用于模拟虚拟对象,以检测边缘点是否可使虚拟对象立足。虚拟对象携带有碰撞体,该碰撞体使得虚拟对象可在虚拟场景中活动,而不会穿透虚拟场景。虚拟对象的碰撞体跟虚拟对象的形象有关,比如虚拟对象是人类的形象,该碰撞体可为胶囊碰撞体。在一个实施例中,模拟体是与虚拟对象的碰撞体相同的碰撞体。根据虚拟对象的碰撞体的形状和尺寸,对应构建得到模拟体。
步骤1004,将模拟体放置于游戏区域的边缘点所在位置,当模拟体在游戏区域的边缘点所在位置可立足时,将游戏区域的边缘点作为游戏区域的目标点。
将模拟体放置于游戏区域的边缘点所在位置,若模拟体可立足,说明虚拟对象在该位置也可立足,则将该边缘点作为游戏区域的目标点。
上述游戏区域的目标点检测方法,获取模拟体,将模拟体放置于游戏区域的边缘点所在位置,当模拟体在游戏区域的边缘点所在位置可立足时,将游戏区域的边缘点作为游戏区域的目标点,这样,提高了对游戏区域的目标点的检测效率。
在一个实施例中,方法还包括:当模拟体在游戏区域的边缘点所在位置不可立足时,获取与模拟体产生碰撞的第四虚拟物体,以及在边缘点所在位置预设范围内的第五虚拟物体;根据第四虚拟物体以及第五虚拟物体确定碰撞躲避点;根据碰撞躲避点确定游戏区域的目标点。
其中,第四虚拟物体、第五虚拟物体均用于表征障碍物。第四虚拟物体是指阻碍模拟体在边缘点所在位置立足的障碍物,第五虚拟物体是指在边缘点预设范围内的障碍物。在边缘点所在位置预设范围内是指,以边缘点作为圆心,以一定距离作为半径得到的范围,预设范围的具体大小可根据实际的应用场景进行设定。
当将模拟体放置于碰撞躲避点所在的位置时,模拟体不与第四虚拟物体、第五虚拟物体发生碰撞。
具体地,当模拟体在边缘点所在位置不可立足时,说明有障碍物(即第四虚拟物体)阻碍模拟体立足,此时可对第四虚拟物体进行躲避,确定一个可躲避第四虚拟物体的点;在可躲避第四虚拟物体的点,位于边缘点预设范围内的障碍物(即第五虚拟物体)可能会成为阻碍模拟体立足的新的障碍物,因此可对第四虚拟物体、第五虚拟物体均进行躲避。
在一个实施例中,当模拟体在碰撞躲避点所在位置可立足时,将碰撞躲避点作为目标点。
上述游戏区域的目标点检测方法,当模拟体在游戏区域的边缘点所在位置不可立足时,获取与模拟体产生碰撞的第四虚拟物体,以及在边缘点所在位置预设范围内的第五虚拟物体,根据第四虚拟物体以及第五虚拟物体确定碰撞躲避点,根据碰撞躲避点确定游戏区域的目标点,提高了对游戏区域的目标点检测的准确率。
在一个实施例中,根据第四虚拟物体以及第五虚拟物体确定碰撞躲避点,包括:根据第四虚拟物体以及游戏区域的边缘点获取第一躲避点,其中,当模拟体在第一躲避点所在位置时,模拟体与第四虚拟物体不产生碰撞;根据第五虚拟物体以及第一躲避点获取第二躲避点,其中,当模拟体在第二躲避点所在位置时,模拟体与第四虚拟物体、第五虚拟物体均不产生碰撞;将第二躲避点作为碰撞躲避点。
其中,当将模拟体放置于第一躲避点时,模拟体不与第四虚拟物体发生碰撞。当将模拟体放置于第二躲避点时,模拟体与第四虚拟物体、第五虚拟物体均不产生碰撞。
根据第四虚拟物体以及游戏区域的边缘点获取第一躲避点,第一躲避点位于游戏区域的目标区域。当将模拟体放置于一个躲避点时,模拟体不与第四虚拟物体发生碰撞,该躲避点可有多个,可优先选取距离边缘点最近的躲避点作为第一躲避点。
根据第五虚拟物体以及第一躲避点获取第二躲避点,第二躲避点位于游戏区域的目标区域。当将模拟体放置于一个躲避点时,模拟体与第四虚拟物体、第五虚拟物体均不产生碰撞,该躲避点也可有多个,可优先选取距离边缘点最近的躲避点作为第二躲避点。
上述游戏区域的目标点检测方法,根据第四虚拟物体以及游戏区域的边缘点获取第一躲避点,根据第五虚拟物体以及第一躲避点获取第二躲避点,将第二躲避点作为碰撞躲避点,提高了对游戏区域的目标点检测的成功率。
在一个实施例中,根据碰撞躲避点确定游戏区域的目标点,包括:将模拟体放置于碰撞躲避点所在位置,当模拟体在碰撞躲避点所在位置可立足时,将碰撞躲避点作为游戏区域的目标点。
当获取到碰撞躲避点时,该碰撞躲避点所在位置周围可能存在其它障碍物,可检测该碰撞躲避点是否可使虚拟对象立足。将模拟体放置于该碰撞躲避点所在位置,当模拟体可在碰撞躲避点可立足时,将该碰撞躲避点作为游戏区域的目标点。当模拟体在该碰撞躲避点不可立足时,可选地,可根据阻碍模拟体在该碰撞躲避点立足的障碍物,继续寻找新的碰撞躲避点,直至找到可使得模拟体立足的碰撞躲避点,将可使得模拟体立足的碰撞躲避点作为目标点。或者,当模拟体在该碰撞躲避点不可立足时,则判定目标点检测失败。
上述游戏区域的目标点检测方法,将模拟体放置于碰撞躲避点所在位置,当模拟体在碰撞躲避点所在位置可立足时,将碰撞躲避点作为游戏区域的目标点,提高了对游戏区域的目标点检测的成功率。
在一个实施例中,该方法还包括:获取游戏区域的边缘点与碰撞躲避点之间的距离;当该距离小于预定距离,且模拟体在碰撞躲避点所在位置可立足时,将碰撞躲避点作为游戏区域的目标点。
其中,预定距离用于限制目标点与边缘点之间的距离,当碰撞躲避点与边缘点之间的距离大于或者等于预定距离时,说明碰撞躲避点与边缘点距离较远,该碰撞躲避点不适合作为目标点。预定距离的具体大小可根据实际的应用场景进行设定。
当边缘点与碰撞躲避点之间的距离小于预定距离时,说明虚拟对象被挤到了距离边缘点较远的位置,判定目标点检测失败,使得目标点在准心位置的合理范围内。
上述游戏区域的目标点检测方法,当边缘点与碰撞躲避点之间的距离小于预定距离时,根据碰撞躲避点确定游戏区域的目标点,使得目标点在准心位置的合理范围内。
在一个实施例中,提供了一种游戏区域的目标点检测方法,方法包括:
获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向。
接着,以虚拟对象所在位置作为起始位置,朝向准心方向发射球体碰撞体,球体碰撞体的半径与碰撞检测的检测距离正相关。
进一步地,获取碰撞体在准心方向上所碰到的第二虚拟物体,将碰撞体与第二虚拟物体之间的碰撞点作为游戏区域的碰撞点。
接着,以游戏区域的碰撞点所在位置作为起始位置,朝向垂直上方发射预定长度的射线。
进一步地,当没有碰到第三虚拟物体时,以预定长度的碰撞检测的末端点所在位置作为起始位置,朝向准心方向发射预设长度的射线。
接着,当没有碰到第一虚拟物体时,将预设长度的射线的末端点作为游戏区域的边缘点。
可选地,当碰到第一虚拟物体时,则以该预定长度的射线的末端点所在位置作为起始位置,再次执行朝向垂直上方发射预定长度的射线的步骤,直至找到游戏区域的边缘点。
接着,获取胶囊碰撞体,该胶囊碰撞体与虚拟对象的碰撞体的尺寸一致,将该胶囊碰撞体放置于游戏区域的边缘点所在位置。
进一步地,当胶囊碰撞体在游戏区域的边缘点所在位置不可立足时,获取与胶囊碰撞体产生碰撞的第四虚拟物体,以及在边缘点所在位置预设范围内的第五虚拟物体,根据第四虚拟物体以及游戏区域的边缘点获取第一躲避点,其中,当胶囊碰撞体在第一躲避点所在位置时,胶囊碰撞体与第四虚拟物体不产生碰撞,并根据第五虚拟物体以及第一躲避点获取第二躲避点,其中,当胶囊碰撞体在第二躲避点所在位置时,胶囊碰撞体与第四虚拟物体、第五虚拟物体均不产生碰撞,将第二躲避点作为碰撞躲避点。
接着,获取游戏区域的边缘点与碰撞躲避点之间的距离,当距离小于预定距离时,将胶囊碰撞体放置于碰撞躲避点所在位置;
进一步地,当胶囊碰撞体在碰撞躲避点所在位置可立足时,将碰撞躲避点作为游戏区域的目标点。
本实施例中,通过三个碰撞检测阶段最终确定游戏区域的目标点,具体如下:
第一碰撞检测阶段,利用球体碰撞体进行碰撞检测,来确定游戏区域的碰撞点。首先,球体碰撞体具有一定的体积,其可增大与游戏区域的碰撞概率;其次,球体碰撞体具有圆滑的特性,其可避免碰到一些多余的障碍物;并且,利用多重球形的方式,随着检测距离增加,球体碰撞体的半径增大,使得在虚拟对象与游戏区域距离较远时,也能实现对游戏区域的碰撞点的检测。第一碰撞检测阶段提高了对游戏区域的碰撞点的检测概率。
第二碰撞检测阶段,基于碰撞点,利用射线进行碰撞检测,来确定游戏区域的边缘点。向准心方向以及向垂直上方发射射线来检测游戏区域的目标区域,且在游戏区域的目标区域确定边缘点,第二碰撞检测阶段保证检测得到的边缘点的准确率。
第三碰撞检测阶段,利用胶囊碰撞体进行碰撞检测,来确定游戏区域的目标点。先利用胶囊碰撞体确定游戏区域的碰撞躲避点,这样,可避开胶囊碰撞体在边缘点所在位置所碰撞的第四虚拟物体,以及在边缘点预设范围内的第五虚拟物体,碰撞躲避点提高了虚拟对象立足的概率;并且,当边缘点与碰撞躲避点之间的距离小于预定距离,且碰撞躲避点可使胶囊碰撞体立足时,将碰撞躲避点作为游戏区域的目标点,使得目标点在准心位置的合理范围内。第三碰撞检测阶段,提升了目标点检测的成功率,以及目标点所在位置的合理性。
上述游戏区域的目标点检测方法,首先通过第一阶段的碰撞检测,确定游戏区域的碰撞点,同时提高了对游戏区域的碰撞点的检测概率,然后基于游戏区域的碰撞点,通过第二阶段的碰撞检测,确定游戏区域的边缘点,同时提高了对游戏区域的边缘点检测的准确率,再基于游戏区域的边缘点,通过第三阶段的碰撞检测,确定游戏区域的目标点,同时提升了对游戏区域的目标点检测的成功率,从而总体上提升了对游戏区域的目标点检测的准确率。
在一个实施例中,提供了一种游戏区域的目标点检测方法,该游戏区域的目标点检测方法应用于fps游戏,该游戏区域的目标点检测方法应用于如下游戏场景:当游戏对象面向可攀爬区域时,游戏对象向该可攀爬区域瞄准准心,并朝向准心位置扔出一条钩锁,该钩锁用于勾住该可攀爬区域的边缘位置,以使得游戏对象通过该钩锁飞跃到可攀爬区域上进行站立。需要说明的是,本实施例中碰撞检测所使用的测试物均不会在游戏场景中显示。
该方法包括:
如图11所示,当游戏对象面向可站立的可攀爬区域时,游戏对象向该可攀爬区域瞄准准心。通过本实施例的方法,该准心并不需要非常准确地指向可攀爬区域边缘也能检测到目标点。比如,如图12(a)所示,该准心可指向可攀爬区域边缘的上方;如图12(b)所示,该准心可指向可攀爬区域边缘;如图12(c)所示,该准心也可指向可攀爬区域边缘的下方。可以理解,在图12(a)、图12(c)的情况下,准心与可攀爬区域边缘之间的纵向距离需要在预定范围内,预定范围可根据实际应用进行设定。
接着,获取游戏对象所在位置以及游戏对象向可攀爬区域瞄准的准心位置,根据游戏对象所在位置以及准心位置确定准心方向。
进一步地,以游戏对象所在位置作为起始位置,朝向准心方向发射球体碰撞体,球体碰撞体的半径与碰撞检测的检测距离正相关,获取碰撞体在准心方向上所碰到的第二虚拟物体,将碰撞体与第二虚拟物体之间的碰撞点作为可攀爬区域的碰撞点。由于球体碰撞体具有一定的体积,即使准心没有非常准确地对准可攀爬区域边缘,球体碰撞体也可以碰到可攀爬区域,得到碰撞点。比如,如图12(a)所示,准心指向可攀爬区域边缘的上方,如图5所示,图中显示了球体碰撞体的飞行轨迹,通过球体碰撞体可检测到碰撞点,提高了碰撞点的检测效率。而由于fps游戏中物体呈现近大远小的属性,导致视觉上距离游戏对象较近的可攀爬区域,实际上距离游戏对象较远,如图13所示,游戏对象瞄准的准心位置看起来距离游戏对象较近;如图6所示,游戏对象瞄准的准心位置实际上距离游戏对象较远,使用同一半径的球体碰撞体无法碰到可攀爬区域。如图7所示,通过多重球形检测的方式,球体碰撞体的半径与碰撞检测的检测距离正相关,使得在游戏对象距离可攀爬区域较远时,球形碰撞体也可碰到可攀爬区域,进而检测到碰撞点,进而可实现游戏对象远距离飞跃。
进一步地,以可攀爬区域的碰撞点所在位置作为起始位置,朝向垂直上方发射预定长度的射线,当没有碰到第三虚拟物体时,以预定长度的射线的末端点所在位置作为起始位置,朝向准心方向发射预设长度的射线,当没有碰到第一虚拟物体时,将该预设长度的射线的末端点作为可攀爬区域的边缘点。当碰到第一虚拟物体时,则以预定长度的射线的末端点所在位置作为起始位置,再次执行朝向垂直上方发射预定长度的射线的步骤,直至找到可攀爬区域的边缘点。如图14所示,通过向准心方向以及向垂直上方发射射线做碰撞检测,找到可攀爬区域的边缘点,这种方式可保证检测得到的边缘点的准确率。
接着,获取胶囊碰撞体,该胶囊碰撞体与游戏对象的碰撞体的尺寸一致,将该胶囊碰撞体放置于可攀爬区域的边缘点所在位置,当胶囊碰撞体在可攀爬区域的边缘点所在位置可站立时,将可攀爬区域的边缘点作为可攀爬区域的目标点。这样,通过胶囊碰撞体检测边缘点是否可站立,提升了游戏场景中目标点的检测效率。
进一步地,边缘点附近可能存在障碍物阻碍游戏对象站立,比如,如图15所示,可攀爬区域上方存在另一可攀爬区域,导致游戏对象无法在该可攀爬区域的边缘点站立。当胶囊碰撞体在可攀爬区域的边缘点所在位置不可立足时,获取与胶囊碰撞体产生碰撞的第四虚拟物体,以及在边缘点所在位置预设范围内的第五虚拟物体,根据第四虚拟物体以及可攀爬区域的边缘点获取第一躲避点,其中,当胶囊碰撞体在第一躲避点所在位置时,胶囊碰撞体与第四虚拟物体不产生碰撞,并根据第五虚拟物体以及第一躲避点获取第二躲避点,其中,当胶囊碰撞体在第二躲避点所在位置时,胶囊碰撞体与第四虚拟物体、第五虚拟物体均不产生碰撞,将第二躲避点作为碰撞躲避点。当胶囊碰撞体在可攀爬区域的边缘点所在位置不可站立时,将胶囊碰撞体避开边缘点附近的障碍物,从而确定碰撞躲避点,提升了游戏场景中目标点检测的成功率。
接着,获取可攀爬区域的边缘点与碰撞躲避点之间的距离,当该距离小于预定距离时,将胶囊碰撞体放置于碰撞躲避点所在位置,当胶囊碰撞体在碰撞躲避点所在位置可立足时,将碰撞躲避点作为可攀爬区域的目标点。当该距离大于或者等于预定距离时,说明游戏对象被挤到了距离边缘点较远的位置,不能够满足技能需求,判定目标点检测失败,使得目标点在准心位置的合理范围内。
当检测到输入的技能指令时,如图16所示,控制游戏对象扔出钩锁勾住可攀爬区域的碰撞点,如图17所示,控制游戏对象通过钩锁飞跃到可攀爬区域上,并站立在可攀爬区域的目标点上。
上述游戏区域的目标点检测方法,首先通过第一阶段的碰撞检测,确定可攀爬区域的碰撞点,同时提高了对可攀爬区域的碰撞点的检测概率,然后基于可攀爬区域的碰撞点,通过第二阶段的碰撞检测,确定可攀爬区域的边缘点,同时提高了对可攀爬区域的边缘点检测的准确率,再基于可攀爬区域的边缘点,通过第三阶段的碰撞检测,确定可攀爬区域的目标点,同时提升了对可攀爬区域的目标点检测的成功率,从而总体上提升了对可攀爬区域的目标点检测的准确率。
图2、图3、图8、图10分别为一个实施例中游戏区域的目标点检测方法的流程示意图。应该理解的是,虽然图2、图3、图8、图10的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2、图3、图8、图10中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图18所示,提供了一种游戏区域的目标点检测装置,包括:获取模块1802、检测模块1804和确定模块1806。其中,
获取模块1802,用于获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向;
检测模块1804,用于以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点;
检测模块1804,用于在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当在准心方向上未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点;
确定模块1806,用于根据游戏区域的边缘点确定游戏区域的目标点,目标点所在位置用于虚拟对象立足。
上述游戏区域的目标点检测装置,首先获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向,然后以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点,在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点,并根据游戏区域的边缘点确定游戏区域的目标点,目标点所在位置用于虚拟对象立足。这样,首先通过第一阶段的碰撞检测,确定游戏区域的碰撞点,同时提高了对游戏区域的碰撞点的检测概率,然后基于游戏区域的碰撞点,通过第二阶段的碰撞检测,确定游戏区域的边缘点,同时提高了对游戏区域的边缘点检测的准确率,再基于游戏区域的边缘点,通过第三阶段的碰撞检测,确定游戏区域的目标点,同时提升了对游戏区域的目标点检测的成功率。从而总体上提升了对游戏区域的目标点检测的准确率。
在一个实施例中,该检测模块1804,还用于:以虚拟对象所在位置作为起始位置,利用碰撞体朝向准心方向做碰撞检测;获取碰撞体在准心方向上所碰到的第二虚拟物体,将碰撞体与第二虚拟物体之间的碰撞点作为游戏区域的碰撞点。
上述游戏区域的目标点检测装置,以虚拟对象所在位置作为起始位置,利用碰撞体朝向准心方向做碰撞检测,获取碰撞体在准心方向上所碰到的第二虚拟物体,将碰撞体与第二虚拟物体之间的碰撞点作为游戏区域的碰撞点,增大了与游戏区域的碰撞概率,提高了游戏区域的碰撞点的检测概率。
在一个实施例中,该检测模块1804,还用于:根据碰撞检测的检测距离确定碰撞体的体积,其中,碰撞体的体积与碰撞检测的检测距离正相关。
上述游戏区域的目标点检测装置,根据碰撞检测的检测距离确定碰撞体的体积,碰撞体的体积与碰撞检测的检测距离正相关,这样,提高了对游戏区域的碰撞点的检测概率。
在一个实施例中,碰撞体为球体碰撞体;该检测模块1804,还用于:根据碰撞检测的检测距离确定球体碰撞体的半径,其中,球体碰撞体的半径与碰撞检测的检测距离正相关。
上述游戏区域的目标点检测装置,利用球体碰撞体朝向准心方向做碰撞检测,并根据碰撞检测的检测距离确定球体碰撞体的半径,球体碰撞体的半径与碰撞检测的检测距离正相关,提高了对游戏区域的碰撞点的检测概率。
在一个实施例中,该检测模块1804,还用于:当碰撞检测的检测距离达到预设距离,但没有碰到第二虚拟物体时,判定游戏区域的目标点检测失败。
上述游戏区域的目标点检测装置,当碰撞检测的检测距离达到预设距离,但没有碰到第二虚拟物体时,判定游戏区域的目标点检测失败,及时结束对游戏区域的目标点的检测,节省计算机资源。
在一个实施例中,该检测模块1804,还用于:以游戏区域的碰撞点所在位置作为起始位置,朝向预设方向做预定长度的碰撞检测;当没有碰到第三虚拟物体时,以预定长度的碰撞检测的末端点作为检测点,以检测点所在位置作为起始位置,朝向准心方向做预设长度的碰撞检测;当没有碰到第一虚拟物体时,将预设长度的碰撞检测的末端点作为游戏区域的边缘点。
上述游戏区域的目标点检测装置,以游戏区域的碰撞点所在位置作为起始位置,朝向预设方向做预定长度的碰撞检测,当没有碰到第三虚拟物体时,以预定长度的碰撞检测的末端点所在位置作为起始位置,朝向准心方向做预设长度的碰撞检测,当没有碰到第一虚拟物体时,将预设长度的碰撞检测的末端点作为游戏区域的边缘点,保证检测得到的边缘点处于游戏区域的目标区域内,提高了对游戏区域的边缘点的检测效率。
在一个实施例中,该检测模块1804,还用于:当碰到第一虚拟物体时,则以检测点所在位置作为起始位置,再次执行朝向预设方向做预定长度的碰撞检测的步骤,直至找到游戏区域的边缘点。
上述游戏区域的目标点检测装置,当碰到第一虚拟物体时,则以预定长度的碰撞检测的末端点所在位置作为起始位置,再次执行朝向预设方向做预定长度的碰撞检测的步骤,直至找到游戏区域的边缘点,保证检测得到的边缘点处于游戏区域的目标区域内,提高了边缘点检测的准确率。
在一个实施例中,该检测模块1804,还用于:当碰到第三虚拟物体时,判定游戏区域的目标点检测失败。
上述游戏区域的目标点检测装置,当朝向预设方向做预定长度的碰撞检测,且碰到第三虚拟物体时,判定游戏区域的目标点检测失败,及时结束对游戏区域的目标点的检测,节省计算机资源。
在一个实施例中,该确定模块1806,还用于:获取模拟体,模拟体与虚拟对象的碰撞体的尺寸一致;将模拟体放置于游戏区域的边缘点所在位置,当模拟体在游戏区域的边缘点所在位置可立足时,将游戏区域的边缘点作为游戏区域的目标点。
上述游戏区域的目标点检测装置,获取模拟体,将模拟体放置于游戏区域的边缘点所在位置,当模拟体在游戏区域的边缘点所在位置可立足时,将游戏区域的边缘点作为游戏区域的目标点,这样,提高了对游戏区域的目标点的检测效率。
在一个实施例中,该确定模块1806,还用于:当模拟体在游戏区域的边缘点所在位置不可立足时,获取与模拟体产生碰撞的第四虚拟物体,以及在边缘点所在位置预设范围内的第五虚拟物体;根据第四虚拟物体以及第五虚拟物体确定碰撞躲避点;根据碰撞躲避点确定游戏区域的目标点。
上述游戏区域的目标点检测装置,当模拟体在游戏区域的边缘点所在位置不可立足时,获取与模拟体产生碰撞的第四虚拟物体,以及在边缘点所在位置预设范围内的第五虚拟物体,根据第四虚拟物体以及第五虚拟物体确定碰撞躲避点,根据碰撞躲避点确定游戏区域的目标点,提高了对游戏区域的目标点检测的准确率。
在一个实施例中,该确定模块1806,还用于:根据第四虚拟物体以及游戏区域的边缘点获取第一躲避点,其中,当模拟体在第一躲避点所在位置时,模拟体与第四虚拟物体不产生碰撞;根据第五虚拟物体以及第一躲避点获取第二躲避点,其中,当模拟体在第二躲避点所在位置时,模拟体与第四虚拟物体、第五虚拟物体均不产生碰撞;将第二躲避点作为碰撞躲避点。
上述游戏区域的目标点检测装置,根据第四虚拟物体以及游戏区域的边缘点获取第一躲避点,根据第五虚拟物体以及第一躲避点获取第二躲避点,将第二躲避点作为碰撞躲避点,提高了对游戏区域的目标点检测的成功率。
在一个实施例中,该确定模块1806,还用于:将模拟体放置于碰撞躲避点所在位置,当模拟体在碰撞躲避点所在位置可立足时,将碰撞躲避点作为游戏区域的目标点。
上述游戏区域的目标点检测装置,将模拟体放置于碰撞躲避点所在位置,当模拟体在碰撞躲避点所在位置可立足时,将碰撞躲避点作为游戏区域的目标点,提高了对游戏区域的目标点检测的成功率。
在一个实施例中,该确定模块1806,还用于:获取游戏区域的边缘点与碰撞躲避点之间的距离;当距离小于预定距离,执行根据碰撞躲避点确定游戏区域的目标点的步骤。
上述游戏区域的目标点检测装置,当边缘点与碰撞躲避点之间的距离小于预定距离时,根据碰撞躲避点确定游戏区域的目标点,使得目标点在准心位置的合理范围内。
图19示出了一个实施例中计算机设备的内部结构图。该计算机设备具体可以是图1中的终端110。如图19所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图19中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的游戏区域的目标点检测装置可以实现为一种计算机程序的形式,计算机程序可在如图19所示的计算机设备上运行。计算机设备的存储器中可存储组成该游戏区域的目标点检测装置的各个程序模块,比如,图18所示的:获取模块1802、检测模块1804和确定模块1806。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的游戏区域的目标点检测方法中的步骤。
例如,图19所示的计算机设备可以通过如图18所示的游戏区域的目标点检测装置中的获取模块1802执行获取虚拟对象所在位置以及虚拟对象向游戏区域瞄准的准心位置,根据虚拟对象所在位置以及准心位置确定准心方向的步骤。计算机设备可通过检测模块1804执行以虚拟对象所在位置作为起始位置,朝向准心方向做碰撞检测,获取游戏区域的碰撞点的步骤。计算机设备还可通过检测模块1804执行在游戏区域的碰撞点所在位置的预设方向上获取检测点,以检测点所在位置作为起始位置,朝向准心方向做碰撞检测,当在准心方向上未检测到第一虚拟物体时,根据准心方向的碰撞检测轨迹确定游戏区域的边缘点的步骤。计算机设备可通过确定模块1806执行根据游戏区域的边缘点确定游戏区域的目标点,目标点所在位置用于虚拟对象立足的步骤。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述游戏区域的目标点检测方法的步骤。此处游戏区域的目标点检测方法的步骤可以是上述各个实施例的游戏区域的目标点检测方法中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述游戏区域的目标点检测方法的步骤。此处游戏区域的目标点检测方法的步骤可以是上述各个实施例的游戏区域的目标点检测方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
1.一种游戏区域的目标点检测方法,包括:
获取虚拟对象所在位置以及所述虚拟对象向游戏区域瞄准的准心位置,根据所述虚拟对象所在位置以及所述准心位置确定准心方向;
以所述虚拟对象所在位置作为起始位置,朝向所述准心方向做碰撞检测,获取所述游戏区域的碰撞点;
在所述游戏区域的碰撞点所在位置的预设方向上获取检测点,以所述检测点所在位置作为起始位置,朝向所述准心方向做碰撞检测,当在所述准心方向上未检测到第一虚拟物体时,根据所述准心方向的碰撞检测轨迹确定所述游戏区域的边缘点;
根据所述游戏区域的边缘点确定所述游戏区域的目标点,所述目标点所在位置用于所述虚拟对象立足。
2.根据权利要求1所述的方法,其特征在于,所述以所述虚拟对象所在位置作为起始位置,朝向所述准心方向做碰撞检测,获取所述游戏区域的碰撞点,包括:
以所述虚拟对象所在位置作为起始位置,利用碰撞体朝向所述准心方向做碰撞检测;
获取所述碰撞体在所述准心方向上所碰到的第二虚拟物体,将所述碰撞体与所述第二虚拟物体之间的碰撞点作为所述游戏区域的碰撞点。
3.根据权利要求2所述的方法,其特征在于,所述利用碰撞体朝向所述准心方向做碰撞检测的方式,包括:
根据所述碰撞检测的检测距离确定所述碰撞体的体积,其中,所述碰撞体的体积与所述碰撞检测的检测距离正相关。
4.根据权利要求2所述的方法,其特征在于,所述碰撞体为球体碰撞体;
所述利用碰撞体朝向所述准心方向做碰撞检测的方式,包括:
根据所述碰撞检测的检测距离确定所述球体碰撞体的半径,其中,所述球体碰撞体的半径与所述碰撞检测的检测距离正相关。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
当所述碰撞检测的检测距离达到预设距离,但没有碰到所述第二虚拟物体时,判定所述游戏区域的目标点检测失败。
6.根据权利要求1所述的方法,其特征在于,所述在所述游戏区域的碰撞点所在位置的预设方向上获取检测点,以所述检测点所在位置作为起始位置,朝向所述准心方向做碰撞检测,当在所述准心方向上未检测到第一虚拟物体时,根据所述准心方向的碰撞检测轨迹确定所述游戏区域的边缘点,包括:
以所述游戏区域的碰撞点所在位置作为起始位置,朝向所述预设方向做预定长度的碰撞检测;
当没有碰到第三虚拟物体时,以所述预定长度的碰撞检测的末端点作为所述检测点,以所述检测点所在位置作为起始位置,朝向所述准心方向做预设长度的碰撞检测;
当没有碰到所述第一虚拟物体时,将所述预设长度的碰撞检测的末端点作为所述游戏区域的边缘点。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当碰到所述第一虚拟物体时,则以所述检测点所在位置作为起始位置,再次执行所述朝向所述预设方向做预定长度的碰撞检测的步骤,直至找到所述游戏区域的边缘点。
8.根据权利要求1所述的方法,其特征在于,所述根据所述游戏区域的边缘点确定所述游戏区域的目标点,包括:
获取模拟体,所述模拟体与所述虚拟对象的碰撞体的尺寸一致;
将所述模拟体放置于所述游戏区域的边缘点所在位置,当所述模拟体在所述游戏区域的边缘点所在位置可立足时,将所述游戏区域的边缘点作为所述游戏区域的目标点。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
当所述模拟体在所述游戏区域的边缘点所在位置不可立足时,获取与所述模拟体产生碰撞的第四虚拟物体,以及在所述边缘点所在位置预设范围内的第五虚拟物体;
根据所述第四虚拟物体以及所述第五虚拟物体确定碰撞躲避点;
根据所述碰撞躲避点确定所述游戏区域的目标点。
10.根据权利要求9所述的方法,其特征在于,所述根据所述第四虚拟物体以及所述第五虚拟物体确定碰撞躲避点,包括:
根据所述第四虚拟物体以及所述游戏区域的边缘点获取第一躲避点,其中,当所述模拟体在所述第一躲避点所在位置时,所述模拟体与所述第四虚拟物体不产生碰撞;
根据所述第五虚拟物体以及所述第一躲避点获取第二躲避点,其中,当所述模拟体在所述第二躲避点所在位置时,所述模拟体与所述第四虚拟物体、所述第五虚拟物体均不产生碰撞;
将所述第二躲避点作为所述碰撞躲避点。
11.根据权利要求9所述的方法,其特征在于,所述根据所述碰撞躲避点确定所述游戏区域的目标点,包括:
将所述模拟体放置于所述碰撞躲避点所在位置,当所述模拟体在所述碰撞躲避点所在位置可立足时,将所述碰撞躲避点作为所述游戏区域的目标点。
12.根据权利要求9所述的方法,其特征在于,所述根据所述碰撞躲避点确定所述游戏区域的目标点之前,还包括:
获取所述游戏区域的边缘点与所述碰撞躲避点之间的距离;
当所述距离小于预定距离,执行所述根据所述碰撞躲避点确定所述游戏区域的目标点的步骤。
13.一种游戏区域的目标点检测装置,包括:
获取模块,用于获取虚拟对象所在位置以及所述虚拟对象向游戏区域瞄准的准心位置,根据所述虚拟对象所在位置以及所述准心位置确定准心方向;
检测模块,用于以所述虚拟对象所在位置作为起始位置,朝向所述准心方向做碰撞检测,获取所述游戏区域的碰撞点;
检测模块,用于在所述游戏区域的碰撞点所在位置的预设方向上获取检测点,以所述检测点所在位置作为起始位置,朝向所述准心方向做碰撞检测,当在所述准心方向上未检测到第一虚拟物体时,根据所述准心方向的碰撞检测轨迹确定所述游戏区域的边缘点;
确定模块,用于根据所述游戏区域的边缘点确定所述游戏区域的目标点,所述目标点所在位置用于所述虚拟对象立足。
14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至12中任一项所述方法的步骤。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至12中任一项所述方法的步骤。
技术总结