一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种二维游戏角色移动控制方法、装置及存储介质与流程

2021-10-19 23:46:00 来源:中国专利 TAG:游戏 装置 角色 特别 控制


1.本发明涉及二维游戏领域,特别涉及一种二维游戏角色移动控制方法、装置及存储介质。


背景技术:

2.在二维游戏场景中,对游戏角色的移动控制将直接影响游戏玩家的游玩体验。相关技术中,在进行游戏角色的移动控制时,游戏物理引擎需要对游戏角色与其他物体(例如地面、墙体等)进行碰撞检测,当两者发生碰撞时则阻止游戏角色进行移动,而该引擎通常采用物理模拟的方式进行碰撞检测,这种方式容易导致游戏角色卡入其他物体中,影响玩家的游玩体验,同时这种方式也难以添加非物理的角色移动控制方式,减少了二维游戏的移动控制方式。


技术实现要素:

3.本发明的目的是提供一种二维游戏角色移动控制方法、装置及存储介质,可采用射线机制计算游戏角色的可移动距离,进而可利用该距离对游戏角色的移动范围进行限制,达到碰撞检测效果且无需物理模拟,进而有效避免由物理模拟所导致的游戏角色卡入其他物体的问题。
4.为解决上述技术问题,本发明提供一种二维游戏角色移动控制方法,包括:
5.当检测到游戏角色移动时,获取所述游戏角色的角色位置及原始移动距离;
6.以所述游戏角色为射线起点向水平方向发射射线,利用游戏物理引擎确定所述射线与地形碰撞体之间的第一碰撞位置,并利用所述角色位置及所述第一碰撞位置计算水平可移动距离;
7.以所述游戏角色为所述射线起点向竖直方向发射所述射线,利用所述游戏物理引擎确定所述射线与所述地形碰撞体之间的第二碰撞位置,并利用所述角色位置及所述第二碰撞位置计算竖直可移动距离;
8.利用所述水平可移动距离、所述竖直可移动距离及所述原始移动距离对所述游戏角色进行移动控制。
9.可选地,在检测游戏角色移动之前,还包括:
10.获取所述游戏角色的第一高度、第一宽度及游戏编辑器可提供的最小砖块的第二高度和第二宽度;
11.利用所述第一高度和所述第二高度计算第一射线数量,并利用所述第一射线数量及所述第一高度计算第一间距;
12.利用所述第一宽度和所述第二宽度计算第二射线数量;并利用所述第二射线数量及所述第一宽度计算第二间距;
13.相应的,所述以所述游戏角色为射线起点向水平方向发射射线,包括:
14.以所述游戏角色的水平边界为所述射线起点,以所述第一间距为相邻所述射线间
的间隔距离,向所述水平方向发射数量为所述第一射线数量的所述射线;
15.相应的,所述以所述游戏角色为所述射线起点向竖直方向发射所述射线,包括:
16.以所述游戏角色的竖直边界为所述射线起点,以所述第二间距为相邻所述射线间的间隔距离,向所述竖直方向发射数量为所述第二射线数量的所述射线。
17.可选地,当所述竖直边界为下边界时,所述以所述游戏角色的竖直边界为所述射线起点,以所述第二间距为相邻所述射线间的间隔距离,向所述竖直方向发射数量为所述第二射线数量的所述射线,包括:
18.将所述下边界向上移动预设距离得到斜坡检测边界,并以所述斜坡检测边界为所述射线起点,以所述第二间距为相邻所述射线间的间隔距离,向所述竖直方向发射数量为所述第二射线数量的所述射线。
19.可选地,在利用所述角色位置及所述第一碰撞位置计算水平可移动距离之前,还包括:
20.利用所述游戏物理引擎确定所述第一碰撞位置的第一法线,并判断所述第一法线指向的方向是否为所述水平方向;
21.若是,则执行所述利用所述角色位置及所述第一碰撞位置计算水平可移动距离的步骤;
22.若否,则利用所述游戏物理引擎进行物理模拟碰撞检测,并根据碰撞检测结果对所述游戏角色进行移动控制。
23.可选地,当所述竖直方向为竖直向下方向,所述竖直边界为下边界时,在利用所述角色位置及所述第二碰撞位置计算竖直可移动距离之前,还包括:
24.用所述游戏物理引擎确定所述第二碰撞位置的第二法线,并判断所述第二法线指向的方向是否为所述竖直方向;
25.若是,则执行所述利用所述角色位置及所述第二碰撞位置计算竖直可移动距离的步骤;
26.若否,则获取从所述下边界中央发射的目标射线,并利用所述目标射线对应的第二碰撞位置执行所述利用所述角色位置及所述第二碰撞位置计算竖直可移动距离的步骤。
27.可选地,在当检测到游戏角色移动之后,还包括:
28.获取所述游戏角色的移动方向,并判断所述移动方向是否存在水平分量或竖直向上分量;
29.若所述移动方向存在所述水平分量,则执行所述以所述游戏角色为射线起点向水平方向发射射线的步骤,得到所述水平可移动距离;
30.若所述移动方向存在所述竖直向上分量,则将所述竖直方向设置为竖直向上,并利用完成设置的竖直方向执行所述以所述游戏角色为所述射线起点向竖直方向发射所述射线的步骤,得到竖直向上可移动距离;
31.在得到所述水平可移动距离或所述竖直向上可移动距离之后,将所述竖直方向设置为竖直向下,并利用完成设置的竖直方向执行所述以所述游戏角色为所述射线起点向竖直方向发射所述射线的步骤,得到竖直向下可移动距离。
32.可选地,所述利用所述水平可移动距离、所述竖直可移动距离及所述原始移动距离对所述游戏角色进行移动控制,包括:
33.确定所述原始移动距离在所述水平方向上的第一分量距离和在所述竖直方向上的第二分量距离;
34.利用所述第一分量距离及所述水平可移动距离中的最小值,在所述水平方向上对所述游戏角色进行所述移动控制;
35.判断所述移动方向是否存在竖直向上分量;
36.若是,则利用所述第二分量距离及所述竖直向上可移动距离中的最小值,在所述竖直向上方向上对所述游戏角色进行所述移动控制,并利用所述竖直向下可移动距离在所述竖直向下方向上对所述游戏角色进行所述移动控制;
37.若否,则利用所述第二分量距离及所述竖直向下可移动距离中的最小值,在所述竖直向下方向上对所述游戏角色进行所述移动控制。
38.可选地,在判定所述移动方向存在竖直向上分量之后,还包括:
39.判断所述竖直向下可移动距离是否为负;
40.若是,则执行所述利用所述第二分量距离及所述竖直向上可移动距离中的最小值,在所述竖直向上方向上对所述游戏角色进行所述移动控制,并利用所述竖直向下可移动距离在所述竖直向下方向上对所述游戏角色进行所述移动控制的步骤;
41.若否,则将所述角色位置还原为移动前的角色位置;
42.相应的,在判定所述移动方向不存在竖直向上分量之后,还包括:
43.将所述竖直方向设置为竖直向上,并利用完成设置的竖直方向执行所述以所述游戏角色为所述射线起点向竖直方向发射所述射线的步骤,得到竖直向上可移动距离;
44.判断所述竖直向下可移动距离是否为负;
45.若是,则在判定所述竖直向上可移动距离的绝对值大于所述竖直向下可移动距离的绝对值时,设置平移距离为所述竖直向下可移动距离的绝对值,并根据所述平移距离对所述角色位置进行竖直向上平移;
46.若否,则执行所述利用所述第二分量距离及所述竖直向下可移动距离中的最小值,在所述竖直向下方向上对所述游戏角色进行所述移动控制的步骤。
47.可选地,当所述地形碰撞体为可穿越地形碰撞体时,在检测游戏角色移动之前,还包括:
48.获取所述可穿越地形碰撞体的轮廓点、前向单位向量和向上单位向量;
49.根据所述轮廓点的排列顺序,利用所述轮廓点的位置信息计算有向面积及生成有向轮廓边;
50.利用所述前向单位向量、所述向上单位向量及所述有向面积为每一所述有向轮廓边计算剪裁判定值,并将所述剪裁判定值小于零的有向轮廓边进行移除;
51.将剩余的有向轮廓边添加至所述游戏物理引擎,以使所述游戏物理引擎利用所述剩余的有向轮廓边及所述射线进行碰撞检测。
52.本发明还提供一种二维游戏角色移动控制装置,包括:
53.获取模块,用于当检测到游戏角色移动时,获取所述游戏角色的角色位置及原始移动距离;
54.第一计算模块,用于以所述游戏角色为射线起点向水平方向发射射线,利用游戏物理引擎确定所述射线与地形碰撞体之间的第一碰撞位置,并利用所述角色位置及所述第
一碰撞位置计算水平可移动距离;
55.第二计算模块,用于以所述游戏角色为所述射线起点向竖直方向发射所述射线,利用所述游戏物理引擎确定所述射线与所述地形碰撞体之间的第二碰撞位置,并利用所述角色位置及所述第二碰撞位置计算竖直可移动距离;
56.移动控制模块,用于利用所述水平可移动距离、所述竖直可移动距离及所述原始移动距离对所述游戏角色进行移动控制。
57.本发明还提供一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上述所述的二维游戏角色移动控制方法。
58.本发明提供一种二维游戏角色移动控制方法,包括:当检测到游戏角色移动时,获取所述游戏角色的角色位置及原始移动距离;以所述游戏角色为射线起点向水平方向发射射线,利用游戏物理引擎确定所述射线与地形碰撞体之间的第一碰撞位置,并利用所述角色位置及所述第一碰撞位置计算水平可移动距离;以所述游戏角色为所述射线起点向竖直方向发射所述射线,利用所述游戏物理引擎确定所述射线与所述地形碰撞体之间的第二碰撞位置,并利用所述角色位置及所述第二碰撞位置计算竖直可移动距离;利用所述水平可移动距离、所述竖直可移动距离及所述原始移动距离对所述游戏角色进行移动控制。
59.可见,本发明在检测到游戏角色移动时,将会以游戏角色为射线起点,向水平方向及竖直方向发射射线,并利用游戏角色的角色位置及射线与地形碰撞体之间的碰撞位置计算游戏角色的水平可移动距离和竖直可移动距离,最后以游戏角色的原始移动距离及水平可移动距离和竖直可移动距离对游戏角色进行移动控制,换而言之,本发明采用游戏物理引擎的射线检测机制,利用射线与地形碰撞体相碰撞的方式确定了游戏角色的可移动距离范围,进而可有效利用可移动距离对游戏角色的移动进行限制,达到碰撞检测的效果,无需进行物理模拟,能有有效避免利用物理模拟进行碰撞检测所导致的游戏角色卡入其他物体的问题;同时,由于本发明采用射线检测机制而非物理模拟的方式进行碰撞检测,可确保游戏角色采用非物理的方式进行移动控制,进而可有效丰富二维游戏的控制方式,提升游戏玩家的使用体验。本发明还提供一种二维游戏角色控制装置及存储介质,具有上述有益效果。
附图说明
60.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
61.图1为本发明实施例所提供的一种二维游戏角色移动控制方法的流程图;
62.图2为本发明实施例所提供的一种射线发射的示意图;
63.图3为本发明实施例所提供的一种二维游戏角色移动控制装置的结构框图。
具体实施方式
64.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是
本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
65.相关技术中,在二维(2d)游戏场景中,当进行游戏角色的移动控制时,游戏物理引擎需要对游戏角色与其他物体(例如地面、墙体等)进行碰撞检测,当两者发生碰撞时则阻止游戏角色进行移动,而该引擎通常采用物理模拟的方式进行碰撞检测,这种方式容易导致游戏角色卡入其他物体中,影响玩家的游玩体验,同时这种方式也难以添加非物理的角色移动控制方式,减少了二维游戏的移动控制方式。有鉴于此,本发明提供一种二维游戏角色移动控制方法,可采用射线机制计算游戏角色的可移动距离,进而可利用该距离对游戏角色的移动范围进行限制,达到碰撞检测效果且无需物理模拟,进而有效避免由物理模拟所导致的游戏角色卡入其他物体的问题。请参考图1,图1为本发明实施例所提供的一种二维游戏角色移动控制方法的流程图,该方法可以包括:
66.s101、当检测到游戏角色移动时,获取游戏角色的角色位置及原始移动距离。
67.可以理解的是,游戏角色的移动由游戏物理引擎进行检测,其中游戏物理引擎是一种通过为刚性物体赋予真实的物理属性来计算运动、旋转和碰撞反应的应用程序。本发明实施例并不限定具体的游戏物理引擎,例如可以为unity游戏引擎,也可以为unreal engine游戏引擎,其中,unity游戏引擎和unreal engine游戏引擎均为目前广为使用的、可用于二维游戏开发的游戏引擎。在本发明实施例中,考虑到unity游戏引擎提供了丰富的二维游戏开发工具,易于开发二维游戏,因此在本发明实施例中,游戏物理引擎可以为unity游戏引擎。进一步,在确定游戏角色发生移动时,还需获取游戏角色当前的角色位置及原始移动距离,以便利用角色位置及原始移动距离进行碰撞检测及移动控制。本发明实施例并不限定获取角色位置和原始移动距离的具体方式,可参考游戏物理引擎的相关技术。
68.s102、以游戏角色为射线起点向水平方向发射射线,利用游戏物理引擎确定射线与地形碰撞体之间的第一碰撞位置,并利用角色位置及第一碰撞位置计算水平可移动距离。
69.需要说明的是,地形碰撞体是二维游戏中带有碰撞属性的一种实体游戏元素,例如地面、墙体或其他的障碍物。本发明实施例采用射线检测机制计算游戏角色的可移动距离,进而利用可移动距离限制游戏角色的移动范围。具体的,将以游戏角色为射线起点向指定方向(例如水平方向、竖直方向等)发射射线,当射线与地形碰撞体发生碰撞时,游戏物理引擎可以获取到碰撞对应的碰撞位置,进而可计算得到碰撞位置与角色位置的相对距离,进而便可将该相对位置作为游戏角色的可移动距离。由于游戏角色仅能在可移动距离范围内移动,因此在本发明实施例中可采用该射线检测机制,实现现有碰撞检测限制游戏角色移动的效果;同时,由于本方法采用的射线检测机制为一种不需要物理模拟的、非物理的碰撞检测方式,因此本方法可避免由物理模拟所导致的游戏角色卡入地形碰撞体的情况;进一步,也正是由于本方法无需物理模拟,因此对游戏角色的运动方式可摆脱物理模拟的限制,进而可采用非物理的运动方式对游戏角色进行移动控制。
70.需要说明的是,本发明实施例并不限定具体的地形碰撞体的类型,例如可以由无法穿越的地形碰撞体及可穿越的地形碰撞体,其中无法穿越的地形碰撞体为游戏角色需要绕行的地形碰撞体;而对于可穿越地形碰撞体,游戏角色可从其内部下方穿过,具体可参考二维游戏的相关技术。
71.需要说明的是,本发明实施例并不限定发射射线的具体方式,可参考游戏物理引擎的相关技术;本发明实施例也不限定利用游戏物理引擎确定第一碰撞位置的具体方式,同样可参考游戏物理引擎的相关技术,例如可通过游戏物理引擎的专用接口中获取到第一碰撞位置。
72.进一步,在本发明实施例中,水平方向包括水平向左和水平向右。本发明实施例并不限定以游戏角色的哪一位置作为射线起点向水平方向发射射线,例如可以以游戏角色中央作为射线起点,也可以以游戏角色的水平边界(左边界和右边界)作为射线起点,其中水平边界为一段竖直的线段。为了提升射线检测机制的准确性及可靠性,在本发明实施例中,可以以游戏角色的水平边界为射线起点向水平方向发射射线。可以理解的是,水平边界的选取与具体的水平方向有关,例如当水平方向为水平向左时,以游戏角色的左边界作为射线起点;当水平方向为水平向右时,以游戏角色的右边界作为射线起点。进一步,本发明实施例并不限定发射射线的数量,该数量可以为一条,也可以为多条。为了避免单一射线所带来的判定错误问题,在本发明实施例中,可以以水平边界上任意点为射线起点,向水平方向发射多条射线。本发明实施例并不限定水平方向的射线的具体数量,可根据实际应用需求进行设定。当然,水平方向上的射线数量也可以利用游戏角色的高度及游戏编辑器可提供的最小砖块的高度计算得到,其中游戏编辑器是与游戏物理引擎配套的游戏开发框架,砖块(tile)为二维游戏场景中的实体游戏元素,最小砖块则为游戏编辑器可提供的最小实体游戏元素,利用游戏角色的高度及游戏编辑器可提供的最小砖块的高度计算水平方向上射线的数量,可确保射线能够对二维游戏场景中任意的实体游戏元素进行碰撞检测,进而提升射线检测机制的可靠性和有效性。需要说明的是,本发明实施例并不限定最小砖块的具体尺寸,可根据具体选择的游戏物理引擎,参考相关技术。本发明实施例也不限定游戏角色具体的高度,可根据实际应用需求进行设置。进一步,可以理解的是,为了进一步提升射线检测机制的可靠性及有效性,多条射线可以等间距分布,其具体的间距数值可根据射线的数量及游戏角色的高度计算得到。
73.s103、以游戏角色为射线起点向竖直方向发射射线,利用游戏物理引擎确定射线与地形碰撞体之间的第二碰撞位置,并利用角色位置及第二碰撞位置计算竖直可移动距离。
74.需要说明的是,本发明实施例并不限定发射射线及确定第二碰撞位置的具体方式,可参考游戏物理引擎的相关技术。进一步,在本发明实施例中,竖直方向可以包括竖直向上和竖直向下。本发明实施例并不限定以游戏角色的哪一位置作为射线起点向竖直方向发射射线,例如可以以游戏角色中央作为射线起点,也可以以游戏角色的竖直边界(上边界和下边界)作为射线起点,其中竖直边界为一段水平的线段。为了提升射线检测机制的准确性及可靠性,在本发明实施例中,可以以游戏角色的竖直边界为射线起点向竖直方向发射射线。可以理解的是,竖直边界的选取与具体的竖直方向有关,例如当竖直方向为竖直向上时,以游戏角色的上边界作为射线起点;当竖直方向为竖直向下时,以游戏角色的下边界作为射线起点。进一步,本发明实施例并不限定发射射线的数量,该数量可以为一条,也可以为多条。为了避免单一射线所带来的判定错误问题,在本发明实施例中,可以以竖直边界上任意点为射线起点,向竖直方向发射多条射线。本发明实施例并不限定竖直方向的射线的具体数量,可根据实际应用需求进行设定。当然,竖直方向上的射线数量也可以利用游戏角
色的宽度及游戏编辑器可提供的最小砖块的宽度计算得到,利用游戏角色的宽度及游戏编辑器可提供的最小砖块的宽度计算竖直方向上射线的数量,可确保射线能够对二维游戏场景中任意的实体游戏元素进行碰撞检测,进而提升射线检测机制的可靠性和有效性。进一步,可以理解的是,为了进一步提升射线检测机制的可靠性及有效性,多条射线可以等间距分布,其具体的间距数值可根据射线的数量及游戏角色的宽度计算得到。
75.在一种可能的情况中,在检测游戏角色移动之前,还可以包括:
76.步骤11:获取游戏角色的第一高度、第一宽度及游戏编辑器可提供的最小砖块的第二高度和第二宽度。
77.步骤12:利用第一高度和第二高度计算第一射线数量,并利用第一射线数量及第一高度计算第一间距。
78.具体的,第一射线数量可利用第一高度除以第二高度,并将商值取整并加一,得到所述第一射线数量。
79.步骤13:利用第一宽度和第二宽度计算第二射线数量;并利用第二射线数量及第一宽度计算第二间距。
80.具体的,第二射线数量可利用第一宽度除以第二宽度,并将商值取整并加一,得到所述第二射线数量。
81.相应的,以游戏角色为射线起点向水平方向发射射线,包括:
82.步骤21:以游戏角色的水平边界为射线起点,以第一间距为相邻射线间的间隔距离,向水平方向发射数量为第一射线数量的射线。
83.相应的,以游戏角色为射线起点向竖直方向发射射线,包括:
84.步骤31:以游戏角色的竖直边界为射线起点,以第二间距为相邻射线间的间隔距离,向竖直方向发射数量为第二射线数量的射线。
85.可以理解的是,若水平方向及竖直方向均发射多条射线时,各方向上均会得到多个碰撞位置,进而得到多个相对距离,此时便可将这些相对距离中的最小值设置为游戏角色的可移动距离。例如利用角色位置及第一碰撞位置计算得到多个水平相对距离,并将这些水平相对距离中的最小值设置为水平可移动距离;再例如,利用角色位置及第二碰撞位置计算得到多个竖直相对距离,并将这些竖直相对距离中的最小值设置为竖直可移动距离。需要说明的是,水平相对距离及竖直相对距离的计算起点均为对应的射线边界。
86.进一步,当竖直边界为游戏角色的下边界时,考虑到游戏角色可能嵌入水平地面,或是二维游戏场景中可能存在斜坡地形,进而游戏角色可能嵌入斜坡地形,其中斜坡地形为游戏角色可通过的地形碰撞体,游戏角色可在斜坡地形的上边界进行移动。为优化显示效果,在本发明实施例中,当竖直边界为下边界时,可将下边界向上移动预设距离,得到斜坡检测边界,并以斜坡边界为射线起点进行射线发射。
87.在一种可能的情况中,当竖直边界为下边界时,以游戏角色的竖直边界为射线起点,以第二间距为相邻射线间的间隔距离,向竖直方向发射数量为第二射线数量的射线,包括:
88.步骤41:将下边界向上移动预设距离得到斜坡检测边界,并以斜坡检测边界为射线起点,以第二间距为相邻射线间的间隔距离,向竖直方向发射数量为第二射线数量的射线。
89.需要说明的时,本发明实施例并不限定预设距离的具体数值,可根据实际应用需求进行设置。
90.请参考图2,图2为本发明实施例所提供的一种射线发射的示意图。可见本发明实施例在水平方向及竖直方向均等间距地发射了多条射线,而在竖直向下方向上,为提升检测效果,避免游戏角色卡入地面及斜坡的情况,射线起点进行了向上平移。
91.进一步,当游戏角色向水平方向发射的射线碰撞到斜坡地形时,由于斜坡地形可以被游戏角色通过,不会限制游戏角色移动,因此可不需要利用射线机制计算游戏角色与斜坡地形的相对距离。而为了实现上述效果,需要对斜坡地形进行筛选。在本发明实施例中,考虑到水平发射的射线碰撞到斜坡地形时,垂直于第一碰撞位置生成的法线将无法保持水平,因此本发明实施例可在第一碰撞位置生成法线,进而根据法线的倾斜情况,对地形进行筛选。
92.在一种可能的情况中,在利用角色位置及第一碰撞位置计算水平可移动距离之前,还可以包括:
93.步骤51:利用游戏物理引擎确定第一碰撞位置的第一法线,并判断第一法线指向的方向是否为水平方向;若是,则进入步骤52;若否,则进入步骤53;
94.步骤52:执行利用角色位置及第一碰撞位置计算水平可移动距离的步骤;
95.步骤53:利用游戏物理引擎进行物理模拟碰撞检测,并根据碰撞检测结果对游戏角色进行移动控制。
96.当第一法线所指向的方向不为水平方向时,则说明射线所碰撞的地形碰撞体为斜坡地形,此时便可利用游戏引擎原有的物理模拟碰撞检测,对游戏角色进行水平方向的移动控制,实现游戏角色在斜坡地形的自由活动。
97.进一步,考虑到游戏角色在斜坡地形上可能存在卡入地形或悬浮在地面上的情况,为了进一步优化显示效果,也可以在计算竖直向下可移动距离时,对斜坡地形进行特殊处理。具体的,当竖直向下发射射线时,当射线碰撞到水平地面时,碰撞位置对应的法线指向竖直方向;而当射线碰撞到斜坡地面时,其法线将无法保持竖直方向,因此在计算竖直向下可移动距离时,可根据碰撞点法线是否指向竖直方向,判断射线是否与斜坡地面碰撞。
98.在一种可能的情况中,当竖直方向为竖直向下方向,竖直边界为下边界时,在利用角色位置及第二碰撞位置计算竖直可移动距离之前,还包括:
99.步骤61:用游戏物理引擎确定第二碰撞位置的第二法线,并判断第二法线指向的方向是否为竖直方向;若是,则进入步骤62;若否,则进入步骤63;
100.步骤62:执行利用角色位置及第二碰撞位置计算竖直可移动距离的步骤;
101.步骤63:获取从下边界中央发射的目标射线,并利用目标射线对应的第二碰撞位置执行利用角色位置及第二碰撞位置计算竖直可移动距离的步骤。
102.为了避免游戏角色卡入斜坡地形或悬浮与斜坡地形之上,造成不好的显示效果,在确定竖直向下发射的射线与斜坡地面碰撞后,将采用下边界中央发射的射线作为计算可竖直向下可移动距离的目标射线,并利用目标射线的第二碰撞位置与角色位置计算可移动距离,可确保游戏角色在斜坡地形上具有较好的显示效果。当然,若射线起点为下边界向上平移预设距离得到的斜坡检测边界,则可以将从斜坡检测边界中央发射的射线作为上述目标射线。
103.进一步,本发明实施例并不限定水平可移动距离及竖直可移动距离是否根据游戏角色的移动方向计算,例如当游戏角色在水平方向移动时,计算水平可移动距离;当游戏角色在竖直方向上运动时(例如跳跃),计算竖直可移动距离。当设备运算资源充足,不易产生卡顿时,可以在检测游戏角色移动时,便立刻计算水平可移动距离(包含水平向左可移动距离及水平向右可移动距离)及竖直可移动距离(包括竖直向上可移动距离及竖直向下可移动距离),当需要减少不必要的运算,进而减轻设备运算压力时,可以确定游戏角色的移动方向,并确定移动方向在水平方向及竖直方向的分量,进而仅计算分量所指向的方向的可移动距离。在本发明实施例中,为避免不必要的计算,提升设备运行效率,可以在确定游戏角色移动时,进一步确定游戏角色的移动方向,并仅计算移动方向在水平方向和竖直方向的分量所指向的方向的可移动距离。
104.s104、利用水平可移动距离、竖直可移动距离及原始移动距离对游戏角色进行移动控制。
105.可以理解的是,水平可移动距离及竖直可移动距离规定了游戏角色的可移动范围,因此可利用水平可移动距离及竖直可移动距离对游戏角色的原始移动距离进行有效限制,确保游戏角色能够被地形碰撞体有效限制。
106.基于上述实施例,本发明在检测到游戏角色移动时,将会以游戏角色为射线起点,向水平方向及竖直方向发射射线,并利用游戏角色的角色位置及射线与地形碰撞体之间的碰撞位置计算游戏角色的水平可移动距离和竖直可移动距离,最后以游戏角色的原始移动距离及水平可移动距离和竖直可移动距离对游戏角色进行移动控制,换而言之,本发明采用游戏物理引擎的射线检测机制,利用射线与地形碰撞体相碰撞的方式确定了游戏角色的可移动距离范围,进而可有效利用可移动距离对游戏角色的移动进行限制,达到碰撞检测的效果,无需进行物理模拟,能有有效避免利用物理模拟进行碰撞检测所导致的游戏角色卡入其他物体的问题;同时,由于本发明采用射线检测机制而非物理模拟的方式进行碰撞检测,可确保游戏角色采用非物理的方式进行移动控制,进而可有效丰富二维游戏的控制方式,提升游戏玩家的使用体验。
107.基于上述实施例,为了降低设备计算量,避免不必要的碰撞运算,在本发明实施例中,在确定游戏角色移动之后,还可进一步获取游戏角色的移动方向,进而根据移动方向进行水平方向可移动距离及竖直方向可移动距离的计算。在一种可能的情况中,在当检测到游戏角色移动之后,还可以包括:
108.s201、获取游戏角色的移动方向,并判断移动方向是否存在水平分量或竖直向上分量。
109.需要说明的是,本发明实施例并不限定移动方向的获取方式,可参考游戏物理引擎的相关技术。
110.s202、若移动方向存在水平分量,则执行以游戏角色为射线起点向水平方向发射射线的步骤,得到水平可移动距离。
111.可以理解的是,移动方向的水平分量为水平向左分量或水平向右分量。
112.s203、若移动方向存在竖直向上分量,则将竖直方向设置为竖直向上,并利用完成设置的竖直方向执行以游戏角色为射线起点向竖直方向发射射线的步骤,得到竖直向上可移动距离。
113.s204、在得到水平可移动距离或竖直向上可移动距离之后,将竖直方向设置为竖直向下,并利用完成设置的竖直方向执行以游戏角色为射线起点向竖直方向发射射线的步骤,得到竖直向下可移动距离。
114.需要说明的是,若移动方向仅存在水平分量或竖直向上分量时,则在得到水平可移动距离或竖直向上可移动距离后,便可执行步骤s204;当移动方向同时存在水平分量及竖直向上分量时,则需要得到水平可移动距离及竖直向上可移动距离之后,才可执行步骤s204。
115.需要说明的是,考虑到游戏角色无论移动与否,均需要站立在地面上,因此必须确保游戏角色的数值向下可移动距离始终大于等于零,进而才能确保游戏角色不会卡入地面或斜坡地形。换句话说,无论移动方向是否具有水平分量或竖直向上分量,均需要计算竖直向下可移动距离。
116.进一步,水平可移动距离及竖直可移动距离需要对游戏角色进行移动限制,因此可以理解的是,游戏角色在水平方向上的实际运动距离应当为原始移动距离在水平方向上的分量距离与水平可移动距离之间的最小值,而竖直向上方向也是如此。
117.在一种可能的情况中,利用水平可移动距离、竖直可移动距离及原始移动距离对游戏角色进行移动控制,可以包括:
118.步骤71:确定原始移动距离在水平方向上的第一分量距离和在竖直方向上的第二分量距离,
119.步骤72:利用第一分量距离及水平可移动距离中的最小值,在水平方向上对游戏角色进行移动控制;
120.步骤73:判断移动方向是否存在竖直向上分量;若是,则进入步骤74;若否,则进入步骤75;
121.步骤74:利用第二分量距离及竖直向上可移动距离中的最小值,在竖直向上方向上对游戏角色进行移动控制,并利用竖直向下可移动距离在竖直向下方向上对游戏角色进行移动控制;
122.当移动方向存在竖直向上分量时,此时需要利用竖直向上可移动距离对游戏角色进行移动限制,而此时竖直向下可移动距离则用于对游戏角色的下落动作进行控制。
123.步骤75:利用第二分量距离及竖直向下可移动距离中的最小值,在竖直向下方向上对游戏角色进行移动控制。
124.进一步,为了避免游戏角色陷入地面,也可以对竖直向下可移动距离的正负情况进行判定,当竖直向下可移动距离为负时,则说明游戏角色陷入地面,此时便需要对游戏角色进行抬升或恢复原位操作。
125.在一种可能的情况中,在判定移动方向存在竖直向上分量之后,还可以包括:
126.步骤81:判断竖直向下可移动距离是否为负;若是,则进入步骤82;若否,则进入步骤83;
127.步骤82:执行利用第二分量距离及竖直向上可移动距离中的最小值,在竖直向上方向上对游戏角色进行移动控制,并利用竖直向下可移动距离在竖直向下方向上对游戏角色进行移动控制的步骤;
128.步骤83:将角色位置还原为移动前的角色位置;
129.相应的,在判定移动方向不存在竖直向上分量之后,还可以包括:
130.步骤91:将竖直方向设置为竖直向上,并利用完成设置的竖直方向执行以游戏角色为射线起点向竖直方向发射射线的步骤,得到竖直向上可移动距离;
131.步骤92:判断竖直向下可移动距离是否为负;若是,则进入步骤93;若否,则进入步骤94;
132.步骤93:在判定竖直向上可移动距离的绝对值大于竖直向下可移动距离的绝对值时,设置平移距离为竖直向下可移动距离的绝对值,并根据平移距离对角色位置进行竖直向上平移。
133.步骤94:执行利用第二分量距离及竖直向下可移动距离中的最小值,在竖直向下方向上对游戏角色进行移动控制的步骤。
134.基于上述实施例,本发明在检测到游戏角色移动后,进一步确定游戏角色的移动方向,并仅计算移动方向在水平方向和竖直方向的分量所指向的方向的可移动距离,进而可避免不必要的计算,提升设备运行效率。
135.基于上述实施例,由于利用射线检测机制对游戏角色进行移动限制,容易造成游戏角色站在可穿越地形碰撞体的下表面,不符合游戏设计效果,因此需要对可穿越地形碰撞体的下表面进行剪裁。在一种可能的情况中,当地形碰撞体为可穿越地形碰撞体时,在检测游戏角色移动之前,还可以包括:
136.s301、获取可穿越地形碰撞体的轮廓点、前向单位向量和向上单位向量。
137.需要说明的是,轮廓点为可穿越地形碰撞体各轮廓边的交点,前向单位向量和向上单位向量均基于三维坐标系的单位向量,其中前向单位向量垂直于二维游戏画面所在平面,向上单位向量竖直向上。在一种可能的情况中,前向单位向量可表示为(0,0,1),向上单位向量可表示为(0,1,0)
138.s302、根据轮廓点的排列顺序,利用轮廓点的位置信息计算有向面积及生成有向轮廓边。
139.对于轮廓点阵(x1,y1),(x2,y2),(x3,y3),

