首页> 中国专利> 一种与地形相适应的游戏角色跳跃方法和装置

一种与地形相适应的游戏角色跳跃方法和装置

摘要

本发明公开了一种与地形相适应的游戏角色跳跃方法和装置,该方法可自动查找合适的着陆点,并根据所述着陆点相对于起跳点所处的空间区域赋予角色模型不同的起跳速度,从而生成不同的跳跃轨迹抛物线。本发明能够使得角色模型在跳跃时会根据选择的着陆点来选择不同的跳跃速度,轨迹和方式,让玩家感受到更真实的跳跃,丰富了游戏的表现效果。

著录项

  • 公开/公告号CN102693362A

    专利类型发明专利

  • 公开/公告日2012-09-26

    原文格式PDF

  • 申请/专利权人 北京像素软件科技股份有限公司;

    申请/专利号CN201210141499.9

  • 发明设计人 姚伟;

    申请日2012-05-08

  • 分类号G06F19/00(20110101);

  • 代理机构11332 北京品源专利代理有限公司;

  • 代理人温子云

  • 地址 100043 北京市石景山区八大处高科技园区西井路3号3号楼7170房间

  • 入库时间 2023-12-18 06:37:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-05-18

    授权

    授权

  • 2013-06-05

    实质审查的生效 IPC(主分类):G06F19/00 申请日:20120508

    实质审查的生效

  • 2012-09-26

    公开

    公开

说明书

技术领域

本发明涉及计算机3D游戏技术领域,尤其涉及一种与地形相适应的游戏角 色跳跃方法和装置。

背景技术

目前跳跃已经成为优秀网络游戏的标志之一,尤其是在大型3D多人在线游 戏中,可以极大的增加玩家对游戏世界的真实感受。并且从中可以衍生出很多 相对应的玩法,增加游戏乐趣。

现有技术中的跳跃大部分都是以固定轨迹和速度,通过实时碰撞检测来实 现。在遇到碰撞阻挡后结束此次跳跃。跳跃开始时给与一个固定的向上和向前 的速度,一个重力加速度,这样就可以从角色起始点形成一条抛物线。算法如 下:Y=Y0+(2*Vy+G*T)*T/2;

X=X0+Vx*T;

其中Y,X为跳跃轨迹坐标;Y0、X0为初始坐标位置;Vy、Vx分别为向上和向前 的初始速度;G为向下的重力加速度;T为时间。

由于跳跃初期并没有根据当前游戏世界环境来选择不同轨迹和跳跃方式, 会给用户产生一种抛垒球的感觉,表现效果比较差,在遇到悬崖时一般会选择 摔伤,碰到高壁后一般会表现为迎头撞上墙壁然后垂直落下。这些都会让玩家 感受到游戏的失真和游戏角色缺乏生命力。

发明内容

本发明的目的在于提出一种与地形相适应的游戏角色跳跃方法和装置,能 够使得角色模型在跳跃时会根据选择的目的点来选择不同的跳跃速度,轨迹和 方式。

为达此目的,本发明采用以下技术方案:

一种与地形相适应的游戏角色跳跃方法,包括以下步骤:

A、接收跳跃指令;

B、确定起跳点和着陆点,根据着陆点所处区域赋予角色模型预设的向上起 跳速度;

C、根据角色模型的向上起跳速度、起跳点和着陆点确定跳跃的抛物线;

D、对所述抛物线的路径进行碰撞检测,若所述抛物线没有碰到障碍物,则 角色模型进行跳跃。

步骤B中,赋予角色模型的向上起跳速度是所述着陆点所处区域对应的最 小向上起跳速度;当步骤D中的碰撞检测判定抛物线路径存在障碍物时,则增 加所述角色模型的向上起跳速度并返回步骤C重新确定抛物线;当增加后的角 色模型向上起跳速度超过了所述着陆点所处区域对应的最大向上起跳速度时, 则返回步骤B确定新的着陆点。

当所述跳跃指令为通过鼠标输入的着陆点时,

步骤B中,判断所述鼠标输入的着陆点与起跳点的水平距离是否小于第一 预设距离,若小于,则计算所述鼠标输入的着陆点在起跳点所处水平面上的投 影点,将鼠标输入的着陆点沿着从起跳点至所述鼠标输入的着陆点的投影点的 方向移动第二预设距离后的点作为着陆点;

