|
先发地图...
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 即为修改模型颜色
- 行为AAA触发0.5秒之后执行时间片Step1。
- <On Terms="Behavior.AAA.On" Send="TimerSet 0.5 Step1"/>
- 行时间片Step1之后1秒,执行时间片Step2。依次类推,到时间片Step5结束。
- <On Terms="TimerExpired; TimerName Step1" Send="TimerSet 1 Step2"/>
- <On Terms="TimerExpired; TimerName Step2" Send="TimerSet 1 Step3"/>
- <On Terms="TimerExpired; TimerName Step3" Send="TimerSet 1 Step4"/>
- <On Terms="TimerExpired; TimerName Step4" Send="TimerSet 1 Step5"/>
- 行时间片Step1时,修正模型颜色为{128,192,0 10.000000}
- <On Terms="TimerExpired; TimerName Step1" Send="SetTintColor {128,192,0 10.000000}"/>
- <On Terms="TimerExpired; TimerName Step2" Send="SetTintColor {128,0,100 10.000000}"/>
- <On Terms="TimerExpired; TimerName Step3" Send="SetTintColor {0,192,100 10.000000}"/>
- <On Terms="TimerExpired; TimerName Step4" Send="SetTintColor {128,0,100 10.000000}"/>
- <On Terms="TimerExpired; TimerName Step5" Send="SetTintColor {128,192,0 10.000000}"/>
复制代码
2)模型的大小变化
Send="SetScale 1" SetScale为修正模型比例。
- 行为AAA触发后,修正模型大小为100%
- <On Terms="Behavior.AAA.On" Send="SetScale 1"/>
- 行为AAA触发0.25秒后执行时间片AAA
- <On Terms="Behavior.AAA.On" Send="TimerSet 0.25 AAA"/>
- 时间片AAA执行时,使模型在4.75秒内逐渐从100%大小变至300%大小
- <On Terms="TimerExpired; TimerName AAA" Send="SetScale 3 4.75"/>
复制代码
3)模型透明度
Send="SetOpacity 0.1" SetOpacity 为修正模型透明度。
- 行为AAA触发后,修正模型透明度为10%
- <On Terms="Behavior.AAA.On" Send="SetOpacity 0.1"/>
- 行为AAA触发0.25秒后执行时间片BBB
- <On Terms="Behavior.AAA.On" Send="TimerSet 0.25 BBB"/>
- 时间片AAA执行时,使模型在4.75秒内透明度逐渐从10%变至45%大小
- <On Terms="TimerExpired; TimerName AAA" Send="SetOpacity 0.45 4.75"/>
复制代码
4)模型的旋转
Send="SetFacing 45.000000" SetFacing 为修正模型面向角度。
-
- 行为AAA触发0.1秒之后执行时间片FaceStepStart。
- <OnTerms="Behavior.AAA.On"Send="TimerSet 0.100000 FaceStepStart"/>
- 行时间片FaceStepStart之后0.01秒,执行时间片FaceStep1。依次类推,做称循环体。
- <OnTerms="TimerExpired;TimerName FaceStepStart" Send="TimerSet 0.010000 FaceStep1"/>
- <OnTerms="TimerExpired;TimerName FaceStep1" Send="TimerSet 0.010000 FaceStep2"/>
- <OnTerms="TimerExpired;TimerName FaceStep2" Send="TimerSet 0.010000 FaceStep3"/>
- <OnTerms="TimerExpired;TimerName FaceStep3" Send="TimerSet 0.010000 FaceStep4"/>
- <OnTerms="TimerExpired;TimerName FaceStep4" Send="TimerSet 0.010000 FaceStep5"/>
- <OnTerms="TimerExpired;TimerName FaceStep5" Send="TimerSet 0.010000 FaceStep6"/>
- <OnTerms="TimerExpired;TimerName FaceStep6" Send="TimerSet 0.010000 FaceStep7"/>
- <OnTerms="TimerExpired;TimerName FaceStep7" Send="TimerSet 0.010000 FaceStep8"/>
- <OnTerms="TimerExpired;TimerName FaceStep8" Send="TimerSet 0.010000 FaceStep1"/>
- 行时间片FaceStepStart以及FaceStep1~8执行后,修正模型面向的角度从45度~360度。
- <OnTerms="TimerExpired;TimerName FaceStepStart" Send="SetFacing 0.000010"/>
- <OnTerms="TimerExpired;TimerName FaceStep1" Send="SetFacing 45.000000"/>
- <OnTerms="TimerExpired;TimerName FaceStep2" Send="SetFacing 90.000000"/>
- <OnTerms="TimerExpired;TimerName FaceStep3" Send="SetFacing 135.000000"/>
- <OnTerms="TimerExpired;TimerName FaceStep4" Send="SetFacing 180.000000"/>
- <OnTerms="TimerExpired;TimerName FaceStep5" Send="SetFacing 225.000000"/>
- <OnTerms="TimerExpired;TimerName FaceStep6" Send="SetFacing 270.000000"/>
- <OnTerms="TimerExpired;TimerName FaceStep7" Send="SetFacing 315.000000"/>
- <OnTerms="TimerExpired;TimerName FaceStep8" Send="SetFacing 360.000000"/>
复制代码 |
评分
-
查看全部评分
|