예제 #1
0
        public override void LoadAnimations()
        {
            base.LoadAnimations();

            Texture2D spriteSheet = AssetManager.Instance.LoadRawTexture2D($"{ContentGlobals.SpriteRoot}/Enemies/Paratroopa.png");

            AnimManager.SetSpriteSheet(spriteSheet);

            //The Paratroopa uses the same in shell animation as a Koopa Troopa for Shell Shot, but rotates itself differently
            AnimManager.AddAnimation(AnimationGlobals.ParatroopaBattleAnimations.ShellShotName, new Animation(spriteSheet,
                                                                                                              new Animation.Frame(new Rectangle(2, 222, 28, 25), 1000d)));

            LoopAnimation wingedIdle = new LoopAnimation(spriteSheet, AnimationGlobals.InfiniteLoop,
                                                         new Animation.Frame(new Rectangle(56, 4, 32, 48), 100d),
                                                         new Animation.Frame(new Rectangle(56, 4, 32, 48), 100d, new Vector2(0, -1)),
                                                         new Animation.Frame(new Rectangle(56, 4, 32, 48), 100d, new Vector2(0, -2)),
                                                         new Animation.Frame(new Rectangle(56, 4, 32, 48), 100d, new Vector2(0, -1)));

            //This animation uses the same rectangle for every frame. However, the wings are different on those frames and the
            //Paratroopa has varying heights on each frame
            AnimManager.AddAnimation(AnimationGlobals.WingedBattleAnimations.WingedIdleName, wingedIdle);
            wingedIdle.SetChildFrames(
                new Animation.Frame(new Rectangle(72, 156, 19, 27), 100d, new Vector2(19, -13)),
                new Animation.Frame(new Rectangle(104, 220, 23, 23), 100d, new Vector2(21, -8)),
                new Animation.Frame(new Rectangle(40, 219, 18, 28), 100d, new Vector2(19, 8)),
                new Animation.Frame(new Rectangle(248, 190, 21, 23), 100d, new Vector2(20, 1)));

            //NOTE: Incomplete wing frames; the wings on the left of the Paratroopa will require more work to get in due to the way the wings are stored

            //Same story with this one
            LoopAnimation flyingName = new LoopAnimation(spriteSheet, AnimationGlobals.InfiniteLoop,
                                                         new Animation.Frame(new Rectangle(103, 4, 33, 51), 80d),
                                                         new Animation.Frame(new Rectangle(103, 4, 33, 51), 80d, new Vector2(0, -1)),
                                                         new Animation.Frame(new Rectangle(103, 4, 33, 51), 80d, new Vector2(0, -2)),
                                                         new Animation.Frame(new Rectangle(103, 4, 33, 51), 80d, new Vector2(0, -1)));

            AnimManager.AddAnimation(AnimationGlobals.WingedBattleAnimations.FlyingName, flyingName);
            flyingName.SetChildFrames(
                new Animation.Frame(new Rectangle(72, 156, 19, 27), 80d, new Vector2(26, -4)),
                new Animation.Frame(new Rectangle(104, 220, 23, 23), 80d, new Vector2(26, 4)),
                new Animation.Frame(new Rectangle(40, 219, 18, 28), 80d, new Vector2(26, 16)),
                new Animation.Frame(new Rectangle(248, 190, 21, 23), 80d, new Vector2(26, 13)));

            Animation hurtName = new Animation(spriteSheet,
                                               new Animation.Frame(new Rectangle(5, 59, 39, 44), 250d),
                                               new Animation.Frame(new Rectangle(200, 3, 36, 43), 250d));

            AnimManager.AddAnimation(AnimationGlobals.HurtName, hurtName);
            //NOTE: Not accurate - in PM, it looks like the wings are rotated slightly to match the Paratroopa's pose in its hurt animation
            hurtName.SetChildFrames(
                new Animation.Frame(new Rectangle(66, 190, 45, 26), 250d, new Vector2(3, -6), -.01f),
                new Animation.Frame(new Rectangle(66, 190, 45, 26), 250d, new Vector2(3, -6), -.01f));
        }
