public override void RankingUpdate() { // enemysにエネミーのデータを入れる List <Vector2> scale = new List <Vector2>(); // エネミー一体一体の大きさを個別に保存 foreach (var enemy in GameObjectManager.FindAll(CharacterID.Enemy)) { scale.Add(enemy.transform.Scale); } // スケールでソート var scaleVar = scale.OrderByDescending(s => s.X).ToList(); // Rankingの初期値はエネミーの数 playerRank = scaleVar.Count; // プレイヤーのランクを決定 for (int enemyNumber = 0; enemyNumber < scaleVar.Count; enemyNumber++) { // プレイヤー全体の大きさが今調べているエネミーの大きさよりも大きかったら if ((CompVector2.SumScale(CharacterID.Player).X > scaleVar[enemyNumber].X)) { // 現在調べているエネミーのナンバーをプレイヤーに入れる playerRank = enemyNumber; // それ以降は処理しない break; } } }
/// <summary> /// 餌を定期的に追加 /// </summary> /// <returns></returns> /// //private void RunTask() //{ // TaskFactory taskFactory = new TaskFactory(); // CancellationTokenSource tokenSource = new CancellationTokenSource(); // Task task = taskFactory.StartNew(() => // { // while (true) // { // // キャンセル要求が来ていたらOperationCanceledException例外をスロー // tokenSource.Token.ThrowIfCancellationRequested(); // GameObjectManager.Add(new Food(gameManager)); // Task.Delay(500); // } // }, tokenSource.Token); // if (sceneEndCheck) // { // try // { // // キャンセル要求出す // tokenSource.Cancel(); // // タスクがキャンセルされるまで待機 // task.Wait(); // } // catch (AggregateException) // { // // タスクがキャンセルされるとここが実行される // } // } //} // 更新 public override void Update(GameTime gameTime) { CameraGroup(); // 敵を定期的に追加する処理を実行 EnemyAdd(gameTime); // 餌を定期的に追加する処理を実行 FoodAdd(gameTime); PlayerNullCheck(); Console.WriteLine(CompVector2.SumScale(CharacterID.Player)); }
/*//////////////////////////////////////////// * * * ここから下はUpdataに書いた処理が書かれてます * * * /* /////////////////////////////////////////*/ /// <summary> /// カメラのズームと動き /// </summary> private void CameraGroup() { // カメラの初期値 Camera.Position = Screen.HalfScreen; if (CompVector2.SumScale(CharacterID.Player).X <= 17.0f) { if (!input.IsKeyPush(Keys.Space)) { // 初期カメラズーム値 / キャラクターのScaleの合計でカメラのズームを決める Camera.Zoom = new Vector2(4f) / CompVector2.SumScale(CharacterID.Player); } } else { Camera.Zoom = new Vector2(0.23f); } // カメラを移動させる camera.MoveVector2(-(Screen.HalfScreen - CompVector2.ObjectsCenterPos(CharacterID.Player))); }