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); } }
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(); } }
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); }
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); }
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); }