找回密码
 点一下
查看: 3926|回复: 6

【数据教程】Actor相关演示视频以及地图

[复制链接]
发表于 2010-6-27 22:28:11 | 显示全部楼层 |阅读模式
地图中选择主基地旁边的那个Zealot来演示的。
地图下载:   SMSJ.rar (1.3 MB, 下载次数: 71)

视频链接:http://v.ku6.com/show/dBeOcYa2nsjXkiLQ.html



技能1)颜色渐变;模型动作:攻击
这个技能所导致的模型动作以及颜色的变化是由行为ChangeColor来触发的。
行为ChangeColor是一个CBehaviorBuff,用CAbilBehavior来控制这个行为的开关。

当行为ChangeColor开启On时(Behavior.ChangeColor.On)
1)发送模型动画播放Message:AnimPlay Cast Attack,02 PlayForever。意为:播放动画;自定义名称为Cast;播放动画为:2号攻击命令;持续播放。
2)发送计时器设置Message:TimerSet 0.100000 Enlarge1。意为:设置计时器;0.1秒后触发名为Enlarge1的计时器。
3)发送颜色设置Message:SetTintColor {0,255,0 10.000000}。意为:设置颜色;蓝色,亮度10。

当行为ChangeColor关闭Off时(Behavior.ChangeColor.Off)
1)发送模型动画清除Message:AnimClear Cast。意为:清除名为Cast的模型。
2)发送颜色设置Message:SetTintColor。意为:设置为默认色(黑色)。
3)发送计时器删除Message:TimerKill Enlarge1~5。意为:删除名为Enlarge1~5的计时器。

当计时器被触发时(TimerExpired; TimerName Enlarge1)
1)发送计时器设置Message:TimerSet 0.5 Enlarge2。意为:0.5秒触发名为Enlarge2的计时器。
2)发送颜色设置Message:SetTintColor {128,192,0 10.000000}。意为:设置颜色;128,192,0,亮度10。

当计时器被触发时(TimerExpired; TimerName Enlarge2~5)
设置颜色,且同时设置之后的计时器。在计时器的最后一个(即为5号计时器Enlarge5)时,触发计时器1号,形成循环。
  1.         <On Terms="Behavior.ChangeColor.On" Send="AnimPlay Cast Attack,02 PlayForever"/>        
  2.         <On Terms="Behavior.ChangeColor.Off" Send="AnimClear Cast"/>
  3.         <On Terms="Behavior.ChangeColor.On" Send="TimerSet 0.100000 Enlarge1"/>
  4.         <On Terms="Behavior.ChangeColor.On" Send="SetTintColor {0,255,0 10.000000}"/>
  5.         <On Terms="Behavior.ChangeColor.Off" Send="SetTintColor"/>
  6.         <On Terms="Behavior.ChangeColor.Off" Send="TimerKill Enlarge1"/>
  7.         <On Terms="Behavior.ChangeColor.Off" Send="TimerKill Enlarge2"/>
  8.         <On Terms="Behavior.ChangeColor.Off" Send="TimerKill Enlarge3"/>
  9.         <On Terms="Behavior.ChangeColor.Off" Send="TimerKill Enlarge4"/>
  10.         <On Terms="Behavior.ChangeColor.Off" Send="TimerKill Enlarge5"/>         
  11.         <On Terms="TimerExpired; TimerName Enlarge1" Send="SetTintColor {128,192,0 10.000000}"/>  
  12.         <On Terms="TimerExpired; TimerName Enlarge2" Send="SetTintColor {4,32,187 10.000000}"/>  
  13.         <On Terms="TimerExpired; TimerName Enlarge3" Send="SetTintColor {192,192,100 10.000000}"/>  
  14.         <On Terms="TimerExpired; TimerName Enlarge4" Send="SetTintColor {182,35,150 10.000000}"/>
  15.         <On Terms="TimerExpired; TimerName Enlarge5" Send="SetTintColor {141,50,130 10.000000}"/>           
  16.         <On Terms="TimerExpired; TimerName Enlarge1" Send="TimerSet 0.5 Enlarge2"/>
  17.         <On Terms="TimerExpired; TimerName Enlarge2" Send="TimerSet 0.5 Enlarge3"/>
  18.         <On Terms="TimerExpired; TimerName Enlarge3" Send="TimerSet 0.5 Enlarge4"/>
  19.         <On Terms="TimerExpired; TimerName Enlarge4" Send="TimerSet 0.5 Enlarge5"/>
  20.         <On Terms="TimerExpired; TimerName Enlarge5" Send="TimerSet 0.5 Enlarge1"/>
