游戏系统中虚拟镜头的控制方法及控制装置技术领域
本申请涉及手机游戏领域,具体地,本申请涉及一种游戏系统中虚拟镜头的控制
方法及控制装置。
背景技术
在PC端游上,大部分即时战斗游戏(RTS),都是支持以多人小队为单位进行集体指
令操作,也支持对单独一个作战单位进行细致操作。玩家的输入都是靠“键盘+鼠标”的方
式,而镜头(或玩家的视野),一般是随着鼠标触碰屏幕边缘进行同方向的移动。PC端游的镜
头方案的优势在于自由,但它实现的前提是因为“键盘+鼠标”这种组合输入方式。到了智能
移动设备(手机、PAD)上,输入方式只靠触摸屏实现,即使是现阶段已经支持多点触摸,但依
然达不到PC端游的自由度。
所以,现在市场上大部分以单玩家操纵多虚拟角色组队进行战斗的RPG手游,都是
以一个虚拟角色为主操纵角色,其他多个虚拟角色作为AI跟随。玩家在同一时间内,只能操
作一名虚拟角色,如果需要控制其他虚拟角色,则必须先进行主操控角色的切换操作以将
其他虚拟角色切换为主操控角色。但现有技术中,游戏中的虚拟摄像机往往以一定的方式
跟随主操作角色移动,常常出现部分虚拟角色不在虚拟镜头范围内(即:不在显示范围内),
从而导致在以组队协作为核心的游戏中,进行主操作角色的切换或控制存在困难。
发明内容
本申请实施例提供了一种游戏系统中虚拟镜头的控制方法及控制装置,以至少解
决在屏幕中难以同时展现虚拟角色队伍中的全部虚拟角色的技术问题。
根据本申请实施例的一个方面,提供了一种游戏系统中虚拟镜头的控制方法,包
括以下步骤:检测游戏系统中的虚拟角色队伍中的每个虚拟角色的坐标,虚拟角色队伍包
括一个或多个虚拟角色,一个或多个虚拟角色中的至少一个由游戏的玩家控制;计算各个
虚拟角色的坐标所围成的多边形的重心坐标;以及控制游戏系统的虚拟镜头的视点中心跟
随重心坐标移动。
根据本申请实施例的另一方面,还提供了一种游戏系统中虚拟镜头的控制装置,
包括:虚拟角色检测单元,用于检测游戏系统中的虚拟角色队伍中的每个虚拟角色的坐标,
虚拟角色队伍包括一个或多个虚拟角色,一个或多个虚拟角色中的至少一个由游戏的玩家
控制;重心计算单元,用于计算各个虚拟角色的坐标所围成的多边形的重心坐标;以及虚拟
镜头设置单元,用于控制游戏系统的虚拟镜头的视点中心跟随重心坐标移动。
本申请所要解决的技术问题是:在以多人小队战斗为核心玩法的手游上,提供一
个自动的虚拟镜头跟随方案,保证尽可能多的虚拟角色队伍中的虚拟角色能够同时展现在
屏幕中。
本申请利用算法,保证队伍移动时,所有虚拟角色均可见,提高游戏的“队伍集体
作战”体验;保证战斗时,所有虚拟角色和目标虚拟角色(例如,玩家在游戏中的虚拟角色的
对手虚拟角色)均可见,同时可以响应玩家操作,提高游戏的“指挥”体验。
附图说明
图1是根据本申请一实施例的游戏系统中虚拟镜头的控制方法的流程图;
图2是根据本申请另一实施例的游戏系统中虚拟镜头的控制方法的流程图;
图3是根据本申请一实施例的游戏系统中虚拟镜头的控制装置的框图;
图4是根据本申请一示例性实施例的游戏系统中虚拟镜头的控制方法的流程图;
图5是根据本申请另一示例性实施例的游戏系统中虚拟镜头的控制方法的流程
图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的
附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是
本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人
员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范
围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第
二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用
的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或
描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆
盖不排他的包含,例如,包含了一系列步骤或模块或单元的过程、方法、系统、产品或设备不
必限于清楚地列出的那些步骤或模块或单元,而是可包括没有清楚地列出的或对于这些过
程、方法、产品或设备固有的其它步骤或模块或单元。
图1是根据本申请一实施例的游戏系统中虚拟镜头的控制方法的流程图。如图1所
示,根据本申请实施例,提供了一种游戏系统中虚拟镜头的控制方法,包括:步骤S101,检测
游戏系统中的虚拟角色队伍中的每个虚拟角色的坐标,虚拟角色队伍包括一个或多个虚拟
角色,一个或多个虚拟角色中的至少一个由游戏的玩家控制;步骤S103,计算各个虚拟角色
的坐标所围成的多边形的重心坐标;以及步骤S105,控制游戏系统的虚拟镜头的视点中心
跟随重心坐标移动。例如,游戏中的虚拟角色队伍由一个或多个虚拟角色构成,虚拟角色可
以是玩家控制的虚拟角色。在虚拟角色队伍中,玩家控制其中的一个虚拟角色,也可以控制
其中的多个虚拟角色或者全部虚拟角色。在现有手游的操作中,通常玩家只能操作一个虚
拟角色,而虚拟角色队伍中的其余虚拟角色由AI控制,虚拟镜头也以玩家操作的虚拟角色
为中心,这使得当玩家控制的虚拟角色移动时,虚拟镜头的移动使玩家经常看不到虚拟角
色队伍中的其他虚拟角色,也限制了玩家仅能操作一个虚拟角色,游戏体验不佳。通常,在
游戏中的例如“非战斗状态”的对手虚拟角色不与玩家控制的虚拟角色互动的状态下,玩家
只需关注该虚拟角色队伍中的虚拟角色。在本申请实施例中,将虚拟镜头的视点中心设定
在虚拟角色队伍的中心。具体地,本申请实施例还计算虚拟角色的坐标的连线所围成的多
边形的重心坐标,然后根据该重心坐标设置虚拟镜头的视点中心,以此方式,虚拟镜头的视
点中心被设定在虚拟角色队伍中间使得虚拟角色队伍中的虚拟角色相对均匀地分布在虚
拟镜头的视野中,而不是固定在某个特定的虚拟角色上。
在根据本申请实施例的控制方法中,如果虚拟角色队伍包括的虚拟角色的数量为
1,则重心坐标为虚拟角色的坐标,如果虚拟角色队伍包括的虚拟角色的数量大于1,则重心
坐标A=(xb,yb)的计算公式为
其中,虚拟角色的数量为n,n≥1,xi是n个虚拟角色中的第i个虚
拟角色的x轴坐标,yi是n个虚拟角色中的第i个虚拟角色的y轴坐标。也就是说,如果该虚拟
角色队伍中只有一个虚拟角色,则该虚拟角色的坐标即虚拟角色队伍的重心坐标,虚拟镜
头的视点中心根据该重心坐标设置。如果虚拟角色队伍包括多个虚拟角色,则虚拟角色队
伍的重心坐标的x轴坐标为虚拟角色队伍中的所有虚拟角色的x轴坐标的平均值,虚拟角色
队伍的重心坐标的y轴坐标为虚拟角色队伍中的所有虚拟角色的y轴坐标的平均值。以此方
式可以计算出虚拟角色队伍的重心坐标。
根据本申请实施例的控制方法还包括:检测基准虚拟角色的坐标,基准虚拟角色
是虚拟角色队伍中与目标虚拟角色最近的虚拟角色,计算重心坐标到基准虚拟角色的坐标
的向量,如果基准虚拟角色的坐标位移为新的坐标,则将向量平移使得基准虚拟角色的坐
标与新的坐标重合,根据重心坐标平移后得到的坐标设置新的虚拟镜头的视点中心。如果
虚拟角色队伍中的虚拟角色移动,例如,玩家控制虚拟角色队伍中的一个或多个虚拟角色
移动,使得该虚拟角色的坐标发生位移,则为了保证虚拟镜头跟随虚拟角色,需要重新定位
虚拟镜头的视点中心。在本申请实施例中,可以将虚拟角色队伍中的与目标虚拟角色最近
的一个虚拟角色设为基准虚拟角色,目标虚拟角色例如是玩家的虚拟角色在游戏中的对手
虚拟角色或敌人虚拟角色,基准虚拟角色例如是虚拟角色队伍中与该对手虚拟角色或敌人
虚拟角色最近的虚拟角色。当基准虚拟角色移动时,虚拟角色队伍的重心改变,虚拟镜头相
应发生变化。在本申请实施例中,虚拟镜头的视点中心通过计算出中心的坐标与基准虚拟
角色的坐标的向量,当基准虚拟角色移动到新的坐标时,该向量跟随基准虚拟角色的移动
而移动,这样向量另一端的重心坐标将跟随向量,即,跟随基准虚拟角色的移动而移动,得
到重心坐标平移后的新的坐标,然后以该新的坐标为依据设置新的虚拟镜头的中心。以此
方式,可以得出虚拟角色队伍中的虚拟角色移动后虚拟镜头的合适位置。
图2是根据本申请另一实施例的游戏系统中虚拟镜头的控制方法的流程图。如图2
所示,根据本申请实施例的方法还包括:步骤S201,检测游戏系统中的目标虚拟角色的坐
标;步骤S203,计算重心坐标到目标虚拟角色的坐标之间的线段的中点的坐标,以及步骤
S205,根据中点的坐标设置新的视点中心。通常,在游戏中的例如“战斗状态”的对手虚拟角
色与玩家控制的虚拟角色互动的状态下,玩家需要看到作为目标虚拟角色的对手或者敌人
的虚拟角色,因此,如果虚拟镜头的视点中心设定在特定虚拟角色的坐标或者虚拟角色队
伍中的某个坐标处将产生不便。为了方便将虚拟角色队伍和目标虚拟角色均匀分布在虚拟
镜头的视野中,在本申请实施例中,根据虚拟角色队伍的重心坐标和目标虚拟角色的坐标
之间的线段的中点的坐标设置虚拟镜头的视点中心。以这样的方式,方便玩家看到虚拟角
色队伍与目标虚拟角色。
在根据本申请实施例的控制方法中,如果一个或多个虚拟角色和目标虚拟角色中
的任一个的坐标发生位移,则重新计算新的中点的坐标。通常,在战斗状态下,虚拟角色队
伍中的虚拟角色与目标虚拟角色可能移动。其中,每个虚拟角色的移动都会产生重心坐标
和目标虚拟角色的坐标之间的线段的中点的坐标的变化,因此,如果任一个坐标变化,需要
重新计算新的中点的坐标。以这样的方式,随时更新设置虚拟镜头所需要的中点的坐标。
在根据本申请实施例的控制方法中,如果新的中点的坐标与中点的坐标之间的距
离大于预定阈值,将新的虚拟镜头的视点中心设置为新的中点的坐标。通常,例如在“战斗
状态”下,任一个虚拟角色的移动可能会比较频繁,或者移动的幅度较小。若对于任何虚拟
角色的移动都改变虚拟镜头的视点中心的定位,屏幕的频繁、或者微小的移动是不必要的
甚至是不便的。因此,在本申请实施例中,设置预定阈值,只有当新的中点的坐标与中点的
坐标之间的距离大于预定阈值时才设定新的虚拟镜头的视点中心。例如,该预定阈值可以
是2个虚拟角色模型单位。这时,根据新的中点的坐标设置虚拟镜头的视点中心。以这样的
方式,避免了不必要的虚拟镜头的移动,玩家体验更好。
根据本申请实施例的控制方法还包括:将虚拟镜头的视点中心匀速移动到新的虚
拟镜头的视点中心。虚拟镜头的视点中心的改变使给玩家呈现的画面发生改变,突然的改
变会使玩家难以找到虚拟角色或者目标,因此在本申请实施例中采用平滑处理,在虚拟角
色队伍重心改变、虚拟角色队伍中虚拟角色移动和中点移动超过预定阈值等的任一种情况
下导致虚拟镜头的视点中心改变,可以将原虚拟镜头的视点中心匀速移动到新的虚拟镜头
的视点中心。以这样的方式,给玩家呈现的画面平滑移动,玩家体验更好。
图3是根据本申请一实施例的游戏系统中虚拟镜头的控制装置的框图。如图3所
示,本申请实施例还提供了一种游戏系统中虚拟镜头的控制装置,包括:虚拟角色检测单元
302,用于检测游戏中的虚拟角色队伍中的每个虚拟角色的坐标,虚拟角色队伍包括一个或
多个虚拟角色,一个或多个虚拟角色中的至少一个虚拟角色由游戏的玩家控制;重心计算
单元304,用于计算各个虚拟角色的坐标的所围成的多边形的重心坐标;虚拟镜头设置单元
306,用于控制游戏系统的虚拟镜头的视点中心跟随所述重心坐标移动。
根据本申请实施例的装置还包括:基准虚拟角色检测单元308,用于获得基准虚拟
角色的坐标,基准虚拟角色是虚拟角色队伍中与目标虚拟角色最近的虚拟角色;向量计算
单元310,用于计算重心坐标与基准虚拟角色的坐标的向量;以及新虚拟镜头设置单元312,
如果基准虚拟角色的坐标位移为新的坐标,则将向量平移使得基准虚拟角色的坐标与新的
坐标重合,根据重心坐标平移后得到的坐标设置新的虚拟镜头的视点中心。
根据本申请实施例的装置还包括:目标检测单元314,用于获得游戏中的目标虚拟
角色的坐标;中点计算单元316,用于计算重心坐标到目标虚拟角色的坐标之间的线段的中
点的坐标,视点更新单元318,根据中点的坐标设置新的虚拟镜头的视点中心。
根据本申请实施例的装置还包括:视点移动单元320,用于将虚拟镜头的视点中心
匀速移动到新的虚拟镜头的视点中心。
根据本申请实施例的装置执行上述实施例中对应的方法,在此不再赘述。
在本申请的示例性实施例中,提供一套完整的虚拟镜头追随虚拟角色队伍移动的
算法,包含:
1、非战斗状态下的虚拟镜头追随算法。
非战斗状态下,敌人虚拟角色不在虚拟镜头中。虚拟角色队伍以一个阵型整体移
动,虚拟镜头固定于虚拟角色队伍中心点。但由于地形变化,阵型不会一直保持规则多边
形,虚拟角色队伍中心点可能会出现抖动,所以本申请也提供了解决平滑镜头移动轨迹的
算法。
2、战斗状态下的虚拟镜头追随算法。
战斗状态下,本申请的算法保证目标敌人虚拟角色和玩家控制的虚拟角色都在同
一虚拟镜头的视野里,并且保证尽可能少的发生虚拟镜头位置的变化。
以下结合图4和图5详细说明本申请示例性实施例的设置虚拟镜头的视点中心的
方法。
1、非战斗状态下,全队移动时的虚拟镜头追随算法。
图4是根据本申请一示例性实施例的设置虚拟镜头的视点中心的方法的流程图。
如图4所示,在图4中:
S401,输入所有虚拟角色的2D坐标(1至4个);
S402,计算2D坐标连线围成的多边形的重心2D坐标;
当虚拟角色队伍虚拟角色数量==1,则重心2D坐标=S401获得的2D坐标;
当虚拟角色队伍虚拟角色数量>1,则重心2D坐标A=(xb,yb)的计算公式为
S403,获取目标敌人坐标,求出最靠近敌人的虚拟角色(命名为H)2D坐标B=(xh,
yh);其中,虚拟角色的数量为n,n≥1,xi是n个虚拟角色中的第i个虚拟角色的x轴坐标,yi是
n个虚拟角色中的第i个虚拟角色的y轴坐标。
S404,计算S402重心坐标A与S403虚拟角色(H)坐标B的向量
S405,将镜头视点中心设置为A;
S406,开启定时器,检查虚拟角色坐标是否发生位移;
S407,当虚拟角色(H)坐标发生位移时,通过新的坐标B′将S404的向量平移后,
可以计算得到新的视点中心A′;
S408,将虚拟镜头匀速移动到A′;
S409,重复S406的流程,直到进入战斗状态。
2、战斗状态下,镜头定位算法。
图5是根据本申请另一示例性实施例的游戏系统中虚拟镜头的控制方法的流程
图。如图5所示,在图5中:
S501,输入所有虚拟角色的2D坐标(1至4个),目标敌人虚拟角色(命名为N)的2D坐
标E(取最靠近虚拟角色的1个);
S502,计算虚拟角色2D坐标连线组成的多边形的重心2D坐标A(同S402);
S503,计算线段AE的中点C;
S504,镜头视点设置为C;
S505,开启定时器,检查所有虚拟角色和敌人虚拟角色(N)的坐标是否发生位移;
S506,当有任意一个坐标发生位移时,通过重复S501、S502、S503的步骤,可以算得
新的中点坐标C′;
S507,当S504坐标C与S506坐标C′距离大于2个虚拟角色模型单位时,更新S504镜
头视点中心为C′;
S508,将镜头匀速移动到C′;
S509,重复S505的流程,直到退出战斗状态。
本申请在以多人小队战斗为核心玩法的手游上,提供一个自动的镜头跟随方案,
保证尽可能多的小队成员能够同时展现在屏幕中。本申请利用算法,保证虚拟角色队伍移
动时,所有虚拟角色均可见,提高游戏的“队伍集体作战”体验;保证战斗时,所有虚拟角色
和目标虚拟角色均可见,同时可以响应玩家操作,提高游戏的“指挥”体验。
以上所述仅是本申请的示例性实施方式,应当指出,对于本技术领域的普通技术
人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也
应视为本申请的保护范围。