查看: 305|回复: 0

[引擎的各个功能] 动画通知 (通知)

[复制链接]

1

主题

342

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
75866
发表于 2017-4-8 07:06:18 | 显示全部楼层 |阅读模式

动画通知 (通知)



       
     
     
     
       
     
         



动画通知(简称AnimNotifies或通知)使得动画相关的程序员可以设置在动画序列的特定点处发生的事件。通知通常用于这样的特效,比如走动时的脚步声、跑动动画或在动画中产生一个粒子特效。然而,它有很多种不同的用途,因为您可以使用自定义的通知类型来扩展该系统,从而满足任何类型游戏的需求。

创建及编辑通知


通过使用角色编辑器中的通知编辑器
,您可以创建及编辑通知。

通知类型


不同类型的通知会触发不同的事件。相机特效、粒子特效、声效等,都可以在动画过程中的任何特定点进行触发。以下是当前可用的通知。

播放粒子特效


Play Particle Effect(播放粒子特效)通知可以在动画时间轴的特定处在给定的插槽位置上产生及播放粒子特效。该通知对于类似这样的特效是有用的,比如当玩家移动时在玩家脚部呈现大量的灰尘、当玩家使用Nitro-Boost增强型道具时从排气管中喷出火焰、及其他类似特效。


动画通知 (通知)



Play Particle Effect(播放粒子特效)通知没有使用动画蓝图来控制行为。而是使用详细信息面板中定义的几个简单的属性来确定所使用的的粒子系统、及产生粒子的插槽。


动画通知 (通知)



       


       
                PSTemplate
               
               
                该项存放了要在通知的设定点处即时生成的粒子系统。
               
       

       
                Socket Name(插槽名称)
               
               
                该项包含了将用作为粒子系统的产生点的骨架网格物体插槽。
               
       

       
                Notify Color(通知颜色)
               
               
                修改该通知在通知条上的颜色。
               
       



一旦设置,将使用插槽位置作为产生点来播放相关的粒子系统。


动画通知 (通知)


播放声效


Play Sound(播放声效) 通知提供了一种让您的声效和动画同步的简单方法。和 播放粒子特效 通知类似,这个通知在详细信息面板中也有几个可以设置的简单属性, 它对于类似这样的东西是有用的,比如机器人移动时机械之间发出的呼呼声、角色运动时布料的沙沙声等类似特效。


动画通知 (通知)



播放声效通知使用详细信息面板中定义的几个简单的属性来确定所使用的声效、及发出该声效的插槽或骨骼。


动画通知 (通知)



       


       
                Volume Multiplier(音量乘数)
               
               
                这是声效音量的缩放因数。
               
       

       
                Pitch Multiplier(音高乘数)
               
               
                这是声效音高的缩放因数。
               
       

       
                Follow(跟随)
               
               
                如果选中该项,该声效源将会跟随静态网格物体移动。如果未选中该项,那么声效仍然会在后面,即在它的产生位置处。
               
       

       
                Attach Name(附加名称)
               
               
                这包含了将用作声效产生点的骨架网格物体插槽或骨骼。
               
       

       
                Notify Color(通知颜色)
               
               
                修改该通知在通知条上的颜色。
               
       


自定义


Custom(自定义) 通知适合于美工人员想在动画的某个特定点处在 动画蓝图 中完成的任何内容。通过右击一个通知轨迹并从关联菜单中选择 新建通知 ,您便可以创建自定义通知。


动画通知 (通知)



您一执行完这个操作,就会要求您提供这个新通知的名称。


动画通知 (通知)



输入名称后,您将看到新的通知出现在时间轴上。


动画通知 (通知)



自定义通知在详细信息面板中没有任何要编辑的属性。然而,它们允许您在 事件图表 或该骨架网格物体的动画蓝图的状态机内的 Transitions(变换) 中创建通知事件。


动画通知 (通知)



在事件图表中的任何地方 右击 ,会有一个用于添加动画通知事件的部分。


动画通知 (通知)



动画通知 (通知)


动画通知状态 (AnimNotifyState)


