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