Beispiel #1
0
        public void CreateBubbles(Vector2 centerPos)
        {
            float size;
            int   qty = 1 + this.random.Next(4);

            for (int i = 0; i < qty; i++)
            {
                size = 10 + (float)this.random.NextDouble() * 16;
                Vector2 pos = centerPos + (Vector2.One * ((this.random.NextDouble() + 6) * size * (this.random.NextDouble() > 0.5 ? -1 : 1)));

                GameObject bubble = new GameObject(new Vector2(size, size), "Bubble", pos);
                bubble.Animator.AddTexture("BUBBLE", gameHUD.BUBBLE_TEXTURE_ID);
                bubble.AddOnClickListener(() => {
                    if (!SceneManager.IsMute)
                    {
                        bubbleAudio.Play();
                    }

                    SceneManager.Player.BubblesScore++;
                    bubble.Destroy();
                });

                AnimationClip animationClip = new AnimationClip(AnimationClip.ClipTypes.ONCE);
                animationClip.AddClipPoint((int)Math.Round(750 * (pos.Y / 100)), "BUBBLE", new Vector2(Transform.DISABLE_AXIS_MOVIMENT, 0));
                animationClip.AddClipPoint(1000, "", null, bubble.Destroy);
                bubble.Animator.AddAnimationClip("CLIP", animationClip);

                bubble.Animator.PlayAnimationClip("CLIP");
                SceneManager.AddObject(bubble);
            }
        }
Beispiel #2
0
        private static void Explode(GameObject bomb)
        {
            GameObject explosion = new GameObject(Vector2.One * bomb.Transform.Size.X * 2.5, "Explosion", bomb.Transform.Position - bomb.Transform.Size);

            explosion.Animator.AddTexture("EXPLOSION", EXPLOSION_TEXTURES_IDS[random.Next(EXPLOSION_TEXTURES_IDS.Length)], 14, 600, Texture.Orientations.BOTH, 4);
            explosion.Animator.CurrentTexture = "EXPLOSION";

            AnimationClip animationClip = new AnimationClip(AnimationClip.ClipTypes.ONCE);

            animationClip.AddClipPoint(600);
            animationClip.AddClipPoint(1000, "", null, explosion.Destroy);
            explosion.Animator.AddAnimationClip("AUTO_DESTROY", animationClip);
            explosion.Animator.PlayAnimationClip("AUTO_DESTROY");
            SceneManager.AddObject(explosion);
            if (!SceneManager.IsMute)
            {
                explosionSound.Play();
            }
        }
Beispiel #3
0
        private static AnimationClip GetTorpedoAnimationClip(int animationIdx, GameObject bomb)
        {
            AnimationClip animationClip = new AnimationClip(AnimationClip.ClipTypes.LOOP);

            switch (animationIdx)
            {
            case 0:
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(405, Transform.DISABLE_AXIS_MOVIMENT, 400, 0), () => {
                    bomb.Transform.Scale.X = 1;
                });
                animationClip.AddClipPoint(2000);
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(bomb.Transform.Size.X * -2, Transform.DISABLE_AXIS_MOVIMENT), () => {
                    bomb.Transform.Scale.X = -1;
                });
                animationClip.AddClipPoint(2000);
                break;

            case 1:
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(405, bomb.Transform.Position.Y + 250, 400, 0), () => {
                    bomb.Transform.Scale.X  = 1;
                    bomb.Transform.Rotation = -30;
                });
                animationClip.AddClipPoint(2000);
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(bomb.Transform.Size.X * -2, bomb.Transform.Position.Y), () => {
                    bomb.Transform.Scale.X  = -1;
                    bomb.Transform.Rotation = -30;
                });
                animationClip.AddClipPoint(2000);
                break;

            default:
                if (bomb.Transform.Position.Y < 250)
                {
                    return(GetTorpedoAnimationClip(1, bomb));
                }
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(405, bomb.Transform.Position.Y - 250, 400, 0), () => {
                    bomb.Transform.Scale.X  = 1;
                    bomb.Transform.Rotation = 30;
                });
                animationClip.AddClipPoint(2000);
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(bomb.Transform.Size.X * -2, bomb.Transform.Position.Y), () => {
                    bomb.Transform.Scale.X  = -1;
                    bomb.Transform.Rotation = 30;
                });
                animationClip.AddClipPoint(2000);
                break;
            }
            return(animationClip);
        }
