游戏中虚拟对象的移动方法、装置及电子设备转让专利

申请号 : CN201911390109.X

文献号 : CN111054074B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 许诗豪

申请人 : 网易(杭州)网络有限公司

摘要 :

本发明提供了一种游戏中虚拟对象的移动方法、装置及电子设备,涉及信息交互的技术领域,该方法包括:响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制目标虚拟对象在游戏场景中移动;并响应于目标虚拟对象在移动过程中与目标场景模型发生碰撞,加载目标场景模型的碰撞体对应的轨迹文件;根据轨迹文件控制目标虚拟对象沿着与碰撞体匹配的轨迹移动。本发明提供的游戏中虚拟对象的移动方法、装置及电子设备,在控制目标虚拟对象沿该轨迹移动时,能够使目标虚拟对象沿既定的轨迹进行移动,使得目标虚拟对象运动的位置更加精确,同时,后续的场景中也无需程序员的进一步参与,降低了一定的人力成本,也提高了使用的灵活性。

权利要求 :

1.一种游戏中虚拟对象的移动方法,其特征在于,所述方法包括:响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制所述目标虚拟对象在所述游戏场景中移动;

响应于所述目标虚拟对象在移动过程中与目标场景模型发生碰撞,加载所述目标场景模型的碰撞体对应的轨迹文件,其中,所述轨迹文件至少包括与所述目标场景模型的碰撞体相匹配的轨迹,且,所述轨迹文件中的轨迹是与所述目标场景模型外形贴合的碰撞体匹配的轨迹;

根据所述轨迹文件控制所述目标虚拟对象沿着与所述碰撞体匹配的轨迹移动;

其中,根据所述轨迹文件控制所述目标虚拟对象沿着与所述碰撞体匹配的轨迹移动的步骤,包括:获取当前移动控制操作对应的目标位置;

将所述目标位置映射至所述轨迹文件中包含的轨迹上,以控制所述目标虚拟对象沿着与所述碰撞体匹配的轨迹移动。

2.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于所述目标虚拟对象在移动过程中与当前场景模型发生碰撞,获取所述当前场景模型的标识;

如果所述当前场景模型的标识中包含预设的目标字段,确定所述当前场景模型为所述目标场景模型,以及确定所述目标虚拟对象与所述目标场景模型发生碰撞。

3.根据权利要求2所述的方法,其特征在于,加载所述目标场景模型的碰撞体对应的轨迹文件的步骤,包括:根据预先建立的模型标识与轨迹文件的映射关系,在轨迹文件库中查找所述目标场景模型的碰撞体对应的轨迹文件;

将查找到的所述轨迹文件加载至所述目标场景模型中。

4.根据权利要求3所述的方法,其特征在于,所述目标场景模型的标识包括:目标字段、功能类型和轨迹类型;所述目标字段用于标识所述目标场景模型的模型类型,所述功能类型用于标识所述目标场景模型对应的游戏功能,所述轨迹类型用于标识所述目标场景模型对应的轨迹文件的检索信息。

5.根据权利要求1所述的方法,其特征在于,将所述目标位置映射至所述轨迹文件中包含的轨迹上的步骤包括:将所述目标位置输入至预先建立的计算处理器,通过所述计算处理器计算所述目标位置在所述轨迹的位置,以将所述目标位置映射至所述轨迹文件中包含的轨迹上。

6.根据权利要求1或5所述的方法,其特征在于,将所述目标位置映射至所述轨迹文件中包含的轨迹上的步骤包括:计算所述目标位置在所述轨迹上的投影;

根据所述投影将所述目标位置映射至所述轨迹文件中包含的轨迹上;

其中,所述投影为所述轨迹上距离所述目标位置最近的点。

7.根据权利要求6所述的方法,其特征在于,根据所述投影将所述目标位置映射至所述轨迹文件中包含的轨迹上的步骤包括:获取所述目标场景模型对应的位移矩阵,根据所述位移矩阵和所述投影计算所述目标位置在所述轨迹上的轨迹点,将所述目标位置映射至所述轨迹点上。