步骤B中,根据地形数据判断所述鼠标输入的着陆点是否存在游戏地形; 若不存在,则在所述鼠标输入的着陆点所处的水平面内,以所述鼠标输入的着 陆点为圆心、以第三预设距离为半径的圆形区域内进行物理检测,将所述圆形 区域内存在游戏地形且与所述鼠标输入的着陆点距离最近的点作为着陆点。

当所述跳跃指令为来自键盘的跳跃键信号时,步骤B中,在角色模型正前 方距离起跳点为角色模型的最大水平跳跃距离处的垂直方向上做物理检测,将 具有游戏地形且相对于起跳点的垂直高度小于角色模型的最大跳跃高度的点作 为着陆点;若不存在上述的着陆点,则向靠近起跳点的方向偏移第四预设距离 处的垂直方向上继续做物理检测。

步骤D中,将所述抛物线分解为不同斜率的线段,对每个线段分别做碰撞 检测,判断是否与障碍物有碰撞,当所有线段都没有碰到障碍物时,判定所述 抛物线可以进行跳跃。

角色模型进行跳跃的过程中,还可继续接收跳跃指令,将接收到所述跳跃 指令时角色模型所处的点作为起跳点,并进行步骤B至步骤D相同的处理。

接收所述步骤A中的跳跃指令之前,先接受起跳指令,所述起跳指令为来 自鼠标或键盘的跳跃键信号。

一种与地形相适应的游戏角色跳跃装置,包括:接收模块、查询模块、运 算模块和检测模块,其中

接收模块,用于接收跳跃指令;

查询模块,用于确定起跳点和着陆点,根据着陆点所处区域赋予角色模型 预设的向上起跳速度;

运算模块,用于根据角色模型的向上起跳速度、起跳点和着陆点确定跳跃 的抛物线;

检测模块,用于对所述抛物线的路径进行碰撞检测,若所述抛物线没有碰 到障碍物,则角色模型进行跳跃。

所述查询模块赋予角色模型的向上起跳速度是所述着陆点所处区域对应的 最小向上起跳速度;所述检测模块通过碰撞检测判定抛物线路径存在障碍物时, 则增加所述角色模型的向上起跳速度并由所述运算模块重新确定抛物线;当增 加后的角色模型向上起跳速度超过了所述着陆点所处区域对应的最大向上起跳 速度时,则由所述查询模块确定新的着陆点。

当所述接收模块接收的跳跃指令为通过鼠标输入的着陆点时,

所述查询模块判断所述鼠标输入的着陆点与起跳点的水平距离是否小于第 一预设距离,若小于,则计算所述鼠标输入的着陆点在起跳点所处水平面上的 投影点,将鼠标输入的着陆点沿着从起跳点至所述鼠标输入的着陆点的投影点 的方向移动第二预设距离后的点作为着陆点;

所述查询模块根据地形数据判断所述鼠标输入的着陆点是否存在游戏地 形;若不存在,则在所述鼠标输入的着陆点所处的水平面内,以所述鼠标输入 的着陆点为圆心、以第三预设距离为半径的圆形区域内进行物理检测,将所述 圆形区域内存在游戏地形且与所述鼠标输入的着陆点距离最近的点作为着陆 点。

当所述接收模块接收的跳跃指令为来自键盘的跳跃键信号时,所述查询模 块在角色模型正前方距离起跳点为角色模型的最大水平跳跃距离处的垂直方向 上做物理检测,将具有游戏地形且相对于起跳点的垂直高度小于角色模型的最 大跳跃高度的点作为着陆点;若不存在上述的着陆点,则向靠近起跳点的方向 偏移第四预设距离处的垂直方向上继续做物理检测。

所述检测模块将所述抛物线分解为不同斜率的线段,对每个线段分别做碰 撞检测,判断是否与障碍物有碰撞,当所有线段都没有碰到障碍物时,判定所 述抛物线可以进行跳跃。

角色模型进行跳跃的过程中,所述接收模块还可继续接收跳跃指令,将接 收到所述跳跃指令时角色模型所处的点作为起跳点,并由所述查询模块、运算 模块和检测模块进行相同的处理。

所述接收模块接收所述跳跃指令之前,先接受起跳指令,所述起跳指令为 来自鼠标或键盘的跳跃键信号。

采用本发明的技术方案,能够使得角色模型在跳跃时会根据选择的着陆点 以及世界环境的地形数据来自动选择不同的跳跃速度,轨迹和方式,丰富了游 戏的表现效果,让玩家感受到更真实的跳跃。