Beispiel #4
0
        private static AnimationClip GetAnimationClip(int animationIdx, GameObject bomb)
        {
            AnimationClip animationClip = new AnimationClip(AnimationClip.ClipTypes.LOOP);

            switch (animationIdx)
            {
            case 0:
                animationClip.AddClipPoint(6000, "BOMB", new Vector2(400 - bomb.Transform.Size.X, Transform.DISABLE_AXIS_MOVIMENT, 400, 0, bomb.Transform.Size.X, 0));
                animationClip.AddClipPoint(6000, "BOMB", new Vector2(0, Transform.DISABLE_AXIS_MOVIMENT));
                break;

            case 1:
                animationClip.AddClipPoint(6000, "BOMB", new Vector2(0, bomb.Transform.Position.Y + 200, 400, 0, bomb.Transform.Size.X, 0), () => {
                    bomb.Transform.Position.X = SceneManager.ScreenSize.X - bomb.Transform.Size.X;
                });
                animationClip.AddClipPoint(3000, "BOMB", new Vector2(150, bomb.Transform.Position.Y, 400, 0, bomb.Transform.Size.X, 0));
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(400 - bomb.Transform.Size.X, Transform.DISABLE_AXIS_MOVIMENT, 400, 0, bomb.Transform.Size.X, 0));
                break;

            case 2:
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(200 - bomb.Transform.Size.X / 2f, bomb.Transform.Position.Y + 200, 400, 0, bomb.Transform.Size.X, 0));
                animationClip.AddClipPoint(3000);
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(400 - bomb.Transform.Size.X, bomb.Transform.Position.Y, 400, 0, bomb.Transform.Size.X, 0));
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(200 - bomb.Transform.Size.X / 2f, bomb.Transform.Position.Y - 200, 400, 0, bomb.Transform.Size.X, 0));
                animationClip.AddClipPoint(3000);
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(0, bomb.Transform.Position.Y, 400, 0, bomb.Transform.Size.X, 0));
                break;

            default:
                animationClip.AddClipPoint(6000, "BOMB", new Vector2(400 - bomb.Transform.Size.X, bomb.Transform.Position.Y + 250, 400, 0, bomb.Transform.Size.X, 0));
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(0, bomb.Transform.Position.Y + 250, 400, 0, bomb.Transform.Size.X, 0));
                animationClip.AddClipPoint(6000, "BOMB", new Vector2(400 - bomb.Transform.Size.X, bomb.Transform.Position.Y, 400, 0, bomb.Transform.Size.X, 0));
                animationClip.AddClipPoint(4000, "BOMB", new Vector2(0, bomb.Transform.Position.Y, 400, 0, bomb.Transform.Size.X, 0));
                break;
            }
            return(animationClip);
        }