8.根据权利要求1所述的方法,其特征在于,所述目标场景模型为以下模型至少之一:树模型、桥模型、索道模型或钢丝模型。

9.根据权利要求1所述的方法,其特征在于,作用于游戏场景中的目标虚拟对象的移动控制操作为通过摇杆控制所述目标虚拟对象移动的操作;或者,所述移动控制操作为通过触控控件控制所述目标虚拟对象移动的操作。

10.一种游戏中虚拟对象的移动装置,其特征在于,所述装置包括:控制模块,用于响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制所述目标虚拟对象在所述游戏场景中移动;

加载模块,用于响应于所述目标虚拟对象在移动过程中与目标场景模型发生碰撞,加载所述目标场景模型的碰撞体对应的轨迹文件,其中,所述轨迹文件至少包括与所述目标场景模型的碰撞体相匹配的轨迹,且,所述轨迹文件中的轨迹是与所述目标场景模型外形贴合的碰撞体匹配的轨迹;

移动模块,用于根据所述轨迹文件控制所述目标虚拟对象沿着与所述碰撞体匹配的轨迹移动;

其中,所述移动模块,还用于:

获取当前移动控制操作对应的目标位置;将所述目标位置映射至所述轨迹文件中包含的轨迹上,以控制所述目标虚拟对象沿着与所述碰撞体匹配的轨迹移动。

11.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上述权利要求1‑9任一项所述方法的步骤。

12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述权利要求1‑9任一项所述方法的步骤。

说明书 :

游戏中虚拟对象的移动方法、装置及电子设备

技术领域

[0001] 本发明涉及信息交互的技术领域,尤其是涉及一种游戏中虚拟对象的移动方法、装置及电子设备。

背景技术

[0002] 在很多游戏的环境设计中,需要游戏模型按照既定的路线或者依附于别的模型进行移动,同时还需要允许由玩家自己去操作和控制。一般这样的设计,变动性较大,灵活性较高,现有技术中,多根据场景的碰撞体信息,或者寻路数据,来实时计算可以移动的位置进而实现控制游戏模型的移动,或者,利用动画技术,来使游戏模型按照既定的轨迹进行移动。
[0003] 但是,这些方式多适用于设计比较简单的场景,对于复杂的场景很容易出现计算误差,甚至可能与设计初衷背道而驰,难以根据用户的实时输入数据进行精确的变化,降低了灵活性。

发明内容