复制代码



技能2)体形变大;模型动作:胜利
这个技能所导致的模型动作以及形状的变化是由行为ChangeScale来触发的。
行为ChangeScale是一个CBehaviorBuff,用CAbilBehavior来控制这个行为的开关。

当行为ChangeScale开启On时(Behavior.ChangeScale.On)
1)发送模型动画播放Message:AnimPlay Cast Stand,Victory,03 PlayForever。
   意为:播放动画;自定义名称为Cast;播放动画为:3号胜利;持续播放。
2)发送计时器设置Message:TimerSet 0.25 ChangeScaleAAA。意为:设置计时器;0.25秒后触发名为ChangeScaleAAA的计时器。

当行为ChangeColor关闭Off时(Behavior.ChangeScale.Off)
1)发送模型动画清除Message:AnimClear Cast。意为:清除名为Cast的模型。
2)发送计时器设置Message:TimerSet 0.25 ChangeScaleBBB。意为:设置计时器;0.25秒后触发名为ChangeScaleBBB的计时器。

当计时器被触发时(TimerExpired; TimerName ChangeScaleAAA)
1)发送模型体积变化Message:SetScale 3 4.75。意为:模型在4.75秒内从原有大小变化到3倍大小。

当计时器被触发时(TimerExpired; TimerName ChangeScaleBBB)
1)发送模型体积变化Message:SetScale 1 4.75。意为:模型在4.75秒内从原有大小变化到1倍大小。
  1.         <On Terms="Behavior.ChangeScale.On" Send="AnimPlay Cast Stand,Victory,03 PlayForever"/>        
  2.         <On Terms="Behavior.ChangeScale.Off" Send="AnimClear Cast"/>
  3.         <On Terms="Behavior.ChangeScale.On" Send="TimerSet 0.25 ChangeScaleAAA"/>
  4.         <On Terms="TimerExpired; TimerName ChangeScaleAAA" Send="SetScale 3 4.75"/>        
  5.         <On Terms="Behavior.ChangeScale.Off" Send="TimerSet 0.25 ChangeScaleBBB"/>
  6.         <On Terms="TimerExpired; TimerName ChangeScaleBBB" Send="SetScale 1 4.75"/>   
复制代码



技能3)透明度渐变;模型动作:跑步
这个技能所导致的模型动作以及形状的变化是由行为ChangeOpacity来触发的。
行为ChangeOpacity是一个CBehaviorBuff,用CAbilBehavior来控制这个行为的开关。

当行为ChangeOpacity开启On时(Behavior.ChangeOpacity.On)
1)发送模型动画播放Message:AnimPlay Cast Walk,Spell PlayForever。
   意为:播放动画;自定义名称为Cast;播放动画为:跑步;持续播放。
2)发送计时器设置Message:TimerSet 0.25 ChangeOpacityAAA。意为:设置计时器;0.25秒后触发名为ChangeOpacityAAA的计时器。

当行为ChangeColor关闭Off时(Behavior.ChangeOpacity.Off)
1)发送模型动画清除Message:AnimClear Cast。意为:清除名为Cast的模型。
2)发送计时器设置Message:TimerSet 0.25 ChangeOpacityBBB。意为:设置计时器;0.25秒后触发名为ChangeOpacityBBB的计时器。

当计时器被触发时(TimerExpired; TimerName ChangeOpacityAAA)
1)发送模型体积变化Message:SetOpacity 0.01 4.75。意为:模型在4.75秒内从原有透明度变化到透明度10%。

