在二维游戏场景中实现跟随的方法及装置
技术领域
本发明涉及计算机及通信技术领域,尤其涉及一种在二维游戏场景中实现跟随的方法及其装置。
背景技术
自电子游戏出现以来,在游戏中的跟随装置一直都发挥着其不可替代的作用。主要体现在两个方面:一方面为现有的网络游戏中运用较多的队员跟随队长、宠物跟随玩家、指定某目标并按其移动轨迹运动等;另一方面应用,同时也是最为广泛的应用为游戏中的非玩家控制角色(None-Player Character)对玩家角色的追击。如游戏《传奇》中玩家A对玩家B的跟随、游戏《梦幻西游》中队员对队长的跟随等。
现有技术中实现智能跟随的方案较多,如以下的两种方案:
方案一、跟随对象(或称智能跟随,AI)模拟被跟随的目标对象(Target)的运动轨迹完全的重现,如图1所示。其主要实现原理是:Target在移动过程中记录每一个经过的菱格,因为人物移动过程中不会存在阻挡;Ai按Target移动的菱格列表重复行走一遍。该方案存在以下不足:
1、AI的表现过于呆滞;
2、无法处理AI与Target速度不统一的情况,一旦Target的速度大于AI且不断运动,其跟随距离将无条件无限制增大;
3、基于2D斜45度地图的菱格系统实现,不适用于2D横版卷轴游戏。
方案二、在2D横版卷轴游戏中AI模拟Target的运动轨迹完全的重现,如图2所示。其主要的实现原理是:AI记录Target的每一条运动轨迹;AI按记录的运动轨迹重复行走一遍。这种方案存在以下不中:
1、AI的表现会显得过于机械,一举一动都和Target一样;
2、无法处理AI与Target速度不统一的情况,一旦Target的速度大于AI且不断运动,跟随距离将无条件无限制增大;
3、当Target先运动一段时间后AI在开始行动时无法寻找最短路径。
总之,现有技术中实现智能跟随时,存在灵活性差,以及在Target的速度大于AI不统一时将会使跟随距离无限增大等问题。
发明内容
本发明提供一种在二维游戏场景中实现跟随的方法及其装置,以解决现有技术在网络游戏中实现智能跟随中存在灵活性差,以及跟随对象和目标对象在速度不统一时导致跟随距离无限增大的问题。
本发明提供以下技术方案:
一种在二维游戏场景中实现跟随的方法,建立用于记录被跟随的目标对象所经过路径的路径列表,并进行下述步骤:
在所述目标对象每到达一条路径时查询所述路径列表中是否包含该条路径,若是,则从所述路径列表中删除目标对象在该路径之后经过的所有路径,否则按目标对象经过路径的先后顺序将其记录在路径列表中;
从目标对象当前所在的路径开始依次搜索所述路径列表中的路径,直到搜索到一条跟随对象可凭自身能力从当前所在路径能够到达的目标路径;并且
控制跟随对象从当前路径到达所述目标路径,并删除路径列表中目标对象在该目标路径之前所经过的所有路径。
其中:
所述路径的记录,是从该路径列表的表头到表尾,按目标对象经过路径由先到后的顺序记录路径,使每次新增加的路径记录在表尾。
删除路径列表中目标对象在所述目标路径之前所经过的所有路径后,依次移动路径在列表中的位置,使所述目标路径到达路径列表的表首。
根据跟随对象的跳高能力和跳远能力确定是否能从当前所在路径能够到达目标路径。
在控制跟随对象从当前路径到达目标路径时,根据跟随对象的能力确定进入新路径的方式和位置。
一种在二维游戏场景中实现跟随的智能跟随装置,包括:
存储模块,用于记录被跟随的目标对象所经过的路径;
处理模块,用于在所述目标对象每到达一条路径时查询所述存储模块是否存储有该条路径,若是,则从存储模块中删除目标对象在该路径之后经过的所有路径,否则,按目标对象经过路径的先后顺序将其保存到存储模块中;
搜索模块,用于从目标对象当前所在的路径开始依次搜索所述存储模块中的路径,直到搜索到一条跟随对象可凭自身能力从当前所在路径能够到达的目标路径;
控制模块,用于控制跟随对象从当前所在路径到达所述目标路径,并删除所述存储模块中目标对象在该目标路径之前所经过的所有路径。
采用本发明,跟随对象AI可以不用重复目标对象的路径,而可以选择不同的路径,使得其表现更加灵活。
由于跟随对象总是选择能够到达的并且与目标对象最近的路径进行跟随,因此在跟随对象AI的速度小于目标对象的速度时,不会导致跟随距离无限制的增大。
附图说明
图1、图2分别为现有技术中智能跟随的示意图;
图3A为本发明中目标对象到达一条新路径时的处理路径列表的流程图;
图3B为本发明中跟随对象利用路径列表进行跟随处理的流程图;
图4为本发明目标对象移动的路径示意图;
图5为本发明的智能跟随装置示意图。
具体实施方式
为了能够更加灵活的实现智能跟随,本发明建立和维护用于记录被跟随的目标对象(Target)所经过的路径的路径列表,跟随对象利用该路径列表来查找跟随路径。
在所述路径列表中,按目标对象所经过路径的时间顺序排列。一种较佳的方式是,从表首到表尾,按经过路径的时间由先至后的顺序依次排列,即增加的目标对象当前所到达的路径总是记录在路径列表的尾部。
参阅图3A所示,在目标对象每到达一条新路径时的主要处理过程如下:
步骤100、目标对象在不同的路径间行动,到达一条新路径。
步骤110、查询路径列表中是否包含该条新路径,若是,则进行步骤120,否则进行步骤130。
步骤120、从所述路径列表中删除目标对象在该路径之后经过的所有路径,即删除路径列表中从新路开始到表尾之间的所有路径,即使跟随对象在跟随目标对象时可以不再重复这些路。
步骤130、按目标对象经过路径的先后顺序将新路径记录在路径列表中,即记录在路径列表中最后一条路径之后。
参阅图3B所示,跟随对象利用路径列表进行跟随的主要处理过程如下:
步骤200、从路径列表中取目标对象当前所在的路径作为目标路径。
步骤210、判断跟随对象是否可凭自身能力从当前所在路径到达的目标路径,如果是,则进行步骤230,否则,进行步骤220。
跟随对象的自身能力主要是指跳高和跳远能力,根据跟随对象的跳高和跳远能力,能够确定该跟随对象是否能够从当前所在路径到达另一条路径。
步骤220、按从路径列表的表尾向表首方向的顺序,取下一条路径作目标路径,并转步骤210。
步骤230、从路径列表中删除目标路径之前的所有路径,即删除路径列表中目标对象在目标路径之前所经过的所有路径,使跟随着可以不再重复这些路径。
为了能够充分利用存储空间,删除路径列表中的路径后,依次移动路径在列表中的位置,使目标路径到达路径列表的表首。
步骤240、控制跟随对象从当前路径到达所述目标路径。
以图4所示的路径图为例对上述处理过程进行说明:
目标对象在1-5的5条路径中任意移动,跟随对象AI起始位置在1-5的任何一条路径上。
在经过一段时间的移动后,目标对象所依次经过的路径为:1→2→4→5→3,则此时的路径列表为:
路径列表一
路径顺序 |
路径编号 |
1 |
1 |
2 |
2 |
3 |
4 |
4 |
5 |
5 |
3 |
|
|
目标对象从路径3移动到路径4后,路径列表如下:
路径列表二
如果此时,跟随对象在路径3上,则通过搜索路径列表二,发现靠自身的跳跃能力可以从路径3到达路径2,此时,修改后的路径列表如下:
然后,跟随对象根据自身的能力判断以何种方式在哪个地方从当前路径到达路径2进行跟随,而无须机械的重复目标对象的经过的路径。
相应的,一种智能跟随装置如图5所示,该装置包括:存储模块500、处理模块510、搜索模块520和控制模块530,其中:
存储模块500用于记录被跟随的目标对象所经过的路径,这些路径在按目标对象所经过路径的时间先后顺序排列。
处理模块510,与存储模块500具有逻辑上的连接关系,用于在所述目标对象每到达一条路径时查询所述存储模块500中是否存储有该条路径;若是,则从存储模块510中删除目标对象在该路径之后经过的所有路径,否则,按目标对象经过路径的先后顺序将该路径保存到存储模块500中。
搜索模块520,与存储模块500具有逻辑上的连接关系,用于从目标对象当前所在的路径开始依次搜索所述存储模块500中的路径,直到搜索到一条跟随对象可凭自身能力从当前所在路径能够到达的目标路径为止。
控制模块530,与存储模块500具有逻辑上的连接关系,用于控制跟随对象从当前所在路径到达所述目标路径,并删除所述存储模块500中目标对象在该目标路径之前所经过的所有路径。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。