Beispiel #5
0
        private static AnimationClip GetAnimationClip(int animationIdx, GameObject fish)
        {
            AnimationClip animationClip = new AnimationClip(AnimationClip.ClipTypes.LOOP);

            switch (animationIdx)
            {
            case 0:
                animationClip.AddClipPoint(2000, "FISH3_SWIM_RIGHT", new Vector2(400 - fish.Transform.Size.X, Transform.DISABLE_AXIS_MOVIMENT, 400, 0, fish.Transform.Size.X, 0));
                animationClip.AddClipPoint(2000, "FISH3_REST_RIGHT");
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(0, Transform.DISABLE_AXIS_MOVIMENT));
                animationClip.AddClipPoint(2000, "FISH3_REST_LEFT");
                break;

            case 1:
                animationClip.AddClipPoint(100, "FISH3_SWIM_RIGHT", new Vector2(0, fish.Transform.Position.Y));
                animationClip.AddClipPoint(4000, "FISH3_SWIM_RIGHT", new Vector2(400 - fish.Transform.Size.X, fish.Transform.Position.Y + 400, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = -20;
                });
                animationClip.AddClipPoint(4000, "FISH3_SWIM_LEFT", new Vector2(0, fish.Transform.Position.Y));
                break;

            case 2:
                // Animation allowed only for fishes under 400px of water
                if (fish.Transform.Position.Y < 400)
                {
                    return(GetAnimationClip(3, fish));
                }

                animationClip.AddClipPoint(100, "FISH3_SWIM_RIGHT", new Vector2(0, fish.Transform.Position.Y));
                animationClip.AddClipPoint(3000, "FISH3_SWIM_RIGHT", new Vector2(400 - fish.Transform.Size.X, fish.Transform.Position.Y - 400, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = 22;
                });
                animationClip.AddClipPoint(3000, "FISH3_SWIM_LEFT", new Vector2(0, fish.Transform.Position.Y));
                break;

            case 3:
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(400 - fish.Transform.Size.X, fish.Transform.Position.Y + 300, 400, 400, fish.Transform.Size.X, fish.Transform.Size.Y), () => {
                    fish.Transform.Position.X = SceneManager.ScreenSize.X - fish.Transform.Size.X;
                    fish.Transform.Rotation   = 90;
                });

                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(0, fish.Transform.Position.Y + 300, 400, 400, fish.Transform.Size.X, fish.Transform.Size.Y), () => {
                    fish.Transform.Rotation = 0;
                });

                animationClip.AddClipPoint(2000, "FISH3_SWIM_RIGHT", new Vector2(0, fish.Transform.Position.Y + 75, 400, 400, fish.Transform.Size.X, fish.Transform.Size.Y), () => {
                    fish.Transform.Rotation = 90;
                });

                animationClip.AddClipPoint(2000, "FISH3_SWIM_RIGHT", new Vector2(400 - fish.Transform.Size.X, fish.Transform.Position.Y + 75, 400, 400, fish.Transform.Size.X, fish.Transform.Size.Y), () => {
                    fish.Transform.Rotation = 0;
                });
                break;

            case 4:
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(0, fish.Transform.Position.Y, 400, 0, fish.Transform.Size.X, 0));
                animationClip.AddClipPoint(2000, "FISH3_SWIM_RIGHT", new Vector2(100, fish.Transform.Position.Y + 100, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = -30;
                });
                animationClip.AddClipPoint(2000, "FISH3_SWIM_RIGHT", new Vector2(200, fish.Transform.Position.Y, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = 30;
                });
                animationClip.AddClipPoint(2000, "FISH3_SWIM_RIGHT", new Vector2(400 - fish.Transform.Size.X, fish.Transform.Position.Y + 100, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = -30;
                });
                animationClip.AddClipPoint(2000);
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(200, fish.Transform.Position.Y, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = -30;
                });
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(100, fish.Transform.Position.Y + 100, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = 30;
                });
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(0, fish.Transform.Position.Y, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = -30;
                });
                animationClip.AddClipPoint(2000, "FISH3_REST_LEFT");
                break;

            default:
                animationClip.AddClipPoint(100, "FISH3_SWIM_RIGHT", new Vector2(400 - fish.Transform.Size.X, fish.Transform.Position.Y, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Position.X = SceneManager.ScreenSize.X - fish.Transform.Size.X;
                });
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(400 - fish.Transform.Size.X, fish.Transform.Position.Y, 400, 0, fish.Transform.Size.X, 0));
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(200, fish.Transform.Position.Y + 100, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = 30;
                });
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(100, fish.Transform.Position.Y, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = -30;
                });
                animationClip.AddClipPoint(2000, "FISH3_SWIM_LEFT", new Vector2(0, fish.Transform.Position.Y + 100, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = 30;
                });
                animationClip.AddClipPoint(2000);
                animationClip.AddClipPoint(2000, "FISH3_SWIM_RIGHT", new Vector2(100, fish.Transform.Position.Y, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = 30;
                });
                animationClip.AddClipPoint(2000, "FISH3_SWIM_RIGHT", new Vector2(200, fish.Transform.Position.Y + 100, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = -30;
                });
                animationClip.AddClipPoint(2000, "FISH3_SWIM_RIGHT", new Vector2(400 - fish.Transform.Size.X, fish.Transform.Position.Y, 400, 0, fish.Transform.Size.X, 0), () => {
                    fish.Transform.Rotation = 30;
                });
                animationClip.AddClipPoint(2000, "FISH3_REST_RIGHT");
                break;
            }

            return(animationClip);
        }