using Jypeli; using Jypeli.Assets; public class CollisionIgnoreGroupTest : PhysicsGame { public override void Begin() { const int speed = 500; const int jumpSpeed = 1000; const int maxBaddies = 10; Gravity = -1000 * Vector.UnitY; Level.CreateBottomBorder(); var player = new PlatformCharacter(50, 50) { CollisionIgnoreGroup = 1, // Pelaajalla sama CIG kuin vihulla, mutta ei aseella => ammuksien pitäisi osua viholliseen CanRotate = false, Weapon = new AssaultRifle(40, 30) { CanHitOwner = false, ProjectileCollision = (ammo, other) => { if (other.Tag.ToString() == "bad") other.Destroy(); ammo.Destroy(); } } }; Add(player); Camera.Follow(player); for (var i = 0; i < maxBaddies; i++) Add(new PhysicsObject(30, 50) { Color = Color.Blue, CollisionIgnoreGroup = 1, // Pelaajalla sama CIG kuin vihulla, mutta ei aseella => ammuksien pitäisi osua viholliseen X = RandomGen.NextDouble(Level.Left, Level.Right), CanRotate = false, Tag = "bad" }); Keyboard.Listen(Key.Escape, ButtonState.Pressed, Exit, "Exit game"); Keyboard.Listen(Key.A, ButtonState.Down, () => player.Move(-speed * Vector.UnitX), "Move Left"); Keyboard.Listen(Key.D, ButtonState.Down, () => player.Move(speed * Vector.UnitX), "Move Right"); Keyboard.Listen(Key.W, ButtonState.Pressed, () => player.Jump(jumpSpeed), "Move Right"); Keyboard.Listen(Key.Space, ButtonState.Down, () => { var proj = player.Weapon.Shoot(); if (proj != null) { //proj.CollisionIgnoreGroup = 0; // Resetoi sekä ammuksen ETTÄ pelaajan CIG => pelaaja alkaa törmäillä vihuihin Add(proj); } }, "Move Right"); } }