当计时器被触发时(TimerExpired; TimerName ChangeOpacityBBB)
1)发送模型体积变化Message:SetOpacity 1 2。意为:模型在2秒内从原有大小变化到100%透明度。
  1.          <On Terms="Behavior.ChangeOpacity.On" Send="AnimPlay Cast Walk,Spell PlayForever"/>        
  2.         <On Terms="Behavior.ChangeOpacity.Off" Send="AnimClear Cast"/>
  3.         <On Terms="Behavior.ChangeOpacity.On" Send="TimerSet 0.25 ChangeOpacityAAA"/>
  4.         <On Terms="TimerExpired; TimerName ChangeOpacityAAA" Send="SetOpacity 0.01 4.75"/>         
  5.         <On Terms="Behavior.ChangeOpacity.Off" Send="TimerSet 0.01 ChangeOpacityBBB"/>
  6.         <On Terms="TimerExpired; TimerName ChangeOpacityBBB" Send="SetOpacity 1 2"/>  
复制代码



技能4)高亮选择;模型动作跳舞1
这个技能所导致的模型动作以及形状的变化是由行为ChangeHalo来触发的。
行为ChangeHalo是一个CBehaviorBuff,用CAbilBehavior来控制这个行为的开关。

当行为ChangeHalo开启On时(Behavior.ChangeHalo.On)
1)发送模型动画播放Message:AnimPlay Cast Stand,Dance,02 PlayForever。
   意为:播放动画;自定义名称为Cast;播放动画为:2号跳舞;持续播放。
2)发送模型高亮开始(决战模式?)Message:HaloStart。意为:开始边缘高亮状态。

当行为ChangeHalo关闭Off时(Behavior.ChangeHalo.Off)
1)发送模型动画清除Message:AnimClear Cast。意为:清除名为Cast的模型。
2)发送模型高亮结束(决战模式?)Message:HaloStop。意为:结束边缘高亮状态。
  1.     <On Terms="Behavior.ChangeHalo.On" Send="AnimPlay Cast Stand,Dance,02 PlayForever"/>        
  2.         <On Terms="Behavior.ChangeHalo.Off" Send="AnimClear Cast"/>
  3.         <On Terms="Behavior.ChangeHalo.On" Send="HaloStart"/>
  4.         <On Terms="Behavior.ChangeHalo.Off" Send="HaloStop"/>   
复制代码



技能5)闪烁;模型动作跳舞2
这个技能所导致的模型动作以及形状的变化是由行为ChangeGlow来触发的。
行为ChangeGlow是一个CBehaviorBuff,用CAbilBehavior来控制这个行为的开关。

当行为ChangeGlow开启On时(Behavior.ChangeGlow.On)
1)发送模型动画播放Message:AnimPlay Cast Stand,Dance,01 PlayForever。
   意为:播放动画;自定义名称为Cast;播放动画为:1号跳舞;持续播放。
2)发送模型闪烁开始(灼热模式?)Message:GlowStart。意为:开始闪烁状态。

当行为ChangeGlow关闭Off时(Behavior.ChangeGlow.Off)
1)发送模型动画清除Message:AnimClear Cast。意为:清除名为Cast的模型。
2)发送模型闪烁结束(灼热模式?)Message:GlowStop。意为:结束闪烁状态。
  1.     <On Terms="Behavior.ChangeGlow.On" Send="AnimPlay Cast Stand,Dance,01 PlayForever"/>        
  2.         <On Terms="Behavior.ChangeGlow.Off" Send="AnimClear Cast"/>
  3.         <On Terms="Behavior.ChangeGlow.On" Send="GlowStart"/>
  4.         <On Terms="Behavior.ChangeGlow.Off" Send="GlowStop"/>   
复制代码



技能6)旋转
太长了~这里省略。
颜色渐变一个道理,用Timer做成循环,不断变化模型的面对方向(用SetFacing Message来做)。



技能7)附加模型偏移
用笨办法实现的,只是为了给大家演示什么叫做附加模型的位置以及它的偏移。

这里我先做了一系列的行为Behavior。一共16个,没结束当前的行为后,则Call它的后者,如此做成循环。
  1.   
  2.      <CBehaviorBuff id="FieryDragon_Mark16">
  3.             <Duration value="0.25"/>
  4.             <ExpireEffect value="FieryDragon_Mark1"/>
  5.     </CBehaviorBuff>
  6.     <CBehaviorBuff id="FieryDragon_Mark1">
  7.             <Duration value="0.25"/>
  8.             <ExpireEffect value="FieryDragon_Mark2"/>
  9.     </CBehaviorBuff>
  10.     <CBehaviorBuff id="FieryDragon_Mark2">
  11.             <Duration value="0.25"/>
  12.             <ExpireEffect value="FieryDragon_Mark3"/>
  13.     </CBehaviorBuff>
  14.      ......
  15.     <CBehaviorBuff id="FieryDragon_Mark15">
  16.             <Duration value="0.25"/>
  17.             <ExpireEffect value="FieryDragon_Mark16"/>
  18.     </CBehaviorBuff>  
