找回密码
 点一下
查看: 6488|回复: 17

【数据教程】啦啦啦~Actor教程相关~(终于写完了....)

[复制链接]
发表于 2010-6-25 01:27:46 | 显示全部楼层 |阅读模式
先发地图... SMSJ.rar (1.3 MB, 下载次数: 142)

使用航母下面的单位进行测试吧~技能是最右下角的那个~

【地图中的Actor实例相关】
模型的旋转
=最右下角技能所召唤出来的单位,不停地转啊转的~

模型的大小变化
=边转边变大~猪长老,请您收了神通吧~

模型透明度
=在旋转中实际有细微的变化~注意看哦~

模型的颜色变化
=被伤害到的单位,会挂一个逐渐变色的小球~

模型的基础绑定位置
=这个之后系统介绍







下面开始介绍一些模型控制器Actor相关的知识吧~
首先,对于数据部分来说最难、最复杂的数据类非模型控制器Actor莫属了~
我这边也并没有完全吃透它,因此没办法给大家从底层做系统分析给大家讲解,只能从一个个应用来看了。






【相关的知识点】
1)Actor的定位
Actor的翻译我这边一直叫它“模型控制器”,但这个词也不是很准确的。只是...实在很难找出一个更确切、更直观的翻译了。
但可以肯定的是,它的主要作用便是控制模型的生成、消亡、播放、颜色、位置、高度、角度等等一系列属性。
另外,它所能控制的不仅仅是模型资源,还可以控制声音资源以及贴图资源等一些列属性。





2)Actor中类与类之间的继承关系
*CActor
*-CActorBase
  +-CActorBearings
  | +-CActorModel
  | | +-CActorBeam
  | | | +-CActorBeamSimple
  | | | +-CActorBeamStandard
  | | | 
  | | +-CActorDoodad
  | | +-CActorEditorCamera
  | | +-CActorEditorPoint
  | | +-CActorPortrait
  | | +-CActorShield
  | | +-CActorSnapshot
  | | +-CActorUnit
  | |   +-CActorMissile
  | | 
  | +-CActorRange
  | +-CActorRegion
  | | +-CActorRegionCircle
  | | +-CActorRegionCombine
  | | | +-CActorRegionPolygon
  | | | 
  | | +-ActorRegionPolygon
  | | +-CActorRegionWater
  | | 
  | +-CActorSite
  | | +-CActorSiteRocker
  | |
  | +-CActorSound
  | +-CActorSplat
  | | +-CActorSelection
  | | +-CActorShadow
  | | 
  | +-CActorFoliageFXSpawner
  | +-CActorPhysics
  | +-CActorSquib
  | +-CActorTerrainDeformer
  | +-CActorText
  | +-CActorTurret
  |  
  +-CActorSiteOp
  +-CActorEventMacro
  +-CActorStateMonitor
  +-CActorGlobalConfig
  | +-CActorSiteOpBase
  |   +-CActorSiteOp2DRotation
  |   | +-CActorSiteOpAction
  |   | 
  |   +-CActorSiteOpAttach
  |   +-CActorSiteOpAttachVolume
  |   +-CActorSiteOpAttachVolume
  |   +-CActorSiteOpBasic
  |   +-CActorSiteOpEffect
  |   +-CActorSiteOpForward
  |   +-CActorSiteOpHeight
  |   +-CActorSiteOpHostBearings
  |   +-CActorSiteOpLocalOffset
  |   +-CActorSiteOpPatch
  |   +-CActorSiteOpRandomPointInCircle
  |   +-CActorSiteOpRotationExplicit
  |   +-CActorSiteOpRotationVariancer
  |   +-CActorSiteOpRotationSmooth
  |   +-CActorSiteOpShadow
  |   +-CActorSiteOpUp
  | 
  +-CActorAction
  +-CActorLookAt
  | +-CActorList
  | 
  +-CActorPower
  +-CActorProgress
  +-CCActorQueryResponse
  +-CActorSetQueried
  +-CActorShieldImpact
 +-CActorSimple






3)常见类的说明
**事件打包类**CActorEventMacro
主要用来打包事件条件+事件所触发的模型控制消息。有些像效果Effect中的EffectSet类。

**模型类**CActorModel
最常用的类。通过事件条件控制模型的动作、产生、销毁、位置、角度、颜色等一系列属性。下面很多类都是这个类的子类。

**单位类**CActorUnit
CActorModel的子类之一。用来定以单位相关的模型属性,其中包括单位的生成时的模型动作,模型的移动方式移动,还有技能相关的动作等。