[0004] 有鉴于此,本发明的目的在于提供一种游戏中虚拟对象的移动方法、装置及电子设备,以缓解复杂场景中对游戏模型的控制出现计算误差的技术问题。
[0005] 第一方面,本发明实施例提供了一种游戏中虚拟对象的移动方法,该方法包括:响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制目标虚拟对象在游戏场景中移动;响应于目标虚拟对象在移动过程中与目标场景模型发生碰撞,加载目标场景模型的碰撞体对应的轨迹文件,其中,轨迹文件至少包括与目标场景模型的碰撞体相匹配的轨迹;根据轨迹文件控制目标虚拟对象沿着与碰撞体匹配的轨迹移动。
[0006] 在一种较佳的实施方式中,上述方法还包括:响应于目标虚拟对象在移动过程中与当前场景模型发生碰撞,获取当前场景模型的标识;如果当前场景模型的标识中包含预设的目标字段,确定当前场景模型为目标场景模型,以及确定目标虚拟对象与目标场景模型发生碰撞。
[0007] 在一种较佳的实施方式中,上述加载目标场景模型的碰撞体对应的轨迹文件的步骤,包括:根据预先建立的模型标识与轨迹文件的映射关系,在轨迹文件库中查找目标场景模型的碰撞体对应的轨迹文件;将查找到的轨迹文件加载至目标场景模型中。
[0008] 在一种较佳的实施方式中,上述目标场景模型的标识包括:目标字段、功能类型和轨迹类型;目标字段用于标识目标场景模型的模型类型,功能类型用于标识目标场景模型对应的游戏功能,轨迹类型用于标识目标场景模型对应的轨迹文件的检索信息。
[0009] 在一种较佳的实施方式中,上述根据轨迹文件控制目标虚拟对象沿着与碰撞体匹配的轨迹移动的步骤,包括:获取当前移动控制操作对应的目标位置;将目标位置映射至轨迹文件中包含的轨迹上,以控制目标虚拟对象沿着与碰撞体匹配的轨迹移动。
[0010] 在一种较佳的实施方式中,上述将目标位置映射至轨迹文件中包含的轨迹上的步骤包括:将目标位置输入至预先建立的计算处理器,通过计算处理器计算目标位置在轨迹的位置,以将目标位置映射至轨迹文件中包含的轨迹上。
[0011] 在一种较佳的实施方式中,上述将目标位置映射至轨迹文件中包含的轨迹上的步骤包括:计算目标位置在轨迹上的投影;根据投影将目标位置映射至轨迹文件中包含的轨迹上;其中,投影为轨迹上距离目标位置最近的点。
[0012] 在一种较佳的实施方式中,上述根据投影位置将目标位置映射至轨迹文件中包含的轨迹上的步骤包括:获取目标场景模型对应的位移矩阵,根据位移矩阵和投影计算目标位置在轨迹上的轨迹点,将目标位置映射至轨迹点上。
[0013] 在一种较佳的实施方式中,上述目标场景模型为以下模型至少之一:树模型、桥模型、索道模型或钢丝模型。
[0014] 在一种较佳的实施方式中,上述作用于游戏场景中的目标虚拟对象的移动控制操作为通过摇杆控制目标虚拟对象移动的操作;或者,移动控制操作为通过触控控件控制目标虚拟对象移动的操作。
[0015] 第二方面,本发明实施例还提供一种游戏中虚拟对象的移动装置,该装置包括:控制模块,用于响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制目标虚拟对象在游戏场景中移动;加载模块,用于响应于目标虚拟对象在移动过程中与目标场景模型发生碰撞,加载目标场景模型的碰撞体对应的轨迹文件,其中,轨迹文件至少包括与目标场景模型的碰撞体相匹配的轨迹;移动模块,用于根据轨迹文件控制目标虚拟对象沿着与碰撞体匹配的轨迹移动。
[0016] 第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述方法的步骤。
[0017] 第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述第一方面所述方法的步骤。
[0018] 本发明实施例带来了以下有益效果:
[0019] 本发明实施例提供的游戏中虚拟对象的移动方法、装置及电子设备,能够响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制目标虚拟对象在游戏场景中移动,并在目标虚拟对象在移动过程中与目标场景模型发生碰撞时,能够加载目标场景模型的碰撞体对应的轨迹文件,并根据该轨迹文件控制目标虚拟对象沿着与碰撞体匹配的轨迹移动,由于该轨迹文件中的轨迹是目标场景模型预先配置的与目标场景模型外形贴合的碰撞体匹配的轨迹,因此,在控制目标虚拟对象沿该轨迹移动时,能够使目标虚拟对象沿既定的轨迹进行移动,使得目标虚拟对象运动的位置更加精确,且,由于是预先配置好的轨迹文件,因此,在目标虚拟对象沿该轨迹运动时,也不容易受复杂场景环境的干扰,同时,后续的场景中也无需程序员的进一步参与,降低了一定的人力成本,也提高了使用的灵活性。
[0020] 本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
[0021] 为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

[0022] 为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0023] 图1为本发明实施例提供的一种游戏中虚拟对象的移动方法的流程图;
[0024] 图2为本发明实施例提供的一种目标场景模型的模型示意图;
[0025] 图3为本发明实施例提供的一种目标场景模型的轨迹示意图;
[0026] 图4为本发明实施例提供的另一种游戏中虚拟对象的移动方法的流程图;
[0027] 图5为本发明实施例提供的一种轨迹示意图;
[0028] 图6为本发明实施例提供的一种游戏中虚拟对象的移动装置的结构示意图;
[0029] 图7为本发明实施例提供的另一种游戏中虚拟对象的移动装置的结构示意图;
[0030] 图8为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