复制代码

其次,对于这里每一个行为都定义好它的Actor。这里使用的Model是,"Assets\Effects\Protoss\ArchonMerge\ArchonMerge.m3"。
  1.   <CActorModel id="FieryDragon_Mark1" parent="FieryDragon_Mark">
  2.         <On Terms="Behavior.FieryDragon_Mark1.On" Send="Create"/>
  3.         <On Terms="Behavior.FieryDragon_Mark1.Off" Send="Destroy"/>        
  4.         <HostSiteOps Ops="SOpAttachCenter FieryDragon_Offset1"/>   
  5.     </CActorModel>
复制代码

在行为FieryDragon_Mark1开启时,创建模型ArchonMerge.m3。在行为失效时,则摧毁模型。
而这个模型所绑定的位置为"SOpAttachCenter FieryDragon_Offset1"。意为:在母模型的中心位置绑定,同时偏移出FieryDragon_Offset1一个相对坐标。

FieryDragon_Offset1的定义为
  1.   <CActorSiteOpLocalOffset id="FieryDragon_Offset1">
  2.         <LocalOffset value="0,0.7,0"/>
  3.     </CActorSiteOpLocalOffset>
复制代码
意为:从中心坐标偏移为:X=0,Y=0.7,Z=0。X为左,Y为后,Z为高度。

对FieryDragon_Mark1~16的行为都有定义一套偏移坐标,因此效果为:在单位的周边形成一个闪烁的圆圈。



技能8)模型拉伸
这里省略。实现方法是用Timer做成循环,并且利用SetScale来改变模型[长、宽、高]比例。
模型拉伸实际也是用SetScale来做的,但SetScale的参数实际上是分[长、宽、高]的,因此每次改变模型[长、宽、高]不同则可以实现拉伸效果。

 楼主| 发表于 2010-6-28 11:10:16 | 显示全部楼层
补充完毕~嗯嗯~
回复

使用道具 举报

发表于 2013-2-18 23:12:56 | 显示全部楼层
mark
回复

使用道具 举报

发表于 2013-2-18 23:22:08 | 显示全部楼层
mark!顺便问下干学Actor看得懂不?~~
回复

使用道具 举报

发表于 2013-2-18 23:49:51 | 显示全部楼层
事实上刚想写这个东西的,当然有些东西不太一样,我那个主要是面向应用的,已经做了一个素材放演示区了。不过今天发现大神已经发上来这个东西了,虽然主要面向原理,和我写的并不相同,但是写的比我写的那个要好多了,搞的我都不好意思班门弄斧了。
虽然这篇教程中提到的技术每个单独拿出来似乎并没怎么漂亮,但是这些是制作动画的基础,合理的组合就能创造出非常漂亮的特效。真的非常有用的一片教程,推荐给各位正在为无法制作出漂亮动画而苦恼的站友们。
回复

使用道具 举报

 楼主| 发表于 2013-2-19 13:40:57 | 显示全部楼层
好早的帖子了...现在很多很多好玩的效果都有技巧性的实现的说~

点评

前几天想写一篇如何合理应用一些简单事件制作过渡动画的帖子来着,为了说明白这些,必须要先介绍下这几种方法,但是写来写去也写不好,现在有这篇文章,干脆不写原理了,给个链接过来,然后直接写应用算了,不过不知  详情 回复 发表于 2013-2-19 18:09
回复

使用道具 举报

发表于 2013-2-19 18:09:57 | 显示全部楼层
chilled 发表于 2013-2-19 13:40
好早的帖子了...现在很多很多好玩的效果都有技巧性的实现的说~

前几天想写一篇如何合理应用一些简单事件制作过渡动画的帖子来着,为了说明白这些,必须要先介绍下这几种方法,但是写来写去也写不好,现在有这篇文章,干脆不写原理了,给个链接过来,然后直接写应用算了,不过不知道什么时候才能完工,小彬是比较没耐心,往往拖很久的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-9-29 05:56 , Processed in 0.357084 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表