コード例 #1
0
        private void OnBulletCollision(SKPhysicsContact contact)
        {
            if (IsBulletContact(contact))
            {
                SKPhysicsBody bulletBody;
                SKPhysicsBody otherBody;

                if (contact.BodyA.CategoryBitMask == (uint)GameObjects.playerBullet ||
                    contact.BodyA.CategoryBitMask == (uint)GameObjects.enemyBullet)
                {
                    bulletBody = contact.BodyA;
                    otherBody  = contact.BodyB;
                }
                else
                {
                    bulletBody = contact.BodyB;
                    otherBody  = contact.BodyA;
                }

                var bulletObject = BulletsInScene.Find(
                    (obj) => obj.ID.ToString() == bulletBody.Node.Name);

                var otherObject = SceneGameUnits.Find(
                    (obj) => obj.ID.ToString() == otherBody.Node.Name);

                if (otherObject != null && bulletObject != null)
                {
                    otherObject.GetDamage(bulletObject.DMG);
                    DestroyBullet(bulletObject);
                }
            }
        }
コード例 #2
0
        public void SpawnEnemy()
        {
            Enemy enemy = null;

            if (PlayerScore <= 50)
            {
                enemy = new Lvl1Enemy(this);
            }
            else if (PlayerScore <= 100)
            {
                enemy = new Lvl2Enemy(this);
            }
            else if (PlayerScore <= 150)
            {
                enemy = new Lvl3Enemy(this);
            }
            else if (PlayerScore <= 200)
            {
                enemy = new Lvl4Enemy(this);
            }
            else
            {
                boss  = new Boss(this);
                enemy = boss;
                SceneUpdateDelegate += boss.OnSceneUpdate;
            }

            if (enemy != null)
            {
                enemy.Spawn();
                SceneGameUnits.Add(enemy);
            }
        }
コード例 #3
0
 public void SpawnPlayer()
 {
     SpawnEnemy();
     GenerateBonusDelay();
     lastTime   = new TimeSpan(DateTime.Now.Ticks).TotalMilliseconds;
     bonusTimer = new TimeSpan(DateTime.Now.Ticks).TotalMilliseconds;
     Player     = new Player(this, "playerStartSprite.png");
     SceneGameUnits.Add(Player);
     Hud.UpdateHudData();
 }
コード例 #4
0
        private void OnEnemyCollision(SKPhysicsContact contact)
        {
            bool isPlayerAndEnemyContact =
                (contact.BodyA.CategoryBitMask == (uint)GameObjects.player &&
                 contact.BodyB.CategoryBitMask == (uint)GameObjects.enemy) ||
                (contact.BodyB.CategoryBitMask == (uint)GameObjects.player &&
                 contact.BodyA.CategoryBitMask == (uint)GameObjects.enemy);

            if (isPlayerAndEnemyContact)
            {
                SKPhysicsBody EnemyBody;
                SKPhysicsBody PlayerBody;

                if (contact.BodyA.CategoryBitMask == (uint)GameObjects.enemy ||
                    contact.BodyA.CategoryBitMask == (uint)GameObjects.enemy)
                {
                    EnemyBody  = contact.BodyA;
                    PlayerBody = contact.BodyB;
                }
                else
                {
                    EnemyBody  = contact.BodyB;
                    PlayerBody = contact.BodyA;
                }

                var enemyObject = SceneGameUnits.Find(
                    (obj) => obj.ID.ToString() == EnemyBody.Node.Name);

                if (enemyObject != null)
                {
                    enemyObject.GetDamage(100);
                    Player.GetDamage(10);
                }
                else if (EnemyBody.Node == boss.Node)
                {
                    boss.GetDamage(50);
                    Player.GetDamage(100);
                }
            }
        }
コード例 #5
0
 private void DeleteUnit(GameUnit unit)
 {
     SceneGameUnits.Remove(unit);
     unit.Node.RemoveFromParent();
 }