5/22記録

今日やったこと

ワーキングメモリーレーニン

鬼ネズミ、鬼計算、計算20、計算100をやりました。

Lv10と11を中心に160問やりました。

  • 将棋

将棋ウォーズで3戦しました。結果は1勝2敗...

力学の勉強

英語

  • 音読英単語入門編 unit1~4 4周目

C#の勉強

ゲーム開発の続き

カウントダウンの実装

状態がStart状態に遷移するとこんな感じのカウントダウンが始まるようにしました。

f:id:alberto_hojo:20190522210356g:plain

コードはこんな感じで、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;
    }
}


この辺の処理は今後何回も使いそうなので記事にしました。

qiita.com

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

f:id:alberto_hojo:20190522234807p:plain

GameStateManagerに多くのクラスが依存しまくっているのが不安なところです...

結果

JINS MEME ESという最新の学術研究の成果を元に人間の心理状態を測定できるウェアラブルバイスを使って本日の僕の集中状態を測定した結果は以下のようになりました。

f:id:alberto_hojo:20190522235421p:plain

作業時間 10時間37分 + (英語シャドーイング1時間30分)

集中時間 3時間34分

集中率 34%

反省

特にないです。

レーニングのおかげで最近は自然と集中できるようになってきました。