**动作类**CActorAction
重要类。常用来定义在某种效果产生时的模型属性。如机枪兵的普工效果产生时,对方单位有出血的效果。

**能量立场类**CActorPower
通常和CActorSplat类关联使用,用来体现能量立场。

**地形变化类**CActorTerrainDeformer
用来改变地形模型的类。

**范围光圈显示类**CActorRange
用来显示视野范围、技能施法范围的类。

**护盾效果类**CActorShieldImpact
用来体现一些护盾的效果。可用基础

**音效控制类**CActorSound
控制声音的播放,可指定播放时机,是否循环,声音大小等属性。这里需要说明的是,声效的基础属性在Sound.xml中定义,这里只是负责播放。

**鼠标样式类**CActorSplat
来控制贴图的属性。如:闪电风暴的范围样式,神族水晶的能量立场等。

**状态验证**CActorStateMonitor
比较有意思的类,是否能活用将能产生很大的作用和影响。
它可以通过判断验证器Validator中条件是否有效,来触发CActorSetQueried类中定义的CActorModel类的中的模型动作。

**标准射线**CActorBeamSimple
用来实现射线相关的设定。如哨兵的攻击射线。

**杂物**CActorDoodad
用来定义杂物类型的模型的属性。

**选择效果**CActorSelection
是CActorSplat类的子类之一。可能是用来定义单位被选择时的模型状态,还不能确定。

**阴影效果**CActorShadow
是CActorSplat类的子类之一。用来定义模型的影子。

**添附点位置**CActorSiteOpAttach
并非直接被使用的类。它仅仅用来定义模型在另一个模型的哪个位置来播放。如,头上方、1号武器、左手、身体中央等。
使用的地方大多为CActorModel中的HostSiteOps属性总做Link。

**爆炸**CActorSquib
通常用来定义爆炸效果。如核弹的爆炸。






4)模型的播放机制
模型播放什么动作、是出生还是销毁、大小如何、颜色如何、消亡、播放的时间如何、位置如何都是由下面这种结构中的Send所发出的命令来控制的。而Term中定义的则是发出这样命令的时间条件。
<On Terms="A" Send="Create"/>

以上的语句可以简单的理解为:当Terms中定义的事件A生效时,像模型发送Create的命令。

常见的事件条件有以下几种:
---------------
ActorCreation => 当动作建立时
---------------
TimerExpired; TimerName ##Custom name## => TimerName 所指定的计时器过期时
---------------
Abil.##abil##.TargetOn => 技能指向目标时
Abil.##abil##.TargetOff => 技能失去目标时

Abil.##abil##.Start => 技能释放开始时
Abil.##abil##.Stop => 技能释放结束时

Abil.##abil##.SourceCastStart => 自身技能释放开始时
Abil.##abil##.SourceCastStop => 自身技能释放结束时
Abil.##abil##.SourceChannelStart => 自身技能通道开始时
Abil.##abil##.SourceChannelStop => 自身技能通道结束时

Abil.##abil##.TargetCastStart => 目标技能释放开始时
Abil.##abil##.TargetCastStop => 目标技能释放结束时
Abil.##abil##.TargetChannelStart => 目标技能通道开始时
Abil.##abil##.TargetChannelStop => 目标技能通道结束时

Abil.attack.ReadyStart =>
Abil.attack.ReadyStop =>

WeaponStart.*.AttackStart =>
WeaponStop.*.AttackStop =>

Abil.##abil##.CargoLoad => 装载时
Abil.##abil##.CargoUnload => 卸载时

Abil.##abil##.Cursor => 技能光标出现时
---------------
Behavior.##behavior##.On => 行为生效时
Behavior.##behavior##.Off => 行为无效时
Behavior.##behavior##.Delay => 行为延迟时
Behavior.##behavior##.Cancel => 行为取消时
---------------
Effect.##id##.Start; At Caster => 效果开始在施法者时
Effect.##id##.Stop; At Target => 效果开始在目标单位时
Effect.##id##.Start; At Source => 效果开始在原有单位时
---------------
UnitBirth.##id## => 单位出生时
UnitRevive.##id## => 单位复活时
UnitConstruction.##id##.Start => 单位建造开始时
UnitConstruction.*.Cancel => 单位建造取消时
UnitConstruction.##id##.Finish => 单位建造结束时
---------------
AbilMorph.*.Start; MorphTo ##unitName## => 变形到xx单位开始时
AbilMorph.*.Finish; MorphFrom ##unitName## => 从xx单位变形结束时
AbilMorph.*.Start; MorphFrom ##unitName## => 从xx单位变形开始时
AbilMorph.*.Cancel; MorphFrom ##unitName##; MorphTo ##unitName## => 从xx单位到xx单位变形取消时
---------------
StateChange; StateValid AAA=> 验证条件ValidatorAAA成立时
StateChange; !StateValid AAA=> 验证条件ValidatorAAA不成立时

