今日やったこと
ワーキングメモリートレーニング
瞑想
鬼ネズミ、鬼計算、計算20、計算100をやりました。
Lv10と11を中心に160問やりました。
- 将棋
将棋ウォーズで3戦しました。結果は1勝2敗...
力学の勉強
英語
- 音読英単語入門編 unit1~4 4周目
C#の勉強
ゲーム開発の続き
カウントダウンの実装
状態がStart状態に遷移するとこんな感じのカウントダウンが始まるようにしました。
コードはこんな感じで、DOTweenを使ってアニメーションを作成しました。
UniRxのReactiveProperty<T>
を使ってアニメーションが終わると状態をPlayに遷移するようにしています。
using System.Collections; using System.Collections.Generic; using UnityEngine; using UniRx; using Zenject; using DG.Tweening; using TMPro; public class CountDownPlayer : MonoBehaviour { [Inject] GameStateManager gameStateManager; private TextMeshProUGUI textMeshPro; private CanvasGroup canvasGroup; private void Start() { textMeshPro = this.GetComponent<TextMeshProUGUI>(); canvasGroup = this.GetComponentInParent<CanvasGroup>(); gameStateManager .CurrentGameState .Where(state => state == GameState.Start) .Subscribe(_ => PlayCountDown()) .AddTo(this); } private void PlayCountDown() { var sequence = DOTween.Sequence(); sequence .OnStart(() => UpdateText("3")) .Append(FadeOutText()) .AppendCallback(() => UpdateText("2")) .Append(FadeOutText()) .AppendCallback(() => UpdateText("1")) .Append(FadeOutText()) .AppendCallback(() => UpdateText("START")) .Append(FadeOutText()) .OnComplete(() => gameStateManager.SetGameState(GameState.Play)); } //テキストの更新 private void UpdateText(string text) { InitializeAlpha(); textMeshPro.text = text; } //フェードアウトさせる private Tween FadeOutText() { return canvasGroup.DOFade(0, 1.0f); } //アルファ値の初期化 private void InitializeAlpha() { canvasGroup.alpha = 1.0f; } }
この辺の処理は今後何回も使いそうなので記事にしました。
Pack(真ん中にある白いボールみたいなやつ)を動かす
Play状態に遷移した瞬間にプレイヤーに向かってPackを打ち出します。
PackStarterクラスで管理します。
using System.Collections; using System.Collections.Generic; using UnityEngine; using Zenject; using UniRx; public class PackStarter : MonoBehaviour { [Inject] private GameStateManager gameStateManager; Rigidbody rb; // Start is called before the first frame update void Start() { rb = this.GetComponent<Rigidbody>(); StartPack(); } private void StartPack() { gameStateManager .CurrentGameState .Where(state => state == GameState.Play) .Take(1) .Subscribe(_ => ThrowPack()) .AddTo(this); } private void ThrowPack() { Vector3 ThrowDirection = new Vector3(0, 0, -300); rb.AddForce(ThrowDirection); } }
GameStateManagerに多くのクラスが依存しまくっているのが不安なところです...
結果
JINS MEME ESという最新の学術研究の成果を元に人間の心理状態を測定できるウェアラブルデバイスを使って本日の僕の集中状態を測定した結果は以下のようになりました。
作業時間 10時間37分 + (英語シャドーイング1時間30分)
集中時間 3時間34分
集中率 34%
反省
特にないです。
トレーニングのおかげで最近は自然と集中できるようになってきました。