示例#1
0
        protected override void OnUpdate()
        {
            if (moveRight)
            {
                Position = Position + new Vector2DF(5, 0);
            }
            else
            {
                Position = Position + new Vector2DF(-5, 0);
            }

            if (Position.X < 0)
            {
                moveRight = true;
            }

            if (Position.X > Engine.WindowSize.X)
            {
                moveRight = false;
            }

            count++;

            if (count % 60 == 0)
            {
                for (int i = 0; i < 36; ++i)
                {
                    float angle = i * 10;

                    EnemyBullet bullet = new EnemyBullet(Position, 5, angle * (float)Math.PI / 180);

                    Engine.AddObject2D(bullet);
                }
            }

            if (count % 170 == 0)
            {
                for (int i = 1; i < 10; ++i)
                {
                    float angle = (float)Math.Atan2(-(player.Position.Y - Position.Y), player.Position.X - Position.X);

                    EnemyBullet bullet = new EnemyBullet(Position, i, angle);

                    Engine.AddObject2D(bullet);
                }
            }
        }
示例#2
0
        protected override void OnUpdate()
        {
            //弾のレイヤにあるもの全てと当たり判定(追加)
            foreach (var obj in gameScene.bulletLayer.Objects)
            {
                CollideWith(obj as CollidableObject);
            }

            //左右移動
            if (moveRight)
            {
                Position = Position + new Vector2DF(5, 0);
            }
            else
            {
                Position = Position + new Vector2DF(-5, 0);
            }

            //反射
            if (Position.X < 0)
            {
                moveRight = true;
            }

            if (Position.X > Engine.WindowSize.X)
            {
                moveRight = false;
            }

            //経過時間
            count++;

            //弾発射
            if (count % 60 == 0)
            {
                for (int i = 0; i < 36; ++i)
                {
                    float angle = i * 10;

                    EnemyBullet bullet = new EnemyBullet(Position, 5, angle * (float)Math.PI / 180, player);

                    gameScene.bulletLayer.AddObject(bullet);
                }
            }

            if (count % 170 == 0)
            {
                for (int i = 1; i < 10; ++i)
                {
                    float angle = (float)Math.Atan2(-(player.Position.Y - Position.Y), player.Position.X - Position.X);

                    EnemyBullet bullet = new EnemyBullet(Position, i, angle, player);

                    gameScene.bulletLayer.AddObject(bullet);
                }
            }

            //当たったらエフェクト(追加)
            if (hitted)
            {
                hitcount--;
                if (hitcount <= 0)
                {
                    hitted = false;
                    Color  = new Color(255, 255, 255, 255);
                }
                else
                {
                    if (hitcount % 4 == 0)
                    {
                        Color = new Color(255, 255, 255, 0);
                    }
                    else
                    {
                        Color = new Color(255, 255, 255, 128);
                    }
                }
            }
        }