AnimNotifyStates (通知状态) 和上面的单一性通知类似,不过它们有三个不同的事件: 开始事件,更新及结束事件。开始事件和结束事件非常容易理解,当动画中的时间点到了时,触发这是事件中的事件图表。更新事件会触发每次动画更新,直到遇到结束事件为止。它和单一性触发通知的主要区别是 AnimNotifyStates 是自包含的 蓝图 。


要想使用 AnimNotifyState :


通过创建一个继承
  1. AnimNotifyState
复制代码
的新蓝图,可以在内容浏览器中创建一个新的 AnimNotifyState 资源。


动画通知 (通知)



动画通知 (通知)



在 动画序列 或 动画蒙太奇 上,您可以右击通知区域并添加您的新  AnimNoitfyState 。


动画通知 (通知)



您可以通过右击 AnimNotifyState 并选择 Set AnimNotifyState Duration(设置动画通知状态持续时间) 来设置它的长度。


动画通知 (通知)



动画通知 (通知)



最后,从 内容浏览器 中,双击您的 AnimNotifyState 来调出它的蓝图,以便您可以开始定义它所执行的动作。


       
动画通知 (通知)
动画通知 (通知)





现在,您可以开始实现  AnimNotifyState 的三个函数了。虽然不是必须实现每个函数,但您至少应该实现
  1. Recieved_NotifyTick
复制代码
函数,或实现
  1. Recieved_NotifyStart
复制代码
  1. Recieved_NotifyEnd
复制代码
这两个函数。如果仅实现了
  1. Recieved_NotifyStart
复制代码
  1. Recieved_NotifyEnd
复制代码
,那么您可以简单地使用一个标准的动画通知。


动画通知 (通知)



动画通知 (通知)



动画通知 (通知)



       


       
                Mesh Comp(网格物体组件)
               
               
                这是骨架动画序列或蒙太奇的网格物体组件,用于触发这个AnimNotifyState。
               
       

       
                Anim Seq(动画序列)
               
               
                这是触发该AnimNotifyState的特定动画序列。
               
       

       
                Frame Delta Time(帧间隔时间)
               
               
                仅在Received Notify Tick函数中有这个引脚,这为您提供了自从上一次动画更新后过去的时间。
               
       



       
目前还没有办法在蓝图中获得 AnimNotifyState 的长度。


规则


您必须确保以NotifyBegin 事件开始。


您必须确保以NotifyEnd 事件结束。


您必须确保NotifyTick连接在NotifyBegin和NotifyEnd事件之间。


不能确保不同动画通知(正常通知或状态通知)之间的顺序! 如果您把两个AnimNotifyStates彼此相邻放置,并不能确保第一个通知在第二个通知开始之前结束。这仅用于不需依赖其他通知的单独动作。


支持负播放速率。不管怎样,NotifyBegin仍然称为第一个事件,NotifyEnd称为最后一个事件。

顺序和逻辑


当触发 AnimNotifyState 时,首先会调用 Start 蓝图,然后在同一帧更新上调用 Tick 蓝图。在后续的每次
  1. tick(更新)
复制代码
中,将仅会调用  Tick 蓝图。在最后一次
  1. tick(更新)
复制代码
上,将会调用完 End 蓝图之后调用 Tick 蓝图。


实际上,如果您正在每帧修改一些东西,那么应该在 Tick 蓝图中进行处理。如果您需要在触发
  1. ticks(更新)
复制代码
之前设置变量、标志或属性的值,那么您应该在 Start 蓝图中处理。最后,在最后一次
  1. ticks(更新)
复制代码
触发之后,可以使用 End 蓝图来修改变量、标志或属性。






                                       
                                       
完整内容索引
                                       
                               
                       
                       
            

            
            

     2004-2017, Epic Games, Inc. 版权所有。Unreal 及相关的商标是 Epic 在美国和其他国家的注册商标。


    使用条款 | 隐私政策

            
        
               
       
   
回复

使用道具 举报

*滑块验证:
您需要登录后才可以回帖 登录 | enginedx注册

本版积分规则

 
 



邮件留言:


 
返回顶部