本帖最后由 列虚子 于 2026-8-30 07:36 编辑
关于圣典8-8章节已经讲述了连续射击的内容,但是这样的攻击是呈现点状的,就算你加上AOE可以实现击倒多个敌人,它在视觉上也不够壮观。因此这里是教你如何呈现“霰弹枪”的效果。 如图所示。这是我制作的霰弹枪民兵,它在打卡之后可以发射霰弹,我们直接观察它的<AnimFlie>文件就会发现,我也是利用圣典8-8模拟了多行射击、音效、烟雾。
<anim> Volley_standing_attack <assetreference type="GrannyAnim"> <file>animation_library\range\volley\volley_standing_fire</file> <tag type="Attack">0.45</tag> <tag type="Attack">0.44</tag> <tag type="Attack">0.43</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.42</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.43</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.44</tag> <tag type="Attack">0.43</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.42</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.45</tag> <tag type="Attack">0.43</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="MusketShot">0.45</tag> <tag type="Particles" particlename="MusketShot">0.45</tag> <tag type="Particles" particlename="MusketShot">0.44</tag> <tag type="Particles" particlename="MusketShot">0.43</tag> <tag type="Particles" particlename="MusketShot">0.45</tag> <tag type="Particles" particlename="MusketShot">0.41</tag> <tag type="Particles" particlename="MusketShot">0.42</tag> <tag type="Particles" particlename="MusketShot">0.40</tag> <tag type="Particles" particlename="MusketShot">0.44</tag> <tag type="Particles" particlename="MusketShot">0.45</tag> <tag type="Particles" particlename="MusketShot">0.38</tag> <tag type="Particles" particlename="MusketShot">0.45</tag> <tag type="Particles" particlename="MusketShot">0.44</tag> <tag type="Particles" particlename="MusketShot">0.43</tag> <tag type="Particles" particlename="MusketShot">0.45</tag> <tag type="Particles" particlename="MusketShot">0.41</tag> <tag type="Particles" particlename="MusketShot">0.42</tag> <tag type="Particles" particlename="MusketShot">0.40</tag> <tag type="Particles" particlename="MusketShot">0.44</tag> <tag type="Particles" particlename="MusketShot">0.45</tag> <tag type="Particles" particlename="MusketShot">0.38</tag> </assetreference> <component>ModelComp</component> </anim>
所以答案显而易见,其实还是连续攻击,只是间歇比较低,看上去就是同时发射了一堆弹丸。 而这么密集的攻击伤害太过于超标,所以一定需要在Tactics限制他的命中率 <action> <name stringid="38127">VolleyRangedAttack</name> <type>Attack</type> <attackaction>1</attackaction> <rangedlogic>1</rangedlogic> <anim>Volley_standing_attack</anim> <reloadanim>Volley_standing_reload</reloadanim> <idleanim>Volley_standing_idle</idleanim> <maxheight>0</maxheight> <accuracy>0.7</accuracy> <accuracyreductionfactor>0.5</accuracyreductionfactor>;参见圣典7-2命中率 <aimbonus>0</aimbonus> <maxspread>180</maxspread> <spreadfactor>5.25</spreadfactor> <trackrating>12</trackrating> <unintentionaldamagemultiplier>1.0</unintentionaldamagemultiplier> <projectile>InvisibleProjectile</projectile> <impacteffect>effects\impacts\gun</impacteffect> <minrange>2</minrange> <rate type="Unit">1.0</rate> <throw>1</throw> <damage>13.000000</damage> <maxrange>12.000000</maxrange> <rof>2.000000</rof> <areasortmode>Directional</areasortmode> <basedamagecap>-1</basedamagecap> <numberbounces>1</numberbounces> </action>
以及Protoy中也要做一定的伤害削减 <ProtoAction> <Name>DefendRangedAttack</Name> <Damage>2.000000</Damage> <DamageType>Ranged</DamageType> <accuracy>0.5</accuracy> <accuracyreductionfactor>0.5</accuracyreductionfactor> <instantballistics>0</instantballistics> <MinRange>1.000000</MinRange> <MaxRange>12.000000</MaxRange> <ROF>3.000000</ROF> <DamageBonus type ='AbstractPet'>2.000000</DamageBonus> <DamageBonus type ='AbstractHeavyInfantry'>2.000000</DamageBonus> <DamageBonus type ='AbstractLightCavalry'>2.000000</DamageBonus> <DamageBonus type ='xpEagleKnight'>2.000000</DamageBonus> <DamageBonus type ='AbstractCavalry'>0.750000</DamageBonus> <DamageBonus type ='xpCoyoteMan'>0.750000</DamageBonus> <DamageBonus type ='Guardian'>2.000000</DamageBonus> </ProtoAction> ———————— 而喷火塔的实现则更加简单,首先在建筑物的<AnimFlie>上新增 <anim> Bombard_ranged_attack;这是一会儿要在Tactics里使用的战术名称 <assetreference type="GrannyAnim"> <file>animation_library\building\ranged_attack</file> <tag type="Attack">0.45</tag> <tag type="SpecificSoundSet" checkvisible="1" set="FlameThrower">1.00</tag> <!-- 在攻击时间点0.45,同时触发三套完全独立的粒子 --> <tag type="Particles" particlename="flamethrower">0.45</tag> <tag type="Particles" particlename="flamethrower1">0.45</tag> <tag type="Particles" particlename="flamethrower2">0.45</tag> </assetreference> <component>SPC_Fort_Tower</component> <simskeleton> <model>buildings\spc\fort\spc_fort_tower_damaged</model> <damagetemplate>buildings\spc\fort\spc_fort_tower.dmg</damagetemplate> </simskeleton>
<!--炮口 bone_s1 --> <attach a="smokey" frombone="bone_s1" tobone="bone_s1" syncanims="0"/> <attach a="flamethrower" frombone="bone_s1" tobone="bone_s1" syncanims="0"/>
<!--炮口 bone_s2 --> <attach a="smokey1" frombone="bone_s2" tobone="bone_s2" syncanims="0"/> <attach a="flamethrower1" frombone="bone_s2" tobone="bone_s2" syncanims="0"/>
<!--炮口 bone_s3 --> <attach a="smokey2" frombone="bone_s3" tobone="bone_s3" syncanims="0"/> <attach a="flamethrower2" frombone="bone_s3" tobone="bone_s3" syncanims="0"/>
</anim> 这样写的目的很简单,就是模拟一个喷火动画,让它看起来美观,我加入了浓烟来掩盖发射物本身的单薄。 甚至往四面八方喷火都可以,看你写几根枪管。 然后在战术文件里加上 <action> <name stringid="99512">FlameAttack</name>;战术名称 <reloadanim>Bombard_reload</reloadanim>;战术动画名称 <type>Attack</type> <maxrange>9</maxrange> <attackaction>1</attackaction> ;<handlogic>1</handlogic> <rangedlogic>1</rangedlogic> <anim>Bombard_ranged_attack</anim> <idleanim>Bombard_ranged_idle</idleanim> <boredanim>Bombard_bored</boredanim> <maxheight>1</maxheight>
<active>0</active>
<accuracy>1.0</accuracy> <aimbonus>0</aimbonus> <maxspread>5</maxspread> <spreadfactor>0.25</spreadfactor> <trackrating>999</trackrating> <unintentionaldamagemultiplier>1.0</unintentionaldamagemultiplier> <impacteffect>effects\impacts\torch</impacteffect> <rate type="All">1.0</rate> <perfectaccuracy>1</perfectaccuracy> <projectile>Hoop</projectile>;因为我是制作的马耳他喷火塔,所以发射物是火环 </action>
然后利用科技启用这个战术就行 <Effect type ='Data' action ='FlameAttack' amount ='1.00' subtype ='ActionEnable' relativity ='Absolute'> <Target type ='ProtoUnit'>shaota</Target></Effect> <Effect type ='Data' amount ='0.00' subtype ='UpdateVisual' unittype ='shaota' relativity ='Absolute'> <Target type ='Player'></Target></Effect>你也可以设置为直接开启,不需要科技启用
然后单位信息是 <ProtoAction> <Name>FlameAttack</Name> <Damage>5.000000</Damage> <DamageType>Siege</DamageType> <MinRange>0.000000</MinRange> <MaxRange>14.000000</MaxRange> <ROF>0.500000</ROF> <DamageCap>20.000000</DamageCap> <DamageArea>3.000000</DamageArea> <DamageBonus type ='AbstractInfantry'>6.000000</DamageBonus> <DamageArea>1.000000</DamageArea> <DamageFlags>GAIAEnemy</DamageFlags> <DamageBonus type ='Ship'>6.000000</DamageBonus> <DamageBonus type ='AbstractArtillery'>3.000000</DamageBonus> <DamageBonus type ='AbstractLightInfantry'>0.600000</DamageBonus> <DamageBonus type ='AbstractCavalry'>3.000000</DamageBonus> </ProtoAction>———————— 这个方法同时也可以用在人类和船只身上,比如船只是: <anim> Bombard_ranged_attack <assetreference type="GrannyAnim"> <file>units\asians\naval\war_junk\war_junk_idle</file> <tag type="Attack">0.70</tag> <tag type="SpecificSoundSet" set="FlameThrower" checkvisible="1">0.00</tag> <tag type="Particles" particlename="flamethrower">0.10</tag> <tag type="Particles" particlename="flamethrower">0.20</tag> <tag type="Particles" particlename="flamethrower">0.30</tag> <tag type="Particles" particlename="flamethrower">0.40</tag> <tag type="Particles" particlename="flamethrower">0.50</tag> <tag type="Particles" particlename="flamethrower">0.60</tag> <tag type="Particles" particlename="flamethrower">0.70</tag> <tag type="Particles" particlename="flamethrower">0.80</tag> <tag type="Particles" particlename="flamethrower">0.90</tag> <tag type="Particles" particlename="flamethrower">1.00</tag> </assetreference> <component>ModelComp</component> <simskeleton> <model>units\asians\naval\war_junk\war_junk_damge</model> <damagetemplate>units\asians\naval\war_junk\war_junk_damge_0.dmg</damagetemplate> </simskeleton> <attach a="Pirate_flag_top" frombone="ATTACHPOINT" tobone="bone_f_top_02" syncanims="0"/> <attach a="Pirata_flag_mid" frombone="ATTACHPOINT" tobone="bone_f_mid_01" syncanims="0"/> <attach a="Pirata_flag_mid" frombone="ATTACHPOINT" tobone="bone_f_mid_02" syncanims="0"/> <attach a="Pirata_flag_mid" frombone="ATTACHPOINT" tobone="bone_f_mid_03" syncanims="0"/> <attach a="Pirata_flag_mid" frombone="ATTACHPOINT" tobone="bone_f_mid_04" syncanims="0"/> <attach a="Pirate_flag_back" frombone="ATTACHPOINT" tobone="bone_f_rear_left" syncanims="0"/> <attach a="Pirate_flag_back" frombone="ATTACHPOINT" tobone="bone_f_rear_right" syncanims="0"/> </anim>以及Tactics
<action> <name stringid="70308">FlameAttack</name> <reloadanim>Bombard_reload</reloadanim> <type>Attack</type> <maxrange>9</maxrange> <attackaction>1</attackaction> <handlogic>1</handlogic> <anim>Bombard_ranged_attack</anim> <idleanim>Bombard_ranged_idle</idleanim> <boredanim>Bombard_bored</boredanim> <maxheight>1</maxheight> <accuracy>1.0</accuracy> <aimbonus>0</aimbonus> <maxspread>5</maxspread> <spreadfactor>0.25</spreadfactor> <trackrating>12</trackrating> <unintentionaldamagemultiplier>1.0</unintentionaldamagemultiplier> <impacteffect>effects\impacts\torch</impacteffect> <rate type="All">1.0</rate> <perfectaccuracy>1</perfectaccuracy> </action> 如果你要模拟火焰,记住火焰的攻击频率一定要高,这样它的声效和动画过度看起来才自然,相应的攻击力就应该低一些。 P.S.一定要记住,无论哪种攻击在Tactics中都要在最后战术Action上,不然你写再多也白搭。 <action priority="100">AntiShipAttack</action> <action priority="75">FlameAttack</action> <action priority="50">CannonAttack</action> <action priority="25">RangedAttack</action>
|