附图说明

图1是本发明具体实施方式中系统对角色模型跳跃能力的限制说明示意图。

图2是本发明具体实施方式提供的与地形相适应的游戏角色跳跃方法的流 程示意图。

图3是本发明具体实施方式中系统对着陆点相对于起跳点所处区域进行划 分的示例图。

图4是本发明具体实施方式提供的与地形相适应的游戏角色跳跃装置的结 构示意图。

具体实施方式

下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。

首先需要说明的是,系统对角色模型的跳跃能力是有限制的,如图1所示, 包括:最大跳跃高度、最远水平跳跃距离和最大水平高度距离。最大跳跃高度, 是指角色模型跳跃时在垂直方向上高于起跳点的最大高度;最远水平跳跃距离, 是指角色模型跳跃时在水平方向上所能达到的最远距离;最大水平高度距离, 是指角色模型跳跃时在水平方向并且与起跳点处于同一水平面内所能达到的最 大距离。

图2是本发明具体实施方式提供的与地形相适应的游戏角色跳跃方法的流 程示意图。如图2所示,该方法包括:

步骤S201,接收跳跃指令。所述跳跃指令,为通过鼠标输入的着陆点或者 来自键盘的跳跃键信号。所述通过鼠标输入的着陆点,为玩家通过鼠标在世界 地形中点选的点。

步骤S202,确定起跳点和着陆点,根据着陆点所处区域赋予角色模型预设 的向上起跳速度。

当接收到上述跳跃指令时,记录角色模型当前所在位置的地形坐标P0(X0, Y0,Z0),以该点作为起跳点。

当玩家通过鼠标点选输入着陆点时,通常将玩家在世界地形中点选的点作 为着陆点。但以下两种情形,不能直接以玩家点选的点作为着陆点:

(1)玩家点选的点与起跳点在水平方向的距离小于第一预设距离D1时。

利用玩家点选的点和起跳点P0的X坐标和Z坐标,计算两个点在水平方向 的距离,并判断该距离是否小于第一预设距离。若小于,则找到所述玩家点选 的点在起跳点所在水平面上的投影点,将玩家点选的点沿着从起跳点至所述玩 家点选的点的投影点的方向移动第二预设距离后的点作为着陆点。

此情形出现在角色模型正前方视野是一面墙体时,此时玩家无法点到墙后 的地形作为着陆点。玩家点到墙体上某一点时,根据该点与起跳点的X坐标和Z 坐标计算两个点的水平距离。如果两个点的水平距离小于第一预设距离,则令 玩家点选的点的Y坐标与起跳点相同,即得到所述玩家点选的点在起跳点所在 水平面上的投影点。用所述投影点的坐标减去起跳点的坐标,可得到起跳点至 投影点的向量,沿着这个向量的方向,将所述玩家点选的点移动第二预设距离 后得到的点作为修正后的着陆点。相当于将玩家点选在墙体上的点平移到了墙 体后面,通过后续的确定跳跃抛物线以及碰撞检测等步骤,可以使角色模型能 够翻越面前的墙体。

(2)玩家点选的点不存在游戏地形时。

根据玩家点选的点的坐标以及地形数据,判断玩家点选的点是否存在游戏 地形。若不存在游戏地形,则在所述玩家点选的点所处的水平面内,以所述玩 家点选的点为圆心、以第三预设距离为半径的圆形区域内进行物理检测,判断 所述圆形区域内是否进行有存在游戏地形的点,将存在游戏地形并且距离所述 玩家点选的点最近的点作为修正后的着陆点。

此情形出现在角色模型跳跃至游戏地形的边缘时,例如房檐、屋顶、桥梁、 悬崖等处。当玩家通过鼠标点选这些地形的边缘,以控制角色模型跳跃至上述 地形时,由于上述地形狭长窄小的特点有时会出现点选的误差,即点选时没有 点在地形上,使角色模型没有跳跃到想点选的地形上。这时在玩家点选的点所 处的平面内,以所述玩家点选的点为圆心、以第三预设距离为半径的圆形区域 内进行物理检测,将所述圆形区域内存在游戏地形并且距离所述玩家点选的点 最近的点作为修正后的着陆点。此时达到了在一定限度内修正玩家误操作的效 果,保持了游戏体验的连贯性。

当接收的跳跃指令为来自键盘的跳跃键信号时,默认为角色模型将向正前 方跳跃最远水平跳跃距离。