,(x
n
,y
n
),有向面积可利用如下公式进行计算:
[0140][0141]
有向轮廓边为三维向量,根据轮廓点的排列顺序进行生成,例如对于轮廓点阵(x1,y1),(x2,y2),(x3,y3),可生成的有向轮廓边为(x2‑
x1,y2‑
y1,0),(x3‑
x2,y3‑
y2,0)和(x1‑
x3,y1‑
y3,0)
[0142]
s303、利用前向单位向量、向上单位向量及有向面积为每一有向轮廓边计算剪裁判定值,并将剪裁判定值小于零的有向轮廓边进行移除。
[0143]
对于由轮廓点a和轮廓点b生成的轮廓边ab,剪裁判定值例如如下公式进行计算:
[0144][0145]
其中dot()为向量点乘函数,cross()为向量叉乘函数。若剪裁判定值小于零,则说明该有向轮廓边位于可穿越地形碰撞体下部,需要进行去除。
[0146]
s304、将剩余的有向轮廓边添加至游戏物理引擎,以使游戏物理引擎利用剩余的有向轮廓边及射线进行碰撞检测。
[0147]
基于上述实施例,本发明可将可穿越地形碰撞体的下表面进行剪裁,并利用剩余的有向轮廓边进行碰撞检测,可有效面利用射线检测机制对游戏角色进行移动限制时,游戏角色站在可穿越地形碰撞体的下表面的情况,进而提升游戏质量。
[0148]
下面对本发明实施例提供的一种二维游戏角色移动控制装置及存储介质进行介绍,下文描述的二维游戏角色移动控制装置及存储介质与上文描述的二维游戏角色移动控制方法可相互对应参照。
[0149]
请参考图3,图3为本发明实施例所提供的一种二维游戏角色移动控制装置的结构框图,该装置可以包括:
[0150]
获取模块301,用于当检测到游戏角色移动时,获取游戏角色的角色位置及原始移动距离;
[0151]
第一计算模块302,用于以游戏角色为射线起点向水平方向发射射线,利用游戏物理引擎确定射线与地形碰撞体之间的第一碰撞位置,并利用角色位置及第一碰撞位置计算水平可移动距离;
[0152]
第二计算模块303,用于以游戏角色为射线起点向竖直方向发射射线,利用游戏物理引擎确定射线与地形碰撞体之间的第二碰撞位置,并利用角色位置及第二碰撞位置计算竖直可移动距离;
[0153]
移动控制模块304,用于利用水平可移动距离、竖直可移动距离及原始移动距离对游戏角色进行移动控制。
[0154]
可选地,该装置还可以包括:
[0155]
尺寸获取模块,用于获取游戏角色的第一高度、第一宽度及游戏编辑器可提供的最小砖块的第二高度和第二宽度;
[0156]
第三计算模块,用于利用第一高度和第二高度计算第一射线数量,并利用第一射线数量及第一高度计算第一间距;
[0157]
第四计算模块,用于利用第一宽度和第二宽度计算第二射线数量;并利用第二射线数量及第一宽度计算第二间距;
[0158]
相应的,第一计算模块302,可以包括:
[0159]
第一发射子模块,用于以游戏角色的水平边界为射线起点,以第一间距为相邻射线间的间隔距离,向水平方向发射数量为第一射线数量的射线;
[0160]
相应的,第二计算模块303,可以包括:
[0161]
第二发射子模块,用于以游戏角色的竖直边界为射线起点,以第二间距为相邻射线间的间隔距离,向竖直方向发射数量为第二射线数量的射线。
[0162]
可选地,第二发射子模块,可以包括:
[0163]
竖直向下发射单元,用于将下边界向上移动预设距离得到斜坡检测边界,并以斜坡检测边界为射线起点,以第二间距为相邻射线间的间隔距离,向竖直方向发射数量为第二射线数量的射线。
[0164]
可选地,第一计算模块302,还可以包括:
[0165]
第一斜坡判定子模块,用于利用游戏物理引擎确定第一碰撞位置的第一法线,并
判断第一法线指向的方向是否为水平方向;
[0166]
水平可移动距离计算子模块,用于若是,则执行利用角色位置及第一碰撞位置计算水平可移动距离的步骤;
[0167]
物理模拟碰撞检测子模块,用于若否,则利用游戏物理引擎进行物理模拟碰撞检测,并根据碰撞检测结果对游戏角色进行移动控制。
[0168]
可选地,第二计算模块303,还可以包括:
[0169]
第二斜坡判定子模块,用于用游戏物理引擎确定第二碰撞位置的第二法线,并判断第二法线指向的方向是否为竖直方向;
[0170]
第一竖直可移动距离计算子模块,用于若是,则执行利用角色位置及第二碰撞位置计算竖直可移动距离的步骤;
[0171]
第二竖直可移动距离计算子模块,用于若否,则获取从下边界中央发射的目标射线,并利用目标射线对应的第二碰撞位置执行利用角色位置及第二碰撞位置计算竖直可移动距离的步骤。
[0172]
可选地,该装置还包括:
[0173]
分量方向确定模块,用于获取游戏角色的移动方向,并判断移动方向是否存在水平分量或竖直向上分量;
[0174]
第一计算模块302,还用于若移动方向存在水平分量,则执行以游戏角色为射线起点向水平方向发射射线的步骤,得到水平可移动距离;
[0175]
第二计算模块302,还用于若移动方向存在竖直向上分量,则将竖直方向设置为竖直向上,并利用完成设置的竖直方向执行以游戏角色为射线起点向竖直方向发射射线的步骤,得到竖直向上可移动距离;在得到水平可移动距离或竖直向上可移动距离之后,将竖直方向设置为竖直向下,并利用完成设置的竖直方向执行以游戏角色为射线起点向竖直方向发射射线的步骤,得到竖直向下可移动距离。
[0176]
可选地,移动控制模块304,可以包括:
[0177]
分量距离确定子模块,用于确定原始移动距离在水平方向上的第一分量距离和在竖直方向上的第二分量距离,
[0178]
第一移动控制子模块,用于利用第一分量距离及水平可移动距离中的最小值,在水平方向上对游戏角色进行移动控制;
[0179]
判断子模块,用于判断移动方向是否存在竖直向上分量;
[0180]
第二移动控制子模块,用于若是,则利用第二分量距离及竖直向上可移动距离中的最小值,在竖直向上方向上对游戏角色进行移动控制,并利用竖直向下可移动距离在竖直向下方向上对游戏角色进行移动控制;
[0181]
第三移动控制子模块,用于若否,则利用第二分量距离及竖直向下可移动距离中的最小值,在竖直向下方向上对游戏角色进行移动控制。
[0182]
可选地,第二移动控制子模块,还可以包括:
[0183]
第一嵌入判定单元,用于判断竖直向下可移动距离是否为负;
[0184]
第一移动控制单元,用于若是,则执行利用第二分量距离及竖直向上可移动距离中的最小值,在竖直向上方向上对游戏角色进行移动控制,并利用竖直向下可移动距离在竖直向下方向上对游戏角色进行移动控制的步骤;
[0185]
位置还原单元,用于若否,则将角色位置还原为移动前的角色位置;
[0186]
相应的,第三移动控制子模块,还可以包括:
[0187]
竖直向上可移动距离计算单元,用于将竖直方向设置为竖直向上,并利用完成设置的竖直方向执行以游戏角色为射线起点向竖直方向发射射线的步骤,得到竖直向上可移动距离;
[0188]
第二嵌入判定单元,用于判断竖直向下可移动距离是否为负;
[0189]
第二移动控制单元,用于若是,则在判定竖直向上可移动距离的绝对值大于竖直向下可移动距离的绝对值时,设置平移距离为竖直向下可移动距离的绝对值,并根据平移距离对角色位置进行竖直向上平移。
[0190]
第三移动控制单元,用于若否,则执行利用第二分量距离及竖直向下可移动距离中的最小值,在竖直向下方向上对游戏角色进行移动控制的步骤。
[0191]
可选地,该装置还可以包括:
[0192]
轮廓属性获取模块,用于获取可穿越地形碰撞体的轮廓点、前向单位向量和向上单位向量;
[0193]
生成模块,用于根据轮廓点的排列顺序,利用轮廓点的位置信息计算有向面积及生成有向轮廓边;
[0194]
移除模块,用于利用前向单位向量、向上单位向量及有向面积为每一有向轮廓边计算剪裁判定值,并将剪裁判定值小于零的有向轮廓边进行移除;
[0195]
碰撞检测模块,用于将剩余的有向轮廓边添加至游戏物理引擎,以使游戏物理引擎利用剩余的有向轮廓边及射线进行碰撞检测。
[0196]
本发明实施例还提供一种存储介质,存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意实施例的二维游戏角色移动控制方法的步骤。
[0197]
由于存储介质部分的实施例与二维游戏角色移动控制方法部分的实施例相互对应,因此存储介质部分的实施例请参见二维游戏角色移动控制方法部分的实施例的描述,这里暂不赘述。
[0198]
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0199]
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0200]
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd

rom、或技术领域内所公知的任意其它形式的存储介质中。
[0201]
以上对本发明所提供的二维游戏角色移动控制方法、装置及存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