<StateArray Name="AAA" Terms="ValidateUnit ValidatorAAA"/>
---------------







【模型的设置技巧实例讲解】
1)模型颜色变化
Send="SetTintColor {255,255,255 0.000000}" SetTintColor 即为修改模型颜色
  1. 行为AAA触发0.5秒之后执行时间片Step1。
  2. <On Terms="Behavior.AAA.On" Send="TimerSet 0.5 Step1"/>
  3. 行时间片Step1之后1秒,执行时间片Step2。依次类推,到时间片Step5结束。
  4. <On Terms="TimerExpired; TimerName Step1" Send="TimerSet 1 Step2"/>
  5. <On Terms="TimerExpired; TimerName Step2" Send="TimerSet 1 Step3"/>
  6. <On Terms="TimerExpired; TimerName Step3" Send="TimerSet 1 Step4"/>
  7. <On Terms="TimerExpired; TimerName Step4" Send="TimerSet 1 Step5"/>
  8. 行时间片Step1时,修正模型颜色为{128,192,0 10.000000}
  9. <On Terms="TimerExpired; TimerName Step1" Send="SetTintColor {128,192,0 10.000000}"/>  
  10. <On Terms="TimerExpired; TimerName Step2" Send="SetTintColor {128,0,100 10.000000}"/>  
  11. <On Terms="TimerExpired; TimerName Step3" Send="SetTintColor {0,192,100 10.000000}"/>  
  12. <On Terms="TimerExpired; TimerName Step4" Send="SetTintColor {128,0,100 10.000000}"/>  
  13. <On Terms="TimerExpired; TimerName Step5" Send="SetTintColor {128,192,0 10.000000}"/>   
复制代码

2)模型的大小变化
Send="SetScale 1" SetScale为修正模型比例。
  1. 行为AAA触发后,修正模型大小为100%
  2. <On Terms="Behavior.AAA.On" Send="SetScale 1"/>      
  3. 行为AAA触发0.25秒后执行时间片AAA
  4. <On Terms="Behavior.AAA.On" Send="TimerSet 0.25 AAA"/>
  5. 时间片AAA执行时,使模型在4.75秒内逐渐从100%大小变至300%大小
  6. <On Terms="TimerExpired; TimerName AAA" Send="SetScale 3 4.75"/>
复制代码

3)模型透明度
Send="SetOpacity 0.1" SetOpacity 为修正模型透明度。
  1. 行为AAA触发后,修正模型透明度为10%
  2. <On Terms="Behavior.AAA.On" Send="SetOpacity 0.1"/>
  3. 行为AAA触发0.25秒后执行时间片BBB
  4. <On Terms="Behavior.AAA.On" Send="TimerSet 0.25 BBB"/>
  5. 时间片AAA执行时,使模型在4.75秒内透明度逐渐从10%变至45%大小
  6. <On Terms="TimerExpired; TimerName AAA" Send="SetOpacity 0.45 4.75"/>
复制代码

4)模型的旋转
Send="SetFacing 45.000000" SetFacing 为修正模型面向角度。
  1. 行为AAA触发0.1秒之后执行时间片FaceStepStart。
  2. <OnTerms="Behavior.AAA.On"Send="TimerSet 0.100000 FaceStepStart"/>
  3. 行时间片FaceStepStart之后0.01秒,执行时间片FaceStep1。依次类推,做称循环体。
  4. <OnTerms="TimerExpired;TimerName FaceStepStart" Send="TimerSet 0.010000 FaceStep1"/>
  5. <OnTerms="TimerExpired;TimerName FaceStep1" Send="TimerSet 0.010000 FaceStep2"/>
  6. <OnTerms="TimerExpired;TimerName FaceStep2" Send="TimerSet 0.010000 FaceStep3"/>
  7. <OnTerms="TimerExpired;TimerName FaceStep3" Send="TimerSet 0.010000 FaceStep4"/>
  8. <OnTerms="TimerExpired;TimerName FaceStep4" Send="TimerSet 0.010000 FaceStep5"/>
  9. <OnTerms="TimerExpired;TimerName FaceStep5" Send="TimerSet 0.010000 FaceStep6"/>
  10. <OnTerms="TimerExpired;TimerName FaceStep6" Send="TimerSet 0.010000 FaceStep7"/>
  11. <OnTerms="TimerExpired;TimerName FaceStep7" Send="TimerSet 0.010000 FaceStep8"/>
  12. <OnTerms="TimerExpired;TimerName FaceStep8" Send="TimerSet 0.010000 FaceStep1"/>
  13. 行时间片FaceStepStart以及FaceStep1~8执行后,修正模型面向的角度从45度~360度。
  14. <OnTerms="TimerExpired;TimerName FaceStepStart" Send="SetFacing 0.000010"/>
  15. <OnTerms="TimerExpired;TimerName FaceStep1" Send="SetFacing 45.000000"/>
  16. <OnTerms="TimerExpired;TimerName FaceStep2" Send="SetFacing 90.000000"/>
  17. <OnTerms="TimerExpired;TimerName FaceStep3" Send="SetFacing 135.000000"/>
  18. <OnTerms="TimerExpired;TimerName FaceStep4" Send="SetFacing 180.000000"/>
  19. <OnTerms="TimerExpired;TimerName FaceStep5" Send="SetFacing 225.000000"/>
  20. <OnTerms="TimerExpired;TimerName FaceStep6" Send="SetFacing 270.000000"/>
  21. <OnTerms="TimerExpired;TimerName FaceStep7" Send="SetFacing 315.000000"/>
  22. <OnTerms="TimerExpired;TimerName FaceStep8" Send="SetFacing 360.000000"/>
