SC2Mapster Forums

Development > Data

Build animation for standard units?

  • 6 posts
    #1 Feb 25, 2013 at 20:44 UTC - 0 likes

    Is it possible to add some kind of animation for a SCV that builds a Siege tank? (As if it placed it as a building on the ground)

    Is it possible to do the same for Drones building a Queen?

    Or a Probe build a Colossus?

    Anyway to make this look good?

    Or shall I just scrap this idea ^^

    #2 Feb 25, 2013 at 21:12 UTC - 1 like

    You can spawn the construction model on them, but the final animation step has to exist in the model, or its absence has to be hidden behind additional effects.

    For Terran you should probably just make the regular unit model rise out of the ground shortly before completion, like how structures do it. In fact I think Terran structures don't have any birth animations at all, just the retracting scaffolding, which is part of the build model you can add to anything. The Thor also has some unique models but I think they're outdated.

    For Protoss you can use the warp-in animations where they exist (all Gateway and Stargate units plus the Immortal, possibly the Collossus is the only exception) or apply the decloaking effect, or just mess with opacity and tint color. Maybe add some lightning or the Warpgate warp-in model to make it look cooler.

    For Zerg the ground units have an Unburrow animation you can use while they "emerge" from the cocoon and the Larva-morphed flyers have a birth animation suited to a grounded egg, things like Broodlords might require playing with their height. You obviously have enough eggs, cocoons and building bubbles to use for the main construction phase.

    #3 Feb 26, 2013 at 18:45 UTC - 0 likes

    Thank you.

    Is it possible to make the completed units NOT be counted as buildings, even though they are built as buildings?

    #4 Feb 26, 2013 at 18:56 UTC - 1 like

    @Kabelkorven: Go to be counted as a building you need to give it the structure flag in the unit data tab, so don't worry about it.

    #5 Feb 26, 2013 at 22:08 UTC - 0 likes

    The movement during building is caused by the mover used by the Buildable ability on the unit being built.

    As long as you can think of the appropriate construction animation/composite you will be fine.

    Last edited Feb 28, 2013 by DrSuperEvil
    #6 Feb 28, 2013 at 21:00 UTC - 0 likes

    I use mover actors to make buildings rise out of the ground, which could just as easily be tweaked for units:

        <CActorSiteMover id="ConstructionMover">
            <Terms value="Cap 1"/>
            <On Terms="ActorCreation" Target="::Creator" Send="RefSetFromMsg ::Host ::Actor"/>
            <On Terms="ActorCreation" Send="MoverSetDestinationH 0.050000"/>
            <On Terms="ActorCreation" Send="SetHeight -2.500000"/>
            <On Terms="ActorCreation" Send="MoverMove"/>
            <On Terms="ProgressLevel.TerranConstructionAttached.Pause" Send="MoverSetAcceleration"/>
            <On Terms="ProgressLevel.TerranConstructionAttached.Resume" Send="MoverSetAcceleration 0.090000"/>
            <On Terms="ProgressLevel.TerranConstructionAttached.Pause" Send="MoverSetSpeedMax 0.000100"/>
            <On Terms="ProgressLevel.TerranConstructionAttached.Resume" Send="MoverSetSpeedMax 0.080000"/>
            <On Terms="UnitConstruction.*.Finish" Send="Destroy"/>
            <On Terms="ActorOrphan" Send="Destroy"/>
            <Acceleration value="0.090000"/>
            <Deceleration value="0.090000"/>
            <Speed value="0.010000"/>
            <SpeedMax value="0.080000"/>
            <Aliases value="_ConstructionMover"/>
            <Flags index="SuppressSaveLoad" value="1"/>
        </CActorSiteMover>

    Tweak the values above to suit the size of your unit. Then add the following events to your unit's actor:

        <CActorUnit default="1" id="TerranBuildingAscending" parent="TerranBuilding">
            <On Terms="UnitConstruction.##unitName##.Start" Send="Create ##unitName##Build"/>
            <On Terms="UnitConstruction.##unitName##.Start" Send="Create ConstructionMover"/>
            <On Terms="UnitConstruction.##unitName##.Start" Send="RefSet ::Host _ConstructionMover"/>
            <On Terms="UnitConstruction.##unitName##.Finish" Send="RefClear ::Host"/>
        </CActorUnit>

    Then copy the BarracksBuild actor and rename it to be your ##unitName##Build, setting the actor size to suit the size of the unit.

  • 6 posts

You must login to post a comment. Don't have an account? Register to get one!