[0031] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032] 现有技术中,在控制虚拟对象在游戏场景中运动时,一般都是根据场景的碰撞体信息,或者寻路数据,实时计算可以移动的位置来控制模型。如果游戏场景设计比较简单,偏向于以片面为主,且,存在较少模型交叉的游戏环境中,这种方式能够取得较好的效果,但是对于稍微复杂的游戏场景,动态物体较多的情况下,就很难满足要求,计算容易出现误差,甚至可能与设计初衷背道而驰。
[0033] 此外,现有技术中也有利用动画技术来使虚拟对象按照既定的轨迹进行移动,这种方式,虽然可以解决现有技术中存在的计算误差等问题,但是很不灵活,这是因为动画是美术设计师提前编辑好的,所以在游戏中,很难根据用户的实时输入数据进行精确的变化。
[0034] 基于此,本发明实施例提供的一种游戏中虚拟对象的移动方法、装置及电子设备,可以有效缓解上述技术问题。
[0035] 为便于对本实施例进行理解,首先对本发明实施例所公开的一种游戏中虚拟对象的移动方法进行详细介绍。
[0036] 在一种可能的实施方式中,本发明实施例提供了一种游戏中虚拟对象的移动方法,通过执行软件应用并在终端的显示器上渲染得到图形用户界面,该图形用户界面显示的内容包含部分游戏场景,以及在游戏场景中的目标虚拟对象和目标场景模型,目标场景模型配置有与目标场景模型外形贴合的碰撞体和与碰撞体匹配的轨迹,该轨迹存储于轨迹文件中。
[0037] 具体地,如图1所示的一种游戏中虚拟对象的移动方法的流程图,该方法包括以下步骤:
[0038] 步骤S102,响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制目标虚拟对象在游戏场景中移动;
[0039] 具体地,该移动控制操作通常是由用户输入的对目标虚拟对象进行移动控制的操作,并且,该作用于目标虚拟对象的移动控制操作一般为通过摇杆控制目标虚拟对象移动的操作;或者,移动控制操作为通过触控控件控制目标虚拟对象移动的操作。
[0040] 具体地,如果是摇杆控制的游戏,用户可以通过摇杆控制目标虚拟对象在游戏场景中移动;或者,如果是支持触摸屏控制的游戏,用户可以通过触控控件控制目标虚拟对象在游戏场景中的移动,具体可以根据实际使用情况进行设置,本发明实施例对此不进行限制。
[0041] 步骤S104,响应于目标虚拟对象在移动过程中与目标场景模型发生碰撞,加载目标场景模型的碰撞体对应的轨迹文件,其中,该轨迹文件至少包括与目标场景模型的碰撞体相匹配的轨迹;
[0042] 步骤S106,根据轨迹文件控制目标虚拟对象沿着与碰撞体匹配的轨迹移动。
[0043] 具体实现是,当用户操控目标虚拟对象在复杂的游戏场景中移动时,对于游戏开发人员,解决目标虚拟对象在移动过程中与目标场景模型发生碰撞时,出现模型严重穿插是需要解决的最基本问题,通过上述步骤S104中,在碰撞时加载目标场景模型的碰撞体对应的轨迹文件的过程,可以基于该轨迹文件,使目标虚拟对象沿着与碰撞体匹配的轨迹移动,可以有效避免出现模型严重穿插的现象。在此基础上,有些用户操控的目标虚拟对象需要在一些较为特殊的问题上移动时,例如爬树,滑索,走钢丝等等,对于这些较为复杂的移动需求,都可以利用本发明实施例提供的上述步骤S102~S106的过程实现。
[0044] 因此,本发明实施例提供的游戏中虚拟对象的移动方法,能够响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制目标虚拟对象在游戏场景中移动,并在目标虚拟对象在移动过程中与目标场景模型发生碰撞时,能够加载目标场景模型的碰撞体对应的轨迹文件,并根据该轨迹文件控制目标虚拟对象沿着与碰撞体匹配的轨迹移动,由于该轨迹文件中的轨迹是目标场景模型预先配置的与目标场景模型外形贴合的碰撞体匹配的轨迹,因此,在控制目标虚拟对象沿该轨迹移动时,能够使目标虚拟对象沿既定的轨迹进行移动,使得目标虚拟对象运动的位置更加精确,且,由于是预先配置好的轨迹文件,因此,在目标虚拟对象沿该轨迹运动时,也不容易受复杂场景环境的干扰,同时,后续的场景中也无需程序员的进一步参与,降低了一定的人力成本,也提高了使用的灵活性。
[0045] 在实际使用时,上述目标场景模型通常为以下模型至少之一:树模型、桥模型、索道模型或钢丝模型。
[0046] 具体实现时,上述目标场景模型通常是根据实际的游戏需求预先制作好的,并且,为了使上述目标场景模型能够根据游戏的需要进行物理属性的交互,上述与目标场景模型外形贴合的碰撞体,以及与碰撞体匹配的轨迹也都是预先制作完成的,其中,上述轨迹通常也是与目标场景模型外形贴合的轨迹,使游戏过程中,虚拟对象能够在用户的控制下通过该轨迹沿着目标场景模型的外形运动,如,树模型对应的轨迹可以使目标虚拟对象按照该轨迹运动,渲染出的画面就是该虚拟对象沿着树模型的表面运动。
[0047] 为了便于理解,图2示出了一种目标场景模型的模型示意图,其中,图2中,以树模型为例进行说明,这些目标场景模型一般由美术工程师预先制作好,并为该目标场景模型制作相应的轨迹,具体地,如图3所示的一种目标场景模型的轨迹示意图,示出了该树模型对应的轨迹,该轨迹命名为Dummy001,并保存至相应的轨迹文件中。
[0048] 在实际使用时,对于复杂的游戏场景,一般都包括多个场景模型,但是并不是每个场景模型都有与碰撞体匹配的轨迹,因此,为了区分目标虚拟对象在移动过程中发生碰撞的场景模型是否为配置有轨迹的目标场景模型,通常在模型制作时,都会以特殊的标识来进行区分,以便于确定目标虚拟对象在移动过程中是否与目标场景模型发生碰撞,进而加载相应的轨迹文件。
[0049] 具体地,目标虚拟对象在游戏场景中的移动时,可以响应于目标虚拟对象在移动过程中与当前场景模型发生碰撞,并获取当前场景模型的标识;如果当前场景模型的标识中包含预设的目标字段,确定当前场景模型为目标场景模型,以及确定目标虚拟对象与目标场景模型发生碰撞。
[0050] 其中,上述场景模型的标识中包含的预设的目标字段目标,可以用来与相应的轨迹文件建立映射关系,以便于在确定出当前场景模型为目标场景模型,以及,目标虚拟对象与目标场景模型发生碰撞之后,根据上述目标字段查找到轨迹文件,并进行加载。因此,上述当前场景模型的标识多通过场景模型的名称来进行体现,如图2中树模型的名称等等,基于此,在图1的基础上,图4示出了另一种游戏中虚拟对象的移动方法的流程图,如图4所示,包括以下步骤:
[0051] 步骤S202,响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制目标虚拟对象在游戏场景中移动;
[0052] 步骤S204,响应于目标虚拟对象在移动过程中与目标场景模型发生碰撞,根据预先建立的模型标识与轨迹文件的映射关系,在轨迹文件库中查找目标场景模型的碰撞体对应的轨迹文件;
[0053] 具体地,目标场景模型的标识通常包括:目标字段、功能类型和轨迹类型;其中,目标字段用于标识目标场景模型的模型类型,功能类型用于标识目标场景模型对应的游戏功能,轨迹类型用于标识目标场景模型对应的轨迹文件的检索信息。
[0054] 以目标场景模型的标识为模型名称为例进行说明,对于包含了预设的目标字段的模型名称,其命名一般遵循以下规则:
[0055] 目标字段_功能类型_轨迹类型。
[0056] 以图2所示的树模型为例进行说明,图2中示出的ropeway_tree_kushu即为树模型的名称,一般以目标字段为固定开头,即,ropeway为目标字段,这种命名方式一般都是与美术工程师约定好的,以便于后期配置轨迹时,对以目标字段,如ropeway,开头的命名配置对应的轨迹。
[0057] 图2所示的名称中,tree字段对应的就是功能类型,这个与游戏逻辑需求相关。kushu字段对应轨迹类型,一般轨迹文件保存文件名为:
[0058] rope_[轨迹类型].trk;
[0059] 那么,对于模型文件名为ropeway_tree_kushu的目标场景模型,其对应的轨迹文件就是rope_kushu.trk,图3中,命名为Dummy001的轨迹就保存在该轨迹文件中。在具体使用中就可以根据目标场景模型的模型名称直接映射到对应的轨迹文件,从而对轨迹文件进行加载和使用。
[0060] 而轨迹文件库中,则根据这种模型标识(模型名称)与轨迹文件的映射关系存储了多个目标场景模型的轨迹文件,因此,在确定出目标虚拟对象在移动过程中与目标场景模型发生碰撞之后,可以通过上述步骤S204可以查找到目标场景模型的碰撞体对应的轨迹文件。
[0061] 步骤S206,将查找到的轨迹文件加载至目标场景模型中;
[0062] 同样以图2和图3所示的树模型为例,对于上述树模型,在游戏中,一般都对目标虚拟对象设计了爬树的功能,只有当目标虚拟对象跳起来,悬浮在空中时,才会认为控制目标虚拟对象移动的用户有爬树的意图。此时,只要目标虚拟对象尚在空中,就会去实时检测目标虚拟对象是否碰撞到了一颗有特殊命名的树模型。如果发现了阻挡物,如上述树模型,就会立刻捕获到,然后查找轨迹文件,并将查找到的轨迹文件加载至该树模型上,进而继续执行下述步骤S208~S210的过程,以控制目标虚拟对象沿着该轨迹文件中的轨迹移动。
[0063] 步骤S208,获取当前移动控制操作对应的目标位置;
[0064] 其中,该目标位置通常是控制目标虚拟对象移动的期望位置,即,目标虚拟角色下一帧的期望移动位置,通常是用户通过摇杆或者触控控件输入的移动控制操作对应的目标位置。
[0065] 步骤S210,将目标位置映射至轨迹文件中包含的轨迹上,以控制目标虚拟对象沿着与碰撞体匹配的轨迹移动。
[0066] 在实际使用时,将目标位置映射至轨迹文件中包含的轨迹上的过程可以通过预先创建的计算处理器执行,以便于在加载到轨迹文件之后,通过该计算处理器对接下来的流程进行托管。
[0067] 具体地,可以将目标位置输入至预先建立的计算处理器,通过该计算处理器计算目标位置在轨迹的位置,以将目标位置映射至轨迹文件中包含的轨迹上。
[0068] 进一步,将目标位置映射至轨迹文件中包含的轨迹上的步骤包括以下过程:
[0069] (1)计算目标位置在轨迹上的投影,其中,该投影为轨迹上距离目标位置最近的点;
[0070] (2)根据投影将目标位置映射至轨迹文件中包含的轨迹上;
[0071] 具体地,在计算出投影之后,还需要进一步获取目标场景模型对应的位移矩阵,根据该位移矩阵和投影计算目标位置在轨迹上的轨迹点,进而将目标位置映射至该轨迹点上。
[0072] 为了便于理解,图5示出了一种轨迹示意图,其中,假设O是目标虚拟对象目前所在的位置,通过摇杆控制移动方向给出的目标位置为P,然后通过P投影到轨迹上点P1,P1就是最终的轨迹移动位置,即,轨迹点。实际上,P1就是P到轨迹上最短距离的点。下面介绍计算点P1的算法:
[0073] 通常,轨迹是由一系列的坐标点来进行描述的,因此,轨迹可表示为一个由多个表示位置的三维向量组成的数组TK:
[0074] TK=[p0,p1,p2…,pn];
[0075] 其中,p0~pn为数组TK中的n个三维向量;
[0076] 此时,求轨迹外一点P到轨迹TK的最短距离点P1的问题,就可以转化为求P到相邻两点的向量Vk的问题,因此,轨迹TK还可以表示为:
[0077] TK={0
[0078] 而计算轨迹外一点P到轨迹TK上最短距离点的P1的过程,在程序处理上,实际是一个不断迭代的过程,具体地,可以按照如下迭代算法实现:
[0079] (1)遍历轨迹TK上的线段向量,当前向量为Vk;
[0080] (2)求P到Vk的投影Qk,如果Qk在Vk上,则P到Vk的最短距离为Dk=DISTANCE(P‑Qk),记P1`=Qk;
[0081] (3)如果Qk不在Vk上,则计算P到Vk的两端pk和p(k‑1)的距离,取其中最小的距离为:Dmin=MIN(DISTANCE(P‑pk),DISTANCE(P‑pk‑1)),记对应的位置为:P1`;
[0082] (4)比较Dk与Dmin的大小,如果Dk
[0083] (5)循环进行(2)、(3)、(4),最后得到的点P1就是所求的目标位置在轨迹上的投影。
[0084] 进一步,关于目标位置为P以及轨迹点P1,在实际应用中还需要根据位移矩阵进行坐标转换,其中,该位移矩阵一般也称为目标场景模型的世界坐标矩阵,用M表示,即,M就是目标场景模型的世界变换矩阵。从M中可以得到两个量:平移向量VT和旋转矩阵R。对于目标位置P,有:
[0085] P=(P‑VT)*R;
[0086] 从而可以得到P关于轨迹的局部坐标。而对于轨迹点P1,则有:
[0087] P1=P1*R‑1+VT;这样就将P1转换成了游戏中的世界坐标。
[0088] 通过上述将目标位置映射至轨迹文件中包含的轨迹上的方式,在控制目标虚拟对象沿树模型移动时,即使树干弯曲,也不会影响最终的移动效果。
[0089] 因此,上述目标虚拟对象在移动过程中与目标场景模型发生碰撞,并根据模型标识与轨迹文件的映射关系,查找并加载轨迹文件,进而将目标位置映射至轨迹文件中包含的轨迹上,以控制目标虚拟对象沿着与碰撞体匹配的轨迹移动的过程,可以使运动的位置更加精确,且不受复杂物理环境的干扰,设计起来更加自由。同时,当一个制作目标场景模型设计完成并规范以后,由于轨迹文件都已经配置完成,则后续的场景布置内容无需程序员的参与,策划与场景设计师可以按照自己的想法,完成剩余的工作,解放了程序员的生产力。
[0090] 在上述实施例的基础上,本发明实施例还提供了一种游戏中虚拟对象的移动装置,通过执行软件应用并在终端的显示器上渲染得到图形用户界面,所述图形用户界面显示的内容包含部分游戏场景,以及在所述游戏场景中的目标虚拟对象和目标场景模型,所述目标场景模型配置有与所述目标场景模型外形贴合的碰撞体和与所述碰撞体匹配的轨迹,所述轨迹存储于轨迹文件中,如图6所示的一种游戏中虚拟对象的移动装置的结构示意图,该装置包括:
[0091] 控制模块60,用于响应作用于游戏场景中的目标虚拟对象的移动控制操作,控制目标虚拟对象在游戏场景中移动;
[0092] 加载模块62,用于响应于目标虚拟对象在移动过程中与目标场景模型发生碰撞,加载目标场景模型的碰撞体对应的轨迹文件,其中,轨迹文件至少包括与目标场景模型的碰撞体相匹配的轨迹;
[0093] 移动模块64,用于根据轨迹文件控制目标虚拟对象沿着与碰撞体匹配的轨迹移动。
[0094] 进一步,在图6的基础上,图7示出了另一种游戏中虚拟对象的移动装置的结构示意图,除图6所示的结构外,上述装置还包括:
[0095] 获取模块66,用于响应于目标虚拟对象在移动过程中与当前场景模型发生碰撞,获取当前场景模型的标识;
[0096] 确定模块68,用于如果当前场景模型的标识中包含预设的目标字段,确定当前场景模型为目标场景模型,以及确定目标虚拟对象与目标场景模型发生碰撞。
[0097] 进一步,上述加载模块用于:根据预先建立的模型标识与轨迹文件的映射关系,在轨迹文件库中查找目标场景模型的碰撞体对应的轨迹文件;将查找到的轨迹文件加载至目标场景模型中。
[0098] 上述目标场景模型的标识包括:目标字段、功能类型和轨迹类型;目标字段用于标识目标场景模型的模型类型,功能类型用于标识目标场景模型对应的游戏功能,轨迹类型用于标识目标场景模型对应的轨迹文件的检索信息。
[0099] 进一步,上述移动模块用于:获取当前移动控制操作对应的目标位置;将目标位置映射至轨迹文件中包含的轨迹上,以控制目标虚拟对象沿着与碰撞体匹配的轨迹移动。
[0100] 进一步,上述移动模块还用于:将目标位置输入至预先建立的计算处理器,通过计算处理器计算目标位置在轨迹的位置,以将目标位置映射至轨迹文件中包含的轨迹上。
[0101] 进一步,上述移动模块还用于:计算目标位置在轨迹上的投影;根据投影将目标位置映射至轨迹文件中包含的轨迹上;其中,投影为轨迹上距离目标位置最近的点。
[0102] 进一步,上述移动模块还用于:获取目标场景模型对应的位移矩阵,根据位移矩阵和投影计算目标位置在轨迹上的轨迹点,将目标位置映射至轨迹点上。
[0103] 上述目标场景模型为以下模型至少之一:树模型、桥模型、索道模型或钢丝模型。
[0104] 上述作用于游戏场景中的目标虚拟对象的移动控制操作为通过摇杆控制目标虚拟对象移动的操作;或者,移动控制操作为通过触控控件控制目标虚拟对象移动的操作。
[0105] 本发明实施例提供的游戏中虚拟对象的移动装置,其实现原理及产生的技术效果和前述游戏中虚拟对象的移动方法实施例相同,为简要描述,装置的实施例部分未提及之处,可参考前述方法实施例中相应内容,在此不再赘述。
[0106] 本发明实施例还提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,处理器执行所述计算机程序时实现上述游戏中虚拟对象的移动方法的步骤。
[0107] 本发明实施例还提供了一种电子设备的结构示意图,如图8所示,为该电子设备的结构示意图,其中,该电子设备包括处理器81和存储器80,该存储器80存储有能够被该处理器81执行的计算机可执行指令,该处理器81执行该计算机可执行指令以实现上述游戏中虚拟对象的移动方法。
[0108] 在图8示出的实施方式中,该电子设备还包括总线82和通信接口83,其中,处理器81、通信接口83和存储器80通过总线82连接。
[0109] 其中,存储器80可能包含高速随机存取存储器(RAM,Random Access Memory),也可能还包括非不稳定的存储器(non‑volatile memory),例如至少一个磁盘存储器。通过至少一个通信接口83(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线82可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(Extended Industry  Standard 
Architecture,扩展工业标准结构)总线等。所述总线82可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
[0110] 处理器81可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器81中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器81可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field‑Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器81读取存储器中的信息,结合其硬件完成前述实施例的游戏中虚拟对象的移动方法的步骤。
[0111] 本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述游戏中虚拟对象的移动方法的步骤。
[0112] 本发明实施例所提供的游戏中虚拟对象的移动方法、装置及电子设备的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
[0113] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0114] 另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
[0115] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read‑OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0116] 在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
[0117] 最后应说明的是:以上实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。