欢迎光临小豌豆知识网!
当前位置:首页 > 生活技术 > 运动娱乐> 动画播放方法、装置、设备及存储介质独创技术78287字

动画播放方法、装置、设备及存储介质

2021-03-09 12:21:19

动画播放方法、装置、设备及存储介质

  技术领域

  本申请实施例涉及计算机技术领域,特别涉及一种动画播放方法、装置、设备及存储介质。

  背景技术

  在游戏中,玩家可以控制游戏角色执行奔跑、跳跃等多种动作,终端通过播放游戏角色的不同动画来体现游戏角色的不同动作。例如,终端通过播放游戏角色的奔跑动画来体现游戏角色的奔跑动作;终端通过播放游戏角色的跳跃动画来体现游戏角色的跳跃动作。为实现通过游戏角色的不同动画来体现游戏角色的不同动作,通常利用动画状态机来管理游戏角色的各种动画。

  目前,利用单层的动画状态机管理游戏角色的各种动画,动画之间相互排斥,容易造成动画播放异常的问题,动画播放的效果较差。

  发明内容

  本申请实施例提供了一种动画播放方法、装置、设备及存储介质,可用于提高动画播放的效果。所述技术方案如下:

  一方面,本申请实施例提供了一种动画播放方法,所述方法包括:

  获取游戏过程中产生的目标操作指令;

  基于所述目标操作指令,在至少两个主层状态机中确定至少两个目标主层状态机,不同的主层状态机管理的动画之间相互兼容;

  针对所述至少两个目标主层状态机中的任一目标主层状态机,在所述任一目标主层状态机管理的动画中,确定与所述目标操作指令匹配的第一动画;

  基于所述至少两个目标主层状态机确定的至少两个第一动画,确定待播放的第二动画,在游戏页面播放所述第二动画。

  另一方面,提供了一种动画播放装置,所述装置包括:

  获取模块,用于获取游戏过程中产生的目标操作指令;

  第一确定模块,用于基于所述目标操作指令,在至少两个主层状态机中确定至少两个目标主层状态机,不同的主层状态机管理的动画之间相互兼容;

  第二确定模块,用于针对所述至少两个目标主层状态机中的任一目标主层状态机,在所述任一目标主层状态机管理的动画中,确定与所述目标操作指令匹配的第一动画;

  第三确定模块,用于基于所述至少两个目标主层状态机确定的至少两个第一动画,确定待播放的第二动画;

  播放模块,用于在游戏页面播放所述第二动画。

  在一种可能实现方式中,所述任一目标主层状态机基于状态和状态对应的动画参数管理动画,所述第二确定模块,用于在所述任一目标主层状态机包括的状态中,确定与所述目标操作指令匹配的目标状态;基于所述目标状态对应的动画参数,确定与所述目标操作指令匹配的第一动画。

  在一种可能实现方式中,所述任一目标主层状态机包括至少一个子层状态机,所述第二确定模块,用于在所述任一目标主层状态机包括的至少一个子层状态机中,确定与所述目标操作指令匹配的目标子层状态机;在所述目标子层状态机管理的动画中,确定与所述目标操作指令匹配的第一动画。

  在一种可能实现方式中,所述装置还包括:

  构建模块,用于基于游戏角色支持的动画以及动画之间的兼容关系,确定至少两个待构建的主层状态机分别管理的动画;基于任一待构建的主层状态机管理的动画以及动画之间的转换关系,构建任一主层状态机。

  在一种可能实现方式中,所述第三确定模块,用于基于所述至少两个目标主层状态机分别对应的动画处理模式,对所述至少两个第一动画进行处理,将处理后得到的动画作为待播放的第二动画。

  在一种可能实现方式中,所述第三确定模块,还用于响应于所述至少两个目标主层状态机中存在动画处理模式为动画覆盖的目标主层状态机,利用满足条件的第一动画覆盖不满足条件的第一动画,将覆盖后得到的动画作为待播放的第二动画,所述满足条件的第一动画为在所述动画处理模式为动画覆盖的目标主层状态机管理的动画中确定的第一动画。

  在一种可能实现方式中,所述播放模块,还用于确定所述满足条件的第一动画的播放时机;响应于满足所述满足条件的第一动画的播放时机,在游戏页面播放所述第二动画。

  在一种可能实现方式中,所述第三确定模块,还用于响应于所述至少两个目标主层状态机分别对应的动画处理模式均为动画叠加,将所述至少两个第一动画进行叠加处理,将叠加处理后得到的动画作为待播放的第二动画。

  在一种可能实现方式中,所述播放模块,还用于将所述叠加处理后得到的动画中的第一个叠加动画作为起始动画;确定所述起始动画的播放时机;响应于满足所述起始动画的播放时机,在游戏页面播放所述第二动画。

  另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条程序代码,所述至少一条程序代码由所述处理器加载并执行,以实现上述任一所述的动画播放方法。

  另一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行,以实现上述任一所述的动画播放方法。

  本申请实施例提供的技术方案至少带来如下有益效果:

  利用至少两个主层状态机管理动画,不同的主层状态机管理的动画之间相互兼容,在此基础下,根据目标操作指令确定至少两个目标主层状态机,在每个目标主层状态机管理的动画中确定一个第一动画,能够得到至少两个目标主层状态机确定的至少两个相互兼容的第一动画,进而根据至少两个相互兼容的第一动画确定待播放的第二动画并在游戏页面播放第二动画。在此种播放动画的过程中,待播放的动画可以根据多个相互兼容的动画得到,能够避免动画冲突,有利于解决动画播放异常的问题,动画播放的效果较好,有利于提高玩家的游戏体验。

  附图说明

  为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

  图1是本申请实施例提供的一种动画播放方法的实施环境的示意图;

  图2是本申请实施例提供的一种动画播放方法的流程图;

  图3是本申请实施例提供的一种碰撞盒子的设置过程的示意图;

  图4是本申请实施例提供的一种主层状态机下构建的子层状态机的示意图;

  图5是本申请实施例提供的一种主层状态机下构建的子层状态机的示意图;

  图6是本申请实施例提供的一种包括至少两个主层状态机的动画状态机的示意图;

  图7是本申请实施例提供的一种将目标子层状态机设置为触发状态的示意图;

  图8是本申请实施例提供的一种将目标状态设置为触发状态的示意图;

  图9是本申请实施例提供的一种将主层状态机对应的动画处理模式设置为动画覆盖的示意图;

  图10是本申请实施例提供的一种在游戏页面播放换弹动画的示意图;

  图11是本申请实施例提供的一种动画播放的过程的示意图;

  图12是本申请实施例提供的一种动画播放装置的示意图;

  图13是本申请实施例提供的一种动画播放装置的示意图;

  图14是本申请实施例提供的一种服务器的结构示意图;

  图15是本申请实施例提供的一种终端的结构示意图。

  具体实施方式

  为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

  需要说明的是,本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

  本申请实施例提供了一种动画播放方法,请参考图1,其示出了本申请实施例提供的动画播放方法的实施环境的示意图。该实施环境可以包括:终端11和服务器12。

  其中,终端11安装和运行有游戏类应用程序。该游戏类应用程序可以是军事仿真游戏、TPS(Third-Person Shooting,第三人称射击)游戏、FPS(First-Person Shooting,第一人称射击)游戏、MOBA(Multiplayer Online Battle Arena,多人在线战术竞技)游戏、多人枪战类生存游戏中的任意一种。玩家可以使用终端11控制游戏类应用程序中的游戏角色执行动作,该动作包括但不限于:移动、开火、蹲、趴、爬行、步行、奔跑、骑行、跳跃、驾驶、拾取、射击、攻击、投掷、游泳中的至少一种。在需要体现游戏角色的动作时,终端11可以应用本申请实施例提供的方法播放动画,进而通过动画的方式体现游戏角色的动作。

  服务器12用于为游戏类应用程序提供后台服务。在一种可能实现方式中,服务器12承担主要计算工作,终端11承担次要计算工作;或者,服务器12承担次要计算工作,终端11承担主要计算工作;或者,服务器12和终端11二者之间采用分布式计算架构进行协同计算。

  在一种可能实现方式中,终端11可以是任何一种可与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如PC(Personal Computer,个人计算机)、手机、智能手机、PDA(Personal Digital Assistant,个人数字助手)、可穿戴设备、手持便携式游戏设备、掌上电脑PPC(Pocket PC)、平板电脑、智能车机、智能电视、智能音箱等。服务器12可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。终端11与服务器12通过有线或无线网络建立通信连接。

  本领域技术人员应能理解上述终端11和服务器12仅为举例,其他现有的或今后可能出现的终端或服务器如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。

  基于上述图1所示的实施环境,本申请实施例提供一种动画播放方法,以该方法应用于终端11为例。如图2所示,本申请实施例提供的方法可以包括如下步骤:

  在步骤201中,获取游戏过程中产生的目标操作指令。

  游戏过程中产生的操作指令是指对游戏角色的控制指令,操作指令用于控制游戏角色执行某种或某些动作。本申请实施例中将用于控制游戏角色执行某些(至少两个)动作的操作指令作为目标操作指令。需要说明的是,本申请实施例对游戏类型不加以限定,可以是指军事仿真游戏、TPS游戏、FPS游戏、MOBA游戏、多人枪战类生存游戏中的任意一种。每种游戏中均具有游戏角色,游戏角色由玩家通过终端进行控制。

  在一种可能实现方式中,获取游戏过程中产生的目标操作指令的过程为:获取游戏过程中产生的操作指令,将用于控制游戏角色执行至少两种动作的操作指令作为目标操作指令。

  操作指令可以是根据玩家的操作直接获取的,也可以是通过检测游戏角色所处场景而自动获取的,本申请实施例对此不加以限定。对于操作指令根据玩家的操作直接获取的情况,终端获取游戏过程中产生的操作指令的过程可以为:玩家触发操作,终端获取操作对应的操作指令。示例性地,此种方式下获取的操作指令可以是指跳跃指令、奔跑指令等。

  对于操作指令通过检测游戏角色所处场景而自动获取的情况,终端获取游戏过程中产生的操作指令的过程可以为:终端实时检测游戏角色所处场景,响应于游戏角色所处场景满足触发操作的条件,终端获取游戏过程中产生的操作指令。示例性地,此种方式下获取的操作指令可以是指进入水中指令,该进入水中指令用于控制游戏角色执行游泳的动作。

  例如,终端获取进入水中指令的过程可以为:终端实时检测游戏角色所处场景是否为水场景,当检测到游戏角色所处场景为水场景时,获取进入水中指令。在一种可能实现方式中,终端实时检测游戏角色所处场景是否为水场景的方式可以为:终端实时检测游戏角色身上的碰撞器是否与水面的碰撞盒子接触,当检测到游戏角色身上的碰撞器与水面的碰撞盒子接触时,确定游戏角色所处场景为水场景。在实际的游戏设置中,碰撞盒子可以是指水材质的碰撞盒子,该碰撞盒子可以水平挂载在参考物体上。碰撞盒子及其相关参数可以在游戏开发过程中进行设置。

  例如,碰撞盒子的设置过程可以如图3所示。在图3中,先定义一个用于挂载碰撞盒子的参考物体,该参考物体命名为“ocean-big”。然后通过勾选“碰撞盒子”的选项将碰撞盒子挂载在该命名为“ocean-big”的参考物体上。挂载在参考物体上的碰撞盒子可以如图3中的30所示。挂载在参考物体上的碰撞盒子30置于水平面上方。需要说明的是,挂载在参考物体上的碰撞盒子30距离水平面的高度,以及挂载在参考物体上的碰撞盒子30的其他参数均可以根据游戏需求进行设置,本申请实施例不加以限定。

  在获取游戏过程中产生的操作指令后,可以对操作指令进行分析,将用于控制游戏角色执行至少两种动作的操作指令作为目标操作指令。需要说明的是,由于目标操作指令认为是某一时刻获取的操作指令,所以目标操作指令用于控制游戏角色同时执行至少两种动作。在获取目标操作指令后,执行后续步骤202至步骤204。

  在步骤202中,基于目标操作指令,在至少两个主层状态机中确定至少两个目标主层状态机,不同的主层状态机管理的动画之间相互兼容。

  目标操作指令用于控制游戏角色执行某些动作,终端通常利用游戏角色的动画来体现游戏角色的动作,也就是说,每种动作均对应一种动画,例如,跳跃动作对应跳跃动画,奔跑动作对应奔跑动画,游泳动作对应游泳动画等。需要说明的是,一个目标操作指令用于控制游戏角色执行多种动作,这多种动作对应多种动画。

  例如,假设目标操作指令基于检测到游戏角色所处场景为子弹消耗完毕并且停止移动的场景获得,则该目标操作指令可以用于控制游戏角色执行更换子弹以及停止移动这两个动作。这两个动作对应换弹动画和停止移动动画。需要说明的是,由于在停止移动之前游戏角色是处于移动状态的,由移动状态变换到停止移动有视觉上的不同,因此,将停止移动也视为一种动作,用于表现停止移动的停止移动动画可以是指游戏角色的静止动画。

  游戏中利用动画状态机来管理游戏角色的动画。动画状态机可以在游戏开发阶段构建得到。游戏开发人员可以利用Unity引擎开发游戏,在游戏的开发过程中,游戏开发人员可以先利用开发终端设置好游戏角色支持的各种动画,然后将动画导入Unity引擎,进而实现基于动画以及动画之间的关联关系在Unity引擎中构建用于管理各种动画的动画状态机。需要说明的是,在构建好动画状态机后需要创建将游戏UI(User Interface,用户界面)与动画状态机连接起来的程序代码,以使动画状态机管理的动画能够在游戏UI中播放。

  在本申请实施例中,用于管理游戏角色的动画的动画状态机中包括至少两个主层状态机。也就是说,在执行步骤202之前,需要先构建至少两个主层状态机。不同的主层状态机管理的动画之间相互兼容。也就是说,不同的主层状态机管理的动画之间支持同时播放。在一种可能实现方式中,构建至少两个主层状态机的过程包括以下步骤A和步骤B:

  步骤A:基于游戏角色支持的动画以及动画之间的兼容关系,确定至少两个待构建的主层状态机分别管理的动画。

  基于游戏角色支持的动画以及动画之间的兼容关系,可以分析不同动画是否可能同时发生,在动画状态机中利用同一个主层状态机管理不可能同时发生的一类动画,利用不同主层状态机管理可能同时发生的动画,从而至少两个待构建的主层状态机分别管理哪些动画。需要说明的是,在本申请实施例中,存在可能同时发生的动画,因此,待构建的主层状态机的数量为至少两个。不同的待构建的主层状态机管理的动画的数量可以相同,也可以不同,本申请实施例对此不加以限定。

  例如,假设游戏角色支持的动画为动画1、动画2、动画3和动画4,动画之间的兼容关系指示动画1和动画2可能同时发生,其他动画之间均不可能同时发生,则可以确定待构建的主层状态机的数量为两个,一个待构建的主层状态机管理的动画为动画1、动画3和动画4,另外一个待构建的主层状态机管理的动画为动画2。

  步骤B:基于任一待构建的主层状态机管理的动画以及动画之间的转换关系,构建任一主层状态机。

  在确定至少两个待构建的主层状态机管理的动画后,可以进一步根据每个待构建的主层状态机管理的动画以及动画之间的转换关系,均构建一个主层状态机,得到至少两个主层状态机。

  在一种可能实现方式中,基于任一待构建的主层状态机管理的动画以及动画之间的转换关系,构建任一主层状态机的过程包括以下步骤a和步骤b:

  步骤a:将任一待构建的主层状态机管理的动画对应的状态添加至一个主层状态机中。

  在动画状态机中,一个动画可以用一个状态以及该状态对应的动画参数表示。也就是说,主层状态机基于状态和状态对应的动画参数管理动画。状态可以指示动画体现的动作是什么,动画参数可以指示如何形成体现该动作的动画。例如,若动画为奔跑动画,则奔跑动画对应的状态可以为“奔跑”,“奔跑”这一状态对应的动画参数可以规定以什么角度、什么速率形成体现奔跑动作的动画。状态本身是携带动画参数的,将状态添加至主层状态机中后,也即将状态对应的动画参数添加至主层状态机中。

  需要说明的是,将待构建的主层状态机管理的动画对应的状态添加至一个主层状态机中,是指将待构建的主层状态机管理的动画对应的状态添加至一个空的主层状态机中的。将待构建的主层状态机管理动画对应的状态添加至主层状态机中的具体方式可以根据游戏的需求决定。示例性地,将待构建的主层状态机管理的动画对应的状态添加至主层状态机中的方式包括但不限于以下三种:

  方式一:将待构建的主层状态机管理的动画对应的状态直接添加至主层状态机中。

  在此种方式一下,在主层状态机层面包括多个状态。

  方式二:将待构建的主层状态机管理的动画对应的状态进行分类,在主层状态机中为每类状态构建一个子层状态机,将每类状态中的状态添加至该类状态对应的子层状态机中。

  每个子层状态机用于管理一类状态对应的动画。在此种方式二下,在主层状态机层面包括至少一个子层状态机。

  此种方式二下构建的一个子层状态机中可以包括一个或多个状态,本申请实施例对此不加以限定。需要说明的是,此处说明的子层状态机中包括的状态是指游戏角色的动画对应的状态,除此之外,子层状态机中还可以包括自带状态,自带状态可以包括任意状态(AnyState)、进入状态(Entry)、退出状态(Exit)等。此外,主层状态机中除包括至少一个子层状态机外,同样可以包括任意状态(AnyState)、进入状态(Entry)、退出状态(Exit)等自带状态。

  方式三:将待构建的主层状态机管理的动画对应的状态进行分类,在主层状态机中为包括至少两个状态的每类状态构建一个子层状态机,将包括至少两个状态的每类状态中的状态添加至该类状态对应的子层状态机中;将仅包括一个状态的每类状态中的状态直接添加至主层状态机中。

  仅为包括至少两个状态的每类状态建立子层状态机,此种情况下,每个子层状态机中包括至少两个状态。在此种方式三下,若既存在包括至少两个状态的至少一类状态,又存在仅包括一个状态的至少一类状态,则在主层状态机层面包括至少一个子层状态机和至少一个状态。每个子层状态机中包括至少两个状态。

  在上述方式二和方式三中,均涉及对待构建的主层状态机管理的动画对应的状态进行分类的过程,本申请实施例对分类的标准不加以限定。示例性地,可以根据游戏场景进行分类,也可以根据游戏角色所处环境进行分类,还可以根据动画所体现的动作类型进行分类等。当然,还可以综合多种分类标准进行分类。在对状态进行分类后,不同类的状态之间彼此分离、相对独立。

  例如,对于分类标准为根据游戏角色所处环境进行分类的情况,可以将游戏角色处于陆地上的动画对应的状态和游戏角色处于水中的动画对应的状态分为不同的两类。再例如,对于分类标准为根据动画所体现的动作类型进行分类的情况,可以将体现游泳类型(正常速率游、快游、潜水游等)的动作的动画对应的状态分为一类,将体现跳跃类型(跑跳、爬跳、跳起等)的动作的动画对应的状态分为另外一类。

  需要说明的是,每个待构建的主层状态机管理的动画对应的状态均可以采用上述三种方式中的任一种方式添加至一个主层状态机中。不同的待构建的主层状态机管理的动画对应的状态可以采用相同的方式进行添加,也可以采用不同的方式进行添加,本申请实施例对此不加以限定。

  在一种可能实现方式中,在将至少两个待构建的主层状态机管理的动画对应的状态分别添加至至少两个主层状态机中后,确定出至少两个主层状态机,然后可以为每个主层状态机分别设置标识,以便于利用标识将主层状态机与程序代码中进行关联。示例性地,主层状态机的标识可以是指主层状态机的名称。除为每个主层状态机设置标识外,还可以为每个主层状态机设置参数类型,该参数类型用于指示主层状态机中采用哪种类型的参数限制状态之间的过渡。在不同的参数类型下,主层状态机中采用不同类型的参数限制状态之间的过渡。示例性地,参数类型包括但不限于Float(浮点数)、Int(整数)、Bool(布尔值)、Trigger(触发器)中的任一种。当参数类型为Bool(布尔值)时,由于Bool的取值为False和True,所以主层状态机中采用False/True类型的参数限制状态之间的过渡,例如,当参数为False时,限制由状态A过渡至状态B;当参数为True时,限制由状态B过渡至状态A。当参数类型为Int(整数)时,由于Int的取值为整数数值,所以主层状态机中采用整数数值类型的参数限制状态之间的过渡,例如,当参数为整数2时,限制由状态A过渡至状态B;当参数为整数5时,限制由状态B过渡至状态A。

  在一种可能实现方式中,在主层状态机中构建子层状态机时,可以为每个子层状态机分别设置标识,子层状态机的标识可以根据子层状态机管理的一类状态进行设置。例如,假设子层状态机管理的一类状态为水中的游泳状态,则该子层状态机的标识可以设置为“游泳”。

  示例性地,假设一个主层状态机的标识为“基础层”,该主层状态机下可以为游泳类型(正常速率游、快游、潜水游等)的动作的动画对应的状态构建一个标识为“游泳”的子层状态机,还可以为跳跃类型(跑跳、爬跳等)的动作的动画对应的状态构建一个标识为“跳跃”的子层状态机。标识为“游泳”的子层状态机和标识为“跳跃”的子层状态机属于同一主层状态机下的不同子层状态机。如图4和图5所示,在主层状态机下构建这两个子层状态机后,每个子层状态机管理各自的动画。如图4中的40所示,标识为“游泳”的子层状态机位于标识为“基础层”的主层状态机下,该标识为“游泳”的子层状态机管理游戏角色在游戏中的游泳类型的动画。如图5中的50所示,标识为“跳跃”的子层状态机同样位于标识为“基础层”的主层状态机下,该标识为“跳跃”的子层状态机管理游戏角色在游戏中的跳跃类型的动画。

  步骤b:在将状态添加至主层状态机中后,根据管理的动画之间的转换关系,在主层状态机层面以及子层状态机层面分别设置过渡关系,为每个过渡关系设置对应的触发条件。

  在主层状态机层面可能包括状态和子层状态机中的至少一种,在主层状态机层面设置过渡关系是指在主层状态机包括的状态之间、状态与子层状态机之间、子层状态机之间设置过渡关系。子层状态机层面仅包括状态,在子层状态机层面设置过渡关系是指在子层状态机包括的状态之间设置过渡关系。无论是在状态之间、状态与子层状态机之间还是子层状态机之间设置过渡关系,过渡关系均是针对两个主体(每个主体均可以是指状态或子层状态机)设置的。

  过渡关系用于指示由一个主体过渡到另外一个主体。需要说明的是,过渡关系具有方向特征。也就是说,从主体A到主体B的过渡关系与从主体B到主体A的过渡关系不同,从主体A到主体B的过渡关系用于指示由主体A过渡到主体B,从主体B到主体A的过渡关系用于指示由主体B过渡到主体A。在一种可能实现方式中,在两个主体之间设置过渡关系的方式可以是指在两个主体之间添加带箭头的直线,箭头指向需要过渡到的主体。

  两个主体之间存在过渡关系说明两个主体之间存在转换。也就是说,主体A到主体B之间支持转换时才设置过渡关系。根据主体A对应的动画A和主体B对应的动画B之间的转换关系是否指示主体A能够转换至主体B,可以确定是否设置从主体A到主体B的过渡关系。例如,假设奔跑动画和跳跃动画之间的转换关系指示奔跑状态能够转换至跳跃状态,则可以设置从奔跑状态到奔跑状态的过渡关系。需要说明的是,当主体为状态时,主体对应的动画是指该状态对应的动画;当主体为子层状态机时,主体对应的动画是指该子层状态机中管理的一类动画。

  需要说明的是,过渡关系针对处于同一层面进行设置。也就是说,针对直接处于主层状态机中的状态和子层状态机,以及处于每个子层状态机中的状态,分别设置过渡关系。需要进一步说明的是,对于同一层面中还存在自带状态的情况,若自带状态与游戏角色的动画对应的状态或者子层状态机之间支持转换,同样可以在自带状态和游戏角色的动画对应的状态或者子层状态机之间设置过渡关系。

  在设置好过渡关系后,还需要进一步为每个过渡关系设置对应的触发条件。触发条件用于指示在满足什么样的条件时触发过渡关系。在满足触发条件时,触发过渡关系指向的主体。在一种可能实现方式中,一个过渡关系可以设置一个或多个触发条件,本申请实施例对此不加以限定。对于一个过渡关系具有多个触发条件的情况,在满足多个触发条件中的任一触发条件时,触发该过渡关系指向的主体。例如,假设从状态A到状态B的过渡关系具有两个触发条件,分别为玩家点击空格键和玩家点击屏幕中的跳跃按钮,则在此种情况下,当检测到空格键的点击指令或者检测到跳跃按钮的点击指令时,均触发该过渡关系指向的状态B。

  在一种可能实现方式中,触发条件的数量可以通过该过渡关系对应的直线上的箭头的数量表示。有几个触发条件,则在该过渡关系对应的直线上添加几个箭头。

  过渡关系对应的触发条件可以根据游戏需求进行设置,本申请实施例对此不加以限定。在每个层面(主层或者子层)的状态机中,均包括任意状态,该任意状态为默认起始状态,游戏角色的任一动画对应的状态均通过该任意状态指向或者通过游戏角色的其他动画对应的状态指向,也就是说,游戏角色的每个动画对应的状态均对应至少一个过渡关系,过渡关系用于指示从其他状态转换至该状态。每个过渡关系均对应至少一个触发条件,当满足这至少一个触发条件中的任一条件时,均可以定位至该过渡关系指向的状态。

  基于上述步骤a和步骤b,可以完成构建任一主层状态机的过程。每个主层状态机的构建过程均可以参见上述步骤a和步骤b,进而构建得到至少两个主层状态机。

  由于不同主层状态机中的动画是可能同时存在的,所以不同主层状态机管理的动画之间相互兼容。需要说明的是,在完成构建至少两个主层状态机的过程后,需要创建将游戏UI(User Interface,用户界面)与包括至少两个主层状态机的动画状态机关联起来的程序代码,以便于实现包括至少两个主层状态机的动画状态机管理的动画能够在游戏UI中播放的功能。在程序代码中,可以包括用于指示各个主层状态机的标识的程序代码、用于指示各个主层状态机中的子层状态机的标识的程序代码、用于指示过渡关系对应的触发条件的程序代码以及用于指示触发操作与触发条件的对应关系的程序代码等。

  示例性地,构建得到的包括至少两个主层状态机的动画状态机可以如图6所示,动画状态机中包括标识分别为“基础层”、“换弹层”和“XX层”的三个主层状态机。在标识为“基础层”的主层状态机下,包括标识分别为“捡起”、“跳跃”、“爬”、“站立”“蹲伏”等的多个子层状态机,子层状态机之间具有过渡关系(图中仅画出部分子层状态机及过渡关系)。需要说明的是,两个子层状态机之间用带箭头的直线表示过渡关系,同一直线上的箭头数量表示触发条件的数量。

  至少两个主层状态机管理游戏的游戏角色支持的全部动画,在获取目标操作指令后,由于目标操作指令用于控制游戏角色执行至少两种动作,每种动作对应一种动画,要想实现利用至少两种动画体现至少两种动作,这至少两种动画必须相互兼容,也就是说,这两种动画利用至少两个主层状态机分别管理。因此,基于目标操作指令,在至少两个主层状态机中确定至少两个目标主层状态机。目标主层状态机是指用于管理目标操作指令涉及的动画的主层状态机。

  例如,假设目标操作指令用于指示控制游戏角色换弹的同时停止移动,则用于体现换弹动作的换弹动画和用于体现停止移动动作的停止移动动画分别利用两个目标主层状态机管理。

  在一种可能实现方式中,基于目标操作指令,在至少两个主层状态机中确定至少两个目标主层状态机的方式可以为:对目标操作指令进行解析,得到与目标操作指令匹配的至少两个主层状态机的标识,利用至少两个主层状态机的标识在至少两个主层状态机中确定至少两个目标主层状态机。在与动画状态机关联的程序代码中可以记录各个主层状态机的标识,根据解析得到的至少两个主层状态机的标识即可确定至少两个目标主层状态机。标识是在构建动画状态机的过程中定义的,在程序代码中通过同样的标识可以确定目标操作指令对应的是哪个主层状态机。

  在步骤203中,针对至少两个目标主层状态机中的任一目标主层状态机,在任一目标主层状态机管理的动画中,确定与目标操作指令匹配的第一动画。

  在确定至少两个目标主层状态机后,进一步在每个目标主层状态机管理的动画中确定与目标操作指令匹配的第一动画,第一动画用于体现目标操作指令指示的至少两个动作中的一个动作。

  由于每个目标主层状态机中均管理一种用于体现目标操作指令指示的一个动作的一个动画,所以在每个目标主层状态机中,均确定与目标操作指令匹配的第一动画。

  在一种可能实现方式中,任一目标主层状态机基于状态和状态对应的动画参数管理动画,对于至少两个目标主层状态机中的任一目标主层状态机,在任一目标主层状态机管理的动画中,确定与目标操作指令匹配的一个动画过程包括以下两个步骤:

  步骤一:在任一目标主层状态机包括的状态中,确定与目标操作指令匹配的目标状态。

  由于目标主层状态机中利用状态和状态对应的动画参数管理动画,所以在确定第一动画之前,需要先确定与目标操作指令匹配的目标状态。

  根据目标状态添加至该目标主层状态机中的方式的不同,在该目标主层状态机包括的状态中,确定与目标操作指令匹配的目标状态的方式包括以下两种:

  方式一:当目标状态添加至目标主层状态机中的方式为直接添加至目标主层状态机层面时,在该目标主层状态机包括的状态中,确定与目标操作指令匹配的目标状态的方式可以为:直接在目标主层状态机层面包括的状态中,确定与目标操作指令匹配的目标状态。

  目标状态直接处于目标主层状态机层面,在一种可能实现方式中,直接在主层状态机层面包括的状态中,确定与目标操作指令匹配的目标状态的方式可以为:对目标操作指令进行解析,确定目标操作指令在目标主层状态机下满足的触发条件;在目标主层状态层面包括的状态中,将与该触发条件对应的过渡关系指向的状态作为与目标操作指令匹配的目标状态。与包括至少两个主层状态机的动画状态机关联的程序代码中记录有用于指示各个状态对应的过渡关系以及过渡关系对应的触发条件,在确定目标操作指令在目标主层状态机下满足的触发条件后,即可确定触发条件对应的过渡关系,然后将过渡关系指向的状态作为与目标操作指令匹配的目标状态。

  方式二:当目标状态添加至目标主层状态机中的方式为添加至该目标主层状态机中的某一子层状态机中时,在该目标主层状态机包括的状态中,确定与目标操作指令匹配的目标状态的方式可以为:在该目标主层状态机包括的至少一个子层状态机中,确定与目标操作指令匹配的目标子层状态机;在目标子层状态机包括的状态中,确定与目标操作指令匹配的目标状态。

  当目标状态处于子层状态机层面时,需要先确定与目标操作指令匹配的目标子层状态机,然后再进一步从目标子层状态机中确定目标状态。在一种可能实现方式中,该方式二的实现方式可以为:对目标操作指令进行解析,得到主层状态机下的子层状态机的标识以及目标操作指令在该子层状态机下满足的触发条件,利用子主层状态机的标识在目标主层状态机包括的至少一个子层状态机中确定目标子层状态机,进而在该目标子层状态机包括的状态中,将与该触发条件对应的过渡条件指向的状态作为目标状态。此种实现方式可以保证确定处于子层状态机层面的目标状态的过程稳定实现,提高确定目标状态的成功率。

  在与包括至少两个主层状态机的动画状态机关联的程序代码中除可以记录各个主层状态机的标识外,还可以记录每个主层状态机中的各个子层状态机的标识、各个子层状态机中的状态对应的过渡关系以及过渡关系对应的触发条件,根据解析得到的子层状态机的标识即可确定目标子层状态机,进而可以根据目标操作指令在该子层状态机下满足的触发条件对应的过渡条件确定该目标主层状态机中的目标状态。

  在一种可能实现方式中,确定目标子层状态机后,可以将目标子层状态机设置为触发状态。如图7所示,假设标识“基础层”的目标主层状态机中的目标子层状态机为标识为“游泳”的子层状态机,则在变量设置框71中将标识为“游泳”的子层状态机对应的变量设置为True,以将标识为“游泳”的子层状态机设置为触发状态。将标识为“游泳”的子层状态机设置为触发状态后,即可通过过渡关系72定位到标识为“游泳”的子层状态机73,进而在标识为“游泳”的子层状态机73中进一步确定目标状态。

  在一种可能实现方式中,目标状态在动画状态机中有Unity提供的接口供设置变量,当确定目标状态后,可以通过设置变量的方式,将目标状态设置为触发状态。在目标状态设置为触发状态后,动画状态机中的状态即切换至目标状态。

  假设目标主层状态机为标识为“基础层”的主层状态机,该标识为“基础层”的主层状态机中包括标识为“跳跃”的子层状态机,目标状态为处于标识为“跳跃”的子层状态机中的“跳起”状态,将目标状态设置为触发状态的示意图可以如图8所示。在确定目标状态为处于标识为“跳跃”的子层状态机中的“跳起”状态后,在变量设置框81中将“跳起”状态对应的变量设置为True,以将“跳起”状态设置为触发状态。将“跳起”状态设置为触发状态后,即可根据目标操作指令在该子层状态机下满足的触发条件对应的过渡关系82切换到“跳起”状态,进而可以根据“跳起”状态对应的动画参数确定第一动画。需要说明的是,其他状态也是可以按照类似的逻辑通过设置变量的方式进行切换。

  步骤二:基于目标状态对应的动画参数,确定与目标操作指令匹配的第一动画。

  目标状态携带动画参数,动画参数用于指示如何形成动画。当确定一个目标状态后,可以根据该目标状态对应的动画参数,确定与目标操作指令匹配的第一动画。切换到目标状态后,终端可以得到该目标状态对应的动画参数,进而可以根据该状态对应的动画参数确定与目标操作指令匹配的第一动画。

  在一种可能实现方式中,目标状态可以是由游戏角色的另外一个动画对应的状态过渡来的,此时,目标状态除携带动画参数外,还可以携带过渡参数,该过渡参数用于指示当游戏角色的另外一个动画播放到什么程度时播放目标状态对应的第一动画。也就是说,在确定第一动画的过程中,还可以确定第一动画的播放时机。

  在一种可能实现方式中,任一目标主层状态机包括至少一个子层状态机,在此种情况下,在任一目标主层状态机管理的动画中,确定与目标操作指令匹配的第一动画的过程可以为:在任一目标主层状态机包括的至少一个子层状态机中,确定与目标操作指令匹配的目标子层状态机;在目标子层状态机管理的动画中,确定与目标操作指令匹配的第一动画。在一种可能实现方式中,在目标子层状态机管理的动画中,确定与目标操作指令匹配的第一动画的过程可以为:在目标子层状态机包括的状态中,确定与目标操作指令匹配的目标状态,基于该目标状态对应的动画参数,确定与目标操作指令匹配的第一动画。

  以上所述为在任一目标主层状态机管理的动画中,确定与目标操作指令匹配的第一动画的示例性描述。针对不同的目标主层状态机,在目标主层状态机管理的动画中确定第一动画的方式可以根据目标主层状态机的构建情况有所不同,但是在每个目标主层状态机管理的动画中,均可以确定出第一动画。也就是说,目标主层状态机与第一动画一一对应。由于目标主层状态机的数量为至少两个,所以至少两个目标主层状态机能够确定至少两个第一动画。需要说明的是,由于不同目标主层状态机用于管理不同的动画,所以在不同目标主层状态机下确定的第一动画是不同的。

  在步骤204中,基于至少两个目标主层状态机确定的至少两个第一动画,确定待播放的第二动画,在游戏页面播放第二动画。

  至少两个目标主层状态机能够确定至少两个第一动画,在确定至少两个第一动画后,基于至少两个第一动画,确定待播放的第二动画。在每个目标主层状态机管理的动画中均可以确定第一动画。由于目标主层状态机的数量为至少两个,所以第一动画的数量也为至少两个。

  在一种可能实现方式中,基于至少两个目标主层状态机确定的至少两个第一动画,确定待播放的第二动画的方式可以为:基于至少两个目标主层状态机分别对应的动画处理模式,对至少两个第一动画进行处理,将处理后得到的动画作为待播放的第二动画。目标主层状态机对应的动画处理模式用于指示如何将该目标主层状态机管理的动画与其他主层状态机管理的动画进行处理。

  目标主层状态机对应的动画处理模式可以在构建过程中进行设置,目标主层状态机对应的动画处理模式可以为动画覆盖或者动画叠加。动画处理模式为动画覆盖的目标主层状态机的优先级比其他目标主层状态机高。动画叠加用于指示与其他目标主层状态机管理的动画进行叠加,动画覆盖用于指示覆盖其他目标主层状态机管理的动画。

  在一种可能实现方式中,至少两个目标主层状态机分别对应的动画处理模式包括但不限于以下两种情况:

  情况1:至少两个目标主层状态机中存在动画处理模式为动画覆盖的目标主层状态机。

  需要说明的是,由于动画覆盖用于指示覆盖其他目标状态机管理的动画,因此,当至少两个目标主层状态机中存在动画处理模式为动画覆盖的目标主层状态机时,动画处理模式为动画覆盖的目标主层状态机的数量通常为一个。

  情况2:至少两个目标主层状态机分别对应的动画处理模式均为动画叠加。

  需要说明的是,当目标主层状态机对应的动画处理模式为动画叠加时,目标主层状态机还具有用于指示如何与其他主层状态机管理的动画进行叠加的参数。动画之间的叠加可以是指动画融合,也可以是指动画内容相互交叉等,可以根据需求以游戏场景进行设置,本申请实施例对此不加以限定。

  在一种可能实现方式中,对应于上述两种情况,根据至少两个目标主层状态机分别对应的动画处理模式,对至少两个第一动画进行处理,将处理后得到的动作作为待播放的第二动画的实现方式包括以下两种:

  方式一:响应于至少两个目标主层状态机中存在动画处理模式为动画覆盖的目标主层状态机,利用满足条件的第一动画覆盖不满足条件的第一动画,将覆盖后得到的动画作为待播放的第二动画。

  其中,满足条件的第一动画为在动画处理模式为动画覆盖的目标主层状态机管理的动画中确定的第一动画。不满足条件的第一动画是指在除动画处理模式为动画覆盖的目标主层状态机外的其他目标主层状态机管理的动画中确定的第一动画。

  当至少两个目标主层状态机分别对应的动画处理模式的情况为至少两个目标主层状态机中存在动画处理模式为动画覆盖的目标主层状态机时,说明动画处理模式为动画覆盖的目标主层状态机的优先级高于其他目标主层状态机,此时,只要该动画处理模式为动画覆盖的目标主层状态机中有动画需要播放,则优先播放该动画处理模式为动画覆盖的目标主层状态机中的动画。

  当存在动画处理模式为动画覆盖的目标主层状态机时,利用在该动画处理模式为动画覆盖的目标主层状态机管理的动画中确定的第一动画覆盖在除该动画处理模式为动画覆盖的目标主层状态机外的其他目标主层状态机管理的动画中确定的第一动画。需要说明的是,被覆盖的第一动画不会播放,在动画处理模式为动画覆盖的目标主层状态机管理的动画中确定的第一动画不会由于覆盖其他第一动画而发生改变。在此种情况下,覆盖后得到的动画可以是指在动画处理模式为动画覆盖的目标主层状态机管理的动画中确定的第一动画。

  示例性地,假设目标主层状态机的数量为两个,分别为标识为“基础层”的主层状态机和标识为“换弹层”的主层状态机。在标识为“基础层”的主层状态机中确定的第一动画为停止移动动画,在标识为“换弹层”的主层状态机中确定的第一动画为换弹动画。该换弹动画的产生原因可以是玩家把子弹打光,也可以是玩家自动点击换弹按钮。在游戏开发过程中,可以将用于指示标识为“换弹层”的主层状态机对应的动画处理模式的参数设置为图9中的91所示的“覆盖”,此时,标识为“换弹层”的主层状态机对应的动画处理模式为动画覆盖。

  当标识为“换弹层”的主层状态机的动画处理模式为动画覆盖时,利用换弹动画覆盖停止移动动画,覆盖后得到的动画为换弹动画,在游戏页面播放该换弹动画,换弹动画的播放示意图如图10所示。这样能够保证换弹不受任何影响,在游戏页面能够正常播放换弹动画。

  方式二:响应于至少两个目标主层状态机分别对应的动画处理模式均为动画叠加,将至少两个第一动画进行叠加处理,将叠加处理后得到的动画作为待播放的第二动画。

  当至少两个目标主层状态机分别对应的动画处理模式的情况为至少两个目标主层状态机分别对应的动画处理模式均为动画叠加时,说明至少两个目标主层状态机的优先级相同,至少两个目标主层状态机管理的动画之间可以叠加播放。

  任一动画处理模式为动画叠加的目标主层状态机具有叠加参数,叠加参数用于指示叠加方式,也就是用于指示该目标主层状态机管理的动画如何与其他目标主层状态机管理的动画进行叠加。例如,将该目标主层状态机管理的动画叠加于其他哪个目标主层状态机管理的动画之后;再例如,将该目标主层状态机管理的动画叠加于其他哪个目标主层状态机管理的动画的中间部分等。需要说明的是,叠加参数是针对目标主层状态机进行设置的,同一个目标主层状态机中管理的动画对应相同的叠加参数。

  在一种可能实现方式中,将至少两个第一动画进行叠加处理的方式为:将至少两个第一动画按照至少两个目标主层状态机分别具有的叠加参数指示的叠加方式进行叠加。需要说明的是,至少两个目标主层状态机分别具有的叠加参数可以根据游戏需求进行设置,本申请实施例对此不加以限定。在将至少两个第一动画进行叠加处理后,将叠加处理后得到的动画作为待播放的第二动画。

  在确定待播放的第二动画后,可以在游戏页面播放该第二动画,通过动画体现游戏角色的动作,提高玩家的游戏体验。

  在一种可能实现方式中,在确定待播放的第二动画之后,还可以进一步确定动画的播放时机,当满足动画的播放时机时,再在游戏页面播放第二动画。在一种可能实现方式中,根据基于至少两个第一动画确定第二动画的两种不同方式,确定动画的播放时机以及播放第二动画的方式包括以下两种:

  方式1:对于将覆盖后得到的动画作为待播放的第二动画的情况,确定动画的播放时机以及播放第二动画的方式为:确定满足条件的第一动画的播放时机,响应于满足该满足条件的第一动画的播放时机,在游戏页面播放第二动画。

  第一动画由目标状态对应的动画参数确定,目标状态还可以对应有过渡参数,该过渡参数用于指示前一个动画播放到什么程度时开始播放该第一动画。播放程度可以根据经验设置,例如,前一个动画播放完毕;前一个动画播放至一半;前一个动画播放至2/3等。示例性地,过渡参数还可以为空值,此时说明立即播放第一动画。需要说明的是,前一个动画是指与目标状态具有满足的触发条件对应的过渡关系的状态对应的动画。前一个动画用于指示在执行目标操作指令对应的动作之前,游戏角色正在执行的动作。根据目标状态对应的过渡参数,即可确定第一动画的播放时机。满足条件的第一动画是指为在动画处理模式为动画覆盖的目标主层状态机管理的动画中确定的第一动画,该第一动画同样基于一个目标状态和该目标状态对应的动画参数进行管理,根据该第一动画对应的目标状态对应的过渡参数,即可确定该满足条件的第一动画的播放时机。

  由于第二动画为利用满足条件的第一动画覆盖其他第一动画后得到的,所以在满足该满足条件的第一动画的播放时机时,认为满足第二动画的播放时机,在游戏页面播放该第二动画。

  方式2:对于将叠加处理后得到的动画作为待播放的第二动画的情况,确定动画的播放时机以及播放第二动画的方式为:将叠加处理后得到的动画中的第一个叠加动画作为起始动画;确定该起始动画的播放时机;响应于满足该起始动画的播放时机,在游戏页面播放第二动画。

  叠加处理后得到的动画由至少两个第一动画构成,这至少两个第一动画可能被拆分成多个部分。叠加处理后得到的动画中的第一个叠加动画可以是指一个完整的第一动画,也可以是指一个第一动画中的前一部分动画,这与叠加方式有关,本申请实施例对此不加以限定。

  将叠加处理后得到的动画中的第一个叠加动画作为起始动画,在起始动画即为在第二动画的播放过程中需要最先播放的动画。由于起始动画为一个第一动画中的前一部分动画或者全部动画,所以确定起始动画的播放时机的过程即为确定该起始动画所属的第一动画的播放时机的过程。确定起始动画所属的第一动画的播放时机的过程可以参见上述方式1中的相关介绍,此处不再赘述。

  由于第二动画为以起始动画为最先播放的动画,所以在满足该起始动画的播放时机时,认为满足第二动画的播放时机,在游戏页面播放该第二动画。

  在游戏页面播放第二动画之前,先判断是否满足动画的播放时机,当满足动画的播放时机时,再播放第二动画。此种方式,可以起到视觉缓冲的作用,减少视觉突兀感。

  需要说明的是,目标操作指令发生的时机可以是指在默认状态下触发,也可以是指在游戏角色执行某种或某些动作的过程中触发的,本申请实施例对此不加以限定。在目标操作指令发生的时机为在游戏角色执行某种或某些动作的过程中触发的情况下,触发目标操作指令前执行的某种或某些动作同样在状态机中对应一种或多种状态,此时,目标操作指令可以看作是针对当前状态的状态变更指令。当然,在游戏页面播放第二动画之后,还可以继续获取操作指令,该操作指令可以看作是目标状态的状态变更指令。需要说明的是,状态变更指令可以是针对一个状态的变更指令,也可以是指针对多个状态的变更指令,本申请实施例对此不加以限定。

  以上步骤201至步骤204介绍的为在操作指令用于控制游戏角色执行至少两种动作的情况下执行的动画播放过程。在一种可能实现方式中,游戏过程中产生的操作指令可能仅用于控制游戏角色执行一种动作,在此种情况下,基于至少两个主层状态机,同样可以实现动画播放的过程,此时,仅确定与一个动作对应的一个动画,播放该一个动画即可,无需进行额外的动画处理过程。接下来以举例的方式介绍在操作指令用于控制游戏角色执行一种动作的情况下,动画播放的过程。

  示例性地,动画状态机中可以包括两个主层状态机,分别为标识为“基础层”的主层状态机(简称为“基础层状态机”),和标识为“换弹层”的主层状态机(简称为“换弹层状态机”)。基础层状态机用于管理除换弹动画外的基础动画,换弹层状态机用于专门管理换弹动画。基础层状态机中包括跳跃动作对应的子层状态机(简称为“跳跃子层状态机”)和进入水中的动作对应的子层状态机(简称为“水中子层状态机”)。在此基础下,动画播放的过程可以如图11所示。

  在玩家进入游戏开始游戏后,终端检测是否获取到跳跃指令,当获取到跳跃指令时,可以确定目标主层状态机为基础层状态机,目标子层状态机为基础层状态机中的跳跃子层状态机;进入基础层状态机中的跳跃子层状态机,触发跳跃指令对应的跳跃状态,在游戏页面播放跳跃动画;当跳跃未结束时,可以继续停留在跳跃子层状态机确定需要播放的动画并播放;当跳跃结束时,返回第一默认状态,该第一默认状态是指跳跃动作结束后进入的不播放动画的状态。

  接下来,终端可以检测是否获取到进入水中指令,当获取到进入水中指令时,可以确定目标主层状态机为基础层状态机,目标子层状态机为基础层状态机中的水中子层状态机;进入基础层状态机中的水中子层状态机,触发进入水中指令对应的游泳状态,在游戏页面播放游泳动画;当游戏角色未离开水中时,可以继续停留在水中子层状态机确定需要播放的动画并播放;当检测到游戏角色离开水中时,返回第二默认状态,第二默认状态是指离开水中后进入的不播放动画的状态。需要说明的是,此时返回的第二默认状态可以与第一默认状态相同,也可以不相同,本申请实施例对此不加以限定。

  在返回第二默认状态后,终端还可以检测是否获取到换弹指令,若获取到换弹指令,可以确定目标主层状态机为换弹层状态机,该换弹层状态机仅管理换弹动画,然后可以进入换弹层状态机触发换弹指令对应的换弹状态,在游戏页面播放换弹动画;当换弹未结束时,可以继续停留在换弹层状态机确定需要播放的动画并播放;当换弹结束时,返回第三默认状态,第三默认状态是指换弹结束后进入的不播放动画的状态。需要说明的是,此时返回的第三默认状态可以与第一默认状态或第二默认状态相同,也可以与第一默认状态和第二默认状态均不相同,本申请实施例对此不加以限定。

  本申请实施例设计了一个非常精细化的多层动画状态机,简单来说就是把一些可能与其他动画同时发生的动画专门增加一个主层状态机进行管理,比如,游戏角色某个部位的动画、某个特定功能的动画等。因为利用包括至少两个主层状态机的动画状态机管理游戏角色的动画,不同的主层状态机管理的动画之间不会产生冲突,所以可以减少动画播放异常的问题。除涉及多个主层状态机外,还在主层状态机下增加了子层状态机的设计,利用不同层次的状态机管理动画,逻辑关系简明清晰。此外,增加主层状态机之间的覆盖和叠加设计,有利于提高动画播放的多样性,动画播放的效果较好。

  在本申请实施例中,利用至少两个主层状态机管理动画,不同的主层状态机管理的动画之间相互兼容,在此基础下,根据目标操作指令确定至少两个目标主层状态机,在每个目标主层状态机管理的动画中确定一个第一动画,能够得到至少两个目标主层状态机确定的至少两个相互兼容的第一动画,进而根据至少两个相互兼容的第一动画确定待播放的第二动画并在游戏页面播放第二动画。在此种播放动画的过程中,待播放的动画可以根据多个相互兼容的动画得到,能够避免动画冲突,有利于解决动画播放异常的问题,动画播放的效果较好,有利于提高玩家的游戏体验。

  参见图12,本申请实施例提供了一种动画播放装置,该装置包括:

  获取模块1201,用于获取游戏过程中产生的目标操作指令;

  第一确定模块1202,用于基于目标操作指令,在至少两个主层状态机中确定至少两个目标主层状态机,不同的主层状态机管理的动画之间相互兼容;

  第二确定模块1203,用于针对至少两个目标主层状态机中的任一目标主层状态机,在任一目标主层状态机管理的动画中,确定与目标操作指令匹配的第一动画;

  第三确定模块1204,用于基于至少两个目标主层状态机确定的至少两个第一动画,确定待播放的第二动画;

  播放模块1205,用于在游戏页面播放第二动画。

  在一种可能实现方式中,任一目标主层状态机基于状态和状态对应的动画参数管理动画,第二确定模块1203,用于在任一目标主层状态机包括的状态中,确定与目标操作指令匹配的目标状态;基于目标状态对应的动画参数,确定与目标操作指令匹配的第一动画。

  在一种可能实现方式中,任一目标主层状态机包括至少一个子层状态机,第二确定模块1203,用于在任一目标主层状态机包括的至少一个子层状态机中,确定与目标操作指令匹配的目标子层状态机;在目标子层状态机管理的动画中,确定与目标操作指令匹配的第一动画。

  在一种可能实现方式中,参见图13,该装置还包括:

  构建模块1206,用于基于游戏角色支持的动画以及动画之间的兼容关系,确定至少两个待构建的主层状态机分别管理的动画;基于任一待构建的主层状态机管理的动画以及动画之间的转换关系,构建任一主层状态机。

  在一种可能实现方式中,第三确定模块1204,用于基于至少两个目标主层状态机分别对应的动画处理模式,对至少两个第一动画进行处理,将处理后得到的动画作为待播放的第二动画。

  在一种可能实现方式中,第三确定模块1204,还用于响应于至少两个目标主层状态机中存在动画处理模式为动画覆盖的目标主层状态机,利用满足条件的第一动画覆盖不满足条件的第一动画,将覆盖后得到的动画作为待播放的第二动画,满足条件的第一动画为在动画处理模式为动画覆盖的目标主层状态机管理的动画中确定的第一动画。

  在一种可能实现方式中,播放模块1205,还用于确定满足条件的第一动画的播放时机;响应于满足该满足条件的第一动画的播放时机,在游戏页面播放第二动画。

  在一种可能实现方式中,第三确定模块1204,还用于响应于至少两个目标主层状态机分别对应的动画处理模式均为动画叠加,将至少两个第一动画进行叠加处理,将叠加处理后得到的动画作为待播放的第二动画。

  在一种可能实现方式中,播放模块1205,还用于将叠加处理后得到的动画中的第一个叠加动画作为起始动画;确定起始动画的播放时机;响应于满足起始动画的播放时机,在游戏页面播放第二动画。

  在本申请实施例中,在本申请实施例中,利用至少两个主层状态机管理动画,不同的主层状态机管理的动画之间相互兼容,在此基础下,根据目标操作指令确定至少两个目标主层状态机,在每个目标主层状态机管理的动画中确定一个第一动画,能够得到至少两个目标主层状态机确定的至少两个相互兼容的第一动画,进而根据至少两个相互兼容的第一动画确定待播放的第二动画并在游戏页面播放第二动画。在此种播放动画的过程中,待播放的动画可以根据多个相互兼容的动画得到,能够避免动画冲突,有利于解决动画播放异常的问题,动画播放的效果较好,有利于提高玩家的游戏体验。

  需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

  图14是本申请实施例提供的一种服务器的结构示意图,该服务器可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central Processing Units,CPU)1401和一个或多个存储器1402,其中,该一个或多个存储器1402中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器1401加载并执行,以实现上述各个方法实施例提供的动画播放方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。

  图15是本申请实施例提供的一种终端的结构示意图。该终端可以是:智能手机、平板电脑、笔记本电脑或台式电脑。终端还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。

  通常,终端包括有:处理器1501和存储器1502。

  处理器1501可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1501可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1501也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1501可以集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1501还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。

  存储器1502可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1502还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1502中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1501所执行以实现本申请中方法实施例提供的动画播放方法。

  在一些实施例中,终端还可选包括有:外围设备接口1503和至少一个外围设备。处理器1501、存储器1502和外围设备接口1503之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1503相连。具体地,外围设备包括:射频电路1504、触摸显示屏1505、摄像头组件1506、音频电路1507、定位组件1508和电源1509中的至少一种。

  外围设备接口1503可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1501和存储器1502。在一些实施例中,处理器1501、存储器1502和外围设备接口1503被集成在同一芯片或电路板上;在一些其他实施例中,处理器1501、存储器1502和外围设备接口1503中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。

  射频电路1504用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1504通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1504将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1504包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1504可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1504还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。

  显示屏1505用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1505是触摸显示屏时,显示屏1505还具有采集在显示屏1505的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1501进行处理。此时,显示屏1505还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1505可以为一个,设置在终端的前面板;在另一些实施例中,显示屏1505可以为至少两个,分别设置在终端的不同表面或呈折叠设计;在再一些实施例中,显示屏1505可以是柔性显示屏,设置在终端的弯曲表面上或折叠面上。甚至,显示屏1505还可以设置成非矩形的不规则图形,也即异形屏。显示屏1505可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。

  摄像头组件1506用于采集图像或视频。可选地,摄像头组件1506包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1506还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。

  音频电路1507可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1501进行处理,或者输入至射频电路1504以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1501或射频电路1504的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1507还可以包括耳机插孔。

  定位组件1508用于定位终端的当前地理位置,以实现导航或LBS(Location BasedService,基于位置的服务)。定位组件1508可以是基于美国的GPS(Global PositioningSystem,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。

  电源1509用于为终端中的各个组件进行供电。电源1509可以是交流电、直流电、一次性电池或可充电电池。当电源1509包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。

  在一些实施例中,终端还包括有一个或多个传感器1510。该一个或多个传感器1510包括但不限于:加速度传感器1511、陀螺仪传感器1512、压力传感器1513、指纹传感器1514、光学传感器1515以及接近传感器1516。

  加速度传感器1511可以检测以终端建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1511可以用于检测重力加速度在三个坐标轴上的分量。处理器1501可以根据加速度传感器1511采集的重力加速度信号,控制触摸显示屏1505以横向视图或纵向视图进行用户界面的显示。加速度传感器1511还可以用于游戏或者用户的运动数据的采集。

  陀螺仪传感器1512可以检测终端的机体方向及转动角度,陀螺仪传感器1512可以与加速度传感器1511协同采集用户对终端的3D动作。处理器1501根据陀螺仪传感器1512采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。

  压力传感器1513可以设置在终端的侧边框和/或触摸显示屏1505的下层。当压力传感器1513设置在终端的侧边框时,可以检测用户对终端的握持信号,由处理器1501根据压力传感器1513采集的握持信号进行左右手识别或快捷操作。当压力传感器1513设置在触摸显示屏1505的下层时,由处理器1501根据用户对触摸显示屏1505的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。

  指纹传感器1514用于采集用户的指纹,由处理器1501根据指纹传感器1514采集到的指纹识别用户的身份,或者,由指纹传感器1514根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1501授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1514可以被设置在终端的正面、背面或侧面。当终端上设置有物理按键或厂商Logo时,指纹传感器1514可以与物理按键或厂商Logo集成在一起。

  光学传感器1515用于采集环境光强度。在一个实施例中,处理器1501可以根据光学传感器1515采集的环境光强度,控制触摸显示屏1505的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1505的显示亮度;当环境光强度较低时,调低触摸显示屏1505的显示亮度。在另一个实施例中,处理器1501还可以根据光学传感器1515采集的环境光强度,动态调整摄像头组件1506的拍摄参数。

  接近传感器1516,也称距离传感器,通常设置在终端的前面板。接近传感器1516用于采集用户与终端的正面之间的距离。在一个实施例中,当接近传感器1516检测到用户与终端的正面之间的距离逐渐变小时,由处理器1501控制触摸显示屏1505从亮屏状态切换为息屏状态;当接近传感器1516检测到用户与终端的正面之间的距离逐渐变大时,由处理器1501控制触摸显示屏1505从息屏状态切换为亮屏状态。

  本领域技术人员可以理解,图15中示出的结构并不构成对终端的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。

  在示例性实施例中,还提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条程序代码。该至少一条程序代码由一个或者一个以上处理器加载并执行,以实现上述任一种动画播放方法。

  在示例性实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该至少一条程序代码由计算机设备的处理器加载并执行,以实现上述任一种动画播放方法。

  可选地,上述计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-OnlyMemory,CD-ROM)、磁带、软盘和光数据存储设备等。

  应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。

  以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

《动画播放方法、装置、设备及存储介质.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)