此时在角色模型正前方的最远水平跳跃距离处的垂直方向上进行物理检 测。所述垂直方向的物理检测,从世界的最高点开始逐步向下进行。检测到具 有游戏地形的点时,再判断其高度是否超出了角色模型的最大跳跃高度,若超 出则继续向下进行检测,直到将具有游戏地形同时未超出角色模型最大跳跃高 度的点作为着陆点。如果在所述最远水平跳跃距离处的垂直方向上未找到满足 上述条件的着陆点,则向靠近起跳点的方向偏移第四预设距离,在该处的垂直 方向上继续做物理检测。如果该处的垂直方向上仍未找到满足上述条件的着陆 点,则再向靠近起跳点的方向偏移第四预设距离,继续进行垂直方向的检测。 即完成一个在水平方向上,从角色模型正前方最远水平跳跃距离处,向起跳点 逐步缩限的垂直方向的物理检测,来找到着陆点。

上述为系统根据不同的跳跃指令查找并确定着陆点的过程,在确定着陆点 后,要根据着陆点相对于起跳点所处的空间区域赋予角色模型预设的向上起跳 速度。

根据角色模型的最大跳跃高度和最大水平跳跃距离,可确定能够出现着陆 点的一个区域范围。如图3所示,在这个范围内,可进一步划分为若干子区域, 如图中的划分出A、B、C三个区。图3为本发明具体实施方式中系统对着陆点 相对于起跳点所处区域进行划分的示例图,实际的子区域划分方式可根据游戏 地形环境、游戏角色需要等因素进行任意划分。为每一个子区域预设相应的最 小向上起跳速度和最大向上起跳速度。即如果确定的着陆点处于划分的某个子 区域中,则赋予角色模型该子区域相对应的最小向上起跳速度,并以该子区域 相对应的最大向上起跳速度作为角色模型在此次跳跃中在垂直方向的速度限 制。

步骤S203,根据角色模型的向上起跳速度、起跳点坐标和着陆点坐标确定 跳跃的抛物线。

此时需建立临时的二维坐标系;以起跳点为原点,以起跳点的垂直方向为Y 轴;找到着陆点在起跳点所处水平面的投影点,以起跳点到所述投影点的方向 为X轴。则在此坐标系下确定起跳点坐标(X0,Y0)、着陆点坐标(X,Y),已知 角色模型当前的向上起跳速度Vy和游戏场景的重力加速度G,代入如下公式:

Y=Y0+(2*Vy+G*T)*T/2;                    (1)

X=X0+Vx*T;                        (2)

通过公式(1)求出时间T;再通过公式(2)求出水平方向初始速度Vx;通过向 量三角形合成出初始速度V0的大小和方向。通过公式(1)和(2)消去时间参 数T,可得到跳跃抛物线通式Y=G/2Vx2(X-X0)2+Y0+Vy;将已知的X0、Y0、Vy和求得 的Vx代入,即可得到具有当前初始速度V0的跳跃轨迹抛物线。

步骤S204,对所述抛物线的路径进行碰撞检测,若所述抛物线没有碰到障 碍物,则角色模型进行跳跃。对步骤S203中求得跳跃轨迹抛物线在进行碰撞检 测,系统将所述抛物线分解为若干不同斜率的直线线段,对每一条线段在世界 地形中做碰撞检测,查看是否与物体碰撞,当所有线段都没有与其他物体发生 碰撞时,便判定此条抛物线可以进行跳跃。只要有一条线段与其他物体发生碰 撞,则判定该跳跃轨迹上存在障碍物,不能依据此抛物线进行跳跃,此时系统 会以一个预定值增加角色模型的向上起跳速度,用来根据步骤S203所述过程重 新确定抛物线

在重新确定抛物线之前,还需要判断所述角色模型增加后的向上起跳速度 是否超过了所述预设的与着陆点所处区域相对应的最大向上起跳速度。如果未 超过,则根据新的向上起跳速度以及原有的起跳点和着陆点,确定新的跳跃轨 迹抛物线,对新的抛物线继续进行碰撞检测;如果超过,则表明由于障碍物的 阻挡,该着陆点不可用,需要根据前面步骤S202中所述的规则查找新的着陆点。