예제 #2
0
        public override void LoadAnimations()
        {
            Texture2D spriteSheet = AssetManager.Instance.LoadRawTexture2D($"{ContentGlobals.SpriteRoot}/Enemies/SkyGuy.png");

            AnimManager.SetSpriteSheet(spriteSheet);

            LoopAnimation idle = new LoopAnimation(null, AnimationGlobals.InfiniteLoop,
                                                   new Animation.Frame(new Rectangle(117, 256, 34, 35), 200d),
                                                   new Animation.Frame(new Rectangle(163, 263, 38, 37), 200d));

            AnimManager.AddAnimation(AnimationGlobals.IdleName, idle);
            idle.SetChildFrames(
                new Animation.Frame(new Rectangle(13, 259, 2, 31), 200d, new Vector2(0, 18), -.0001f),
                new Animation.Frame(new Rectangle(13, 259, 2, 31), 200d, new Vector2(0, 19), -.0001f));
        }
예제 #3
0
        public override void LoadAnimations()
        {
            base.LoadAnimations();

            Texture2D spriteSheet = AssetManager.Instance.LoadRawTexture2D($"{ContentGlobals.SpriteRoot}/Enemies/Paragoomba.png");

            AnimManager.SetSpriteSheet(spriteSheet);

            LoopAnimation wingedIdle = new LoopAnimation(spriteSheet, AnimationGlobals.InfiniteLoop,
                                                         new Animation.Frame(new Rectangle(129, 45, 27, 28), 200d),
                                                         new Animation.Frame(new Rectangle(1, 7, 27, 30), 200d, new Vector2(0, 1)));
            LoopAnimation flyingName = new LoopAnimation(spriteSheet, AnimationGlobals.InfiniteLoop,
                                                         new Animation.Frame(new Rectangle(129, 45, 27, 28), 100d),
                                                         new Animation.Frame(new Rectangle(1, 7, 27, 30), 100d));
            Animation hurtName = new Animation(spriteSheet,
                                               new Animation.Frame(new Rectangle(97, 48, 29, 27), 80d),
                                               new Animation.Frame(new Rectangle(98, 89, 27, 26), 80d));
            Animation deathName    = new Animation(spriteSheet, new Animation.Frame(new Rectangle(98, 89, 27, 26), 300d));
            Animation diveKickName = new Animation(spriteSheet, new Animation.Frame(new Rectangle(33, 89, 27, 30), 1000d));

            AnimManager.AddAnimation(AnimationGlobals.WingedBattleAnimations.WingedIdleName, wingedIdle);
            AnimManager.AddAnimation(AnimationGlobals.WingedBattleAnimations.FlyingName, flyingName);
            AnimManager.AddAnimation(AnimationGlobals.HurtName, hurtName);
            AnimManager.AddAnimation(AnimationGlobals.DeathName, deathName);
            AnimManager.AddAnimation(AnimationGlobals.ParagoombaBattleAnimations.DiveKickName, diveKickName);

            //Wings are offset from the Paragoomba's body
            //Both Wings for each frame are in a single cropped texture
            //The wings are rendered underneath the Paragoomba's body

            wingedIdle.SetChildFrames(
                new Animation.Frame(new Rectangle(3, 166, 41, 18), 200d, new Vector2(0, -6), -.01f),
                new Animation.Frame(new Rectangle(50, 161, 41, 14), 200d, new Vector2(0, 6), -.01f));
            flyingName.SetChildFrames(
                new Animation.Frame(new Rectangle(3, 166, 41, 18), 100d, new Vector2(0, -6), -.01f),
                new Animation.Frame(new Rectangle(50, 161, 41, 14), 100d, new Vector2(0, 6), -.01f));
            hurtName.SetChildFrames(
                new Animation.Frame(new Rectangle(3, 166, 41, 18), 80d, new Vector2(3, -5), -.01f),
                new Animation.Frame(new Rectangle(3, 166, 41, 18), 80d, new Vector2(3, -5), -.01f));
            deathName.SetChildFrames(new Animation.Frame(new Rectangle(3, 166, 41, 18), 100d, new Vector2(3, -5), -.01f));

            diveKickName.SetChildFrames(new Animation.Frame(new Rectangle(120, 121, 31, 21), 1000d, new Vector2(1, -13), -.01f));
        }