复制代码

评分

参与人数 1威望 +3 收起 理由
这是马甲吗? + 3 嗯嗯。

查看全部评分

发表于 2010-6-25 01:34:39 | 显示全部楼层
沙发先占了,然后睡觉了。。
回复

使用道具 举报

发表于 2010-6-25 02:15:59 | 显示全部楼层
讨厌, 竟然骗人
回复

使用道具 举报

 楼主| 发表于 2010-6-25 08:33:36 | 显示全部楼层

回 2楼(alexries) 的帖子

- -# 俺今天补上嘛
回复

使用道具 举报

 楼主| 发表于 2010-6-26 00:10:01 | 显示全部楼层
写的累死了~还米写清楚~郁闷啊
回复

使用道具 举报

发表于 2010-6-26 00:21:28 | 显示全部楼层
这有从早上上班到半夜还累吗?
回复

使用道具 举报

发表于 2010-6-26 00:32:04 | 显示全部楼层
人民好公仆
回复

使用道具 举报

 楼主| 发表于 2010-6-26 00:33:00 | 显示全部楼层

回 5楼(这是马甲吗?) 帖子

要知道俺这几天都到1、2点很困的说...写教程鸭梨好大~
早上8点开始在公司一天,晚上回来还要努力sc2~快"啦啦啦"不起来了

话说...今天的葡萄大战西瓜的球赛真无聊~
回复

使用道具 举报

发表于 2010-6-26 00:33:47 | 显示全部楼层
没事……作为一个巨大的杯具,多大的鸭梨都装得下。

收藏了收藏了 慢慢拜读
回复

使用道具 举报

 楼主| 发表于 2010-6-26 00:36:32 | 显示全部楼层

回 8楼(alexries) 的帖子

睡觉去~嗯嗯~
明天好好闲了去把杯具好好洗洗,说不定就成洗具啦~
回复

使用道具 举报

发表于 2010-6-26 11:40:44 | 显示全部楼层
楼主还有周末。真好。
继续工作。
回复

使用道具 举报

 楼主| 发表于 2010-6-26 11:52:13 | 显示全部楼层
好吧~对LS给予同情ing~
回复

使用道具 举报

发表于 2010-6-26 20:39:46 | 显示全部楼层
MARK!!!
LZ V5
回复

使用道具 举报

 楼主| 发表于 2010-6-26 23:12:26 | 显示全部楼层
之后还会写一些,不过东西不多了,细节的/系统的 我也在研究中,大家一起的说~
回复

使用道具 举报

发表于 2010-6-28 10:11:24 | 显示全部楼层
好教程,看了这些比自己摸不着头脑的一个个试验好多了
回复

使用道具 举报

 楼主| 发表于 2010-6-28 10:43:56 | 显示全部楼层
大家一起摸索实际上挺快出结果的。
另,关于模型的附加点也有些突破,多亏了群里朋友的帮忙~之后会提出关于附加点的相关教程~嗯嗯
回复

使用道具 举报

发表于 2010-8-27 20:05:22 | 显示全部楼层
这个图我怎么打不开?
回复

使用道具 举报

发表于 2010-10-9 22:06:30 | 显示全部楼层
为什么我设定的模型旋转不起作用?
最新版,将行星粉碎者的光束改成了MothershipBeam
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 22:45 , Processed in 0.169524 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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