角色模型根据确定的抛物线轨迹进行跳跃。在跳跃的过程中还可以继续接 收所述跳跃指令。将角色模型在跳跃过程中再次接收到所述跳跃指令时所处的 点作为新的起跳点,并进行与上述步骤S202至步骤S204相同的处理。不同之 处在于,在由所述跳跃过程中接收的跳跃指令启动的跳跃中,角色模型的跳跃 能力会增强,即此时角色模型的最大跳跃高度、最远水平跳跃距离和最大水平 高度距离会增大,相应的,着陆点的可选范围也会随之扩大,使角色模型在此 次跳跃中可以跳到更高更远的地方。

在步骤S201中接收跳跃指令之前,可以先接收起跳指令。所述起跳指令为 来自鼠标或键盘的跳跃键信号,即玩家通过鼠标或者键盘上设置的跳跃键输入 的信号。接收起跳指令后,角色模型会做出一个想要起跳的动作,而并不会进 行实际跳跃,如果在一定预设时间内接收到了跳跃指令,游戏角色才进入实际 跳跃的过程。引入起跳指令可以丰富游戏角色的动作表现力。

图4是本发明具体实施方式提供的与地形相适应的游戏角色跳跃装置的结 构示意图。如图4所示,该装置包括接收模块401、查询模块402、运算模块403 和检测模块404,所述接收模块401、查询模块402、运算模块403和检测模块 404依次连接,其中,

接收模块401,用于接收跳跃指令;

查询模块402,用于确定起跳点和着陆点,根据着陆点所处区域赋予角色模 型预设的向上起跳速度;

运算模块403,用于根据角色模型的向上起跳速度、起跳点和着陆点确定跳 跃的抛物线;

检测模块404,用于对所述抛物线的路径进行碰撞检测,若所述抛物线没有 碰到障碍物,则角色模型进行跳跃。

所述查询模块402赋予角色模型的向上起跳速度是所述着陆点所处区域对 应的最小向上起跳速度;所述检测模块404通过碰撞检测判定抛物线路径存在 障碍物时,则增加所述角色模型的向上起跳速度并由所述运算模块403重新确 定抛物线;当增加后的角色模型向上起跳速度超过了所述着陆点所处区域对应 的最大向上起跳速度时,则由所述查询模块402确定新的着陆点。当所述接收 模块401接收的跳跃指令为通过鼠标输入的着陆点时,所述查询模块402可以 判断所述鼠标输入的着陆点与起跳点的水平距离是否小于第一预设距离,若小 于,则计算所述鼠标输入的着陆点在起跳点所处水平面上的投影点,将鼠标输 入的着陆点沿着从起跳点至所述鼠标输入的着陆点的投影点的方向移动第二预 设距离后的点作为着陆点。

当所述接收模块401接收的跳跃指令为通过鼠标输入的着陆点时,所述查 询模块402还可以根据地形数据判断所述鼠标输入的着陆点是否存在游戏地形; 若不存在,则在所述鼠标输入的着陆点所处的水平面内,以所述鼠标输入的着 陆点为圆心、以第三预设距离为半径的圆形区域内进行物理检测,将所述圆形 区域内存在游戏地形且与所述鼠标输入的着陆点距离最近的点作为着陆点。

当接收模块401接收的跳跃指令为来自键盘的跳跃键信号,所述查询模块 402在角色模型正前方距离起跳点为角色模型的最大水平跳跃距离处的垂直方 向上做物理检测,将具有游戏地形且相对于起跳点的垂直高度小于角色模型的 最大跳跃高度的点作为着陆点;若不存在上述的着陆点,则向靠近起跳点的方 向偏移第四预设距离处的垂直方向上继续做物理检测。

所述检测模块404进行碰撞检测时,将所述抛物线分解为不同斜率的线段, 对每个线段分别做碰撞检测,判断是否与障碍物有碰撞,当所有线段都没有碰 到障碍物时,判定所述抛物线可以进行跳跃。

角色模型进行跳跃的过程中,所述接收模块401还可继续接收跳跃指令, 将接收到所述跳跃指令时角色模型所处的点作为起跳点,并由所述查询模块 402、运算模块403和检测模块404进行相同的处理。

所述接收模块401接收所述跳跃指令之前,还可以先接受起跳指令,所述 起跳指令为来自鼠标或键盘的跳跃键信号。

采用本发明的技术方案,能够使得角色模型在跳跃时会根据选择的着陆点 以及世界环境的地形数据来自动选择不同的跳跃速度,轨迹和方式,丰富了游 戏的表现效果,让玩家感受到更真实的跳跃。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局 限于此,任何熟悉该技术的人在本发明所揭露的技术范围内,可轻易想到的变 化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该 以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号