つかぱい.com

どうせなら好きなことを書いていたい

思考のファスティングをする

今回は考え事の実験

やるべきこと、やりたいことがあったとして結局手に付かないことが多いので少し考える。

例えば、全く何もしない時間が一週間あったとしたらどんな感じだろうか

具体的には、インターネットも人間関係のない状態で何をしたいだろうか

パッと思いつくのはアウトプットも人に見せることも特に考えないことがしたいと思った。

なんでかというと大人になって色々できるようになるほどに、他人への評価がすごく気になってしまうから

頭では、そんなことどうでもいいじゃない?自分の好きなことをしようという謳い文句は理科しているはずであるがそれでも気になる。

あとは、できることが増えるにつれて自分のなりたい状態がかなりのステップや時間がないとできないことがわかってくる。

そうなると、早くそこに追いつかねばと思って焦るのですよ。

でも、焦ったところでちっとも進まないということもまた事実。

そう思うのであれば、頭が空っぽになるまで何もしないと思っても別に構わんのではないのかなとおもった。

それが思考のファスティングってやつかなと

再度ルーティンを考える必要が出てきたような気がする。

環境が変わって新しい仕事ややることが増えてきたのでそろそろ習慣としているものを見直すときが来たかもしれない。

今月に入って、コロナの影響で外に出てやることが激減したし。

それに加えて家に引きこもっているのでこれは結構な潜在的ストレスを抱える状態になっているのではないかと思う。

電車に乗らなくなったのは良いのだけれども、乗っているときに考え事をしていた状態がなくなってしまった。

このあたりを家にいる生活の中でどうにか捻出したい。

要は、自分のルーティンとしていたことがガラッと変わってしまったのでなんとかしたいなと思ったということ。

まあ、配送ですかといって変わることも難しいので今週来週と時間をかけてじっくりこのあたりは取り組んでいこうと思う。

ひとまずマインドフルネスでもして、ゆっくりしよう。

【Terminal】Starshipの設定メモ

公式が結構詳しいのでその辺読んだようがいいと思う。

Starship_ガイド

以下は自分用の手順

自分のmacにインストールしてみる。

home brew でインストール
brew install starship

viでfishのコンフィグの末尾に設定を追加して有効化する。 vi ~/.config/fish/config.fish

これを追加する。 starship init fish | source

f:id:ferrari458tukapai:20200410124412p:plain

Fishのこの状態が

f:id:ferrari458tukapai:20200410124416p:plain

こんな感じに見た目が変わっていた。

Tools/hyper# #development/terminal

【Unity】簡単なTimer機能の実装したときにやったこと

Unityでタイマー機能をググってみたのだけれどもいまいちピンとくるものがなかったのでひとまずやったことをメモする。

事前準備

f:id:ferrari458tukapai:20200326081431p:plain

CanvasにTimeオブジェクトを作成してCanvasと紐付けをする。

当初Scoreだけを実装していたのでScoreの値がCanvasに直接くっついている状態だった。

f:id:ferrari458tukapai:20200326081542p:plain

スクリプトに新しくTimerスクリプトを作成

仕様は以下のようにした

  • 60秒からカウントダウンする。
  • ScoreUIの下に整数部分だけを表示する。
  • カウントが0になったらカウントをストップする。

60秒からカウントダウンする。

まず固定値で1分を設定する。

Updateで使うTime.deltaTimeがInt型だとエラーになってしまうのんでFloat型で60秒を宣言する。

private float countTime = 60;

描画するテキストオブジェクトは以下を宣言する。

public Text timeCount;

最初は単純にカウントダウンができるかを確認したかったのでUpdateをこんな感じで実装してみた。

    void Update()
    {
        countTime -= Time.deltaTime;   
     timeCount.text = countTime.ToString();
    }

f:id:ferrari458tukapai:20200326081733g:plain

こんな感じになる

ScoreUIの下に整数部分だけを表示する。

しかし、今の実装だと小数点以下も見えてしまうので仕様上と違う

ここ描画は整数のみの部分を切り出した実装としたいのでコードの追加する。

//整数とする変数を追加
private int second;

    // Update is called once per frame
    void Update()
    {
        countTime -= Time.deltaTime;
        second = (int)countTime;
       //(int)countTimeでint型に変換して表示させる。
            timeCount.text = second.ToString();
    }

f:id:ferrari458tukapai:20200326081843g:plain

こんな感じに整数でTimeが表示された。

カウントが0になったらカウントをストップする。

整数までカウントダウンできるようになったが、このままだとマイナスのカウントが永遠と描画されてしまう。

タイマーをストップする基準は * カウントが0になったらそれ以上カウントしない なのでif文でカウントが0になったら0のままにする制御を追加する。

        if (countTime <= 0)
        {
            second = 0;
            timeCount.text = "0";
        }

一度テストしてみる。 ここでは60秒も待つと長いので、5秒で0のままになるかを数える。

f:id:ferrari458tukapai:20200326081925g:plain

描画は0で止まっているのでOK

今後の課題

  • 今はタイマーを動かすことだけしかできないので、今後ゲームオーバーの制御などをするときの制御などからアクセスしやすいように改良したい。
  • Timeの箇所とタイマー数値オブジェクトを今回切り離して実装したけれども後々考えるとレンダリングスクリプトで書けば一つにできるやんと後で気づいたので修正したい。

development/Starry_Hill

UnityでScriptをアタッチしたオブジェクトを削除したい。

やりたいこと:落ちゲーのようにたくさんの同一オブジェクトを作ってぶつかった物だけを消したい

ググってもうまい回答を探すのが難しかったので個人的にうまくいったことだけを載せています。

※余裕があったら何でそうなるのかは調べますが、ご存知の方がいればコメントしていただけると嬉しいです。

結論

Destroy(gameObject);で設定するとうまくいった。

変更した実装

今までの実装

今までは、インスペクターで自分のオブジェクト名を指定して削除する仕様にしていた。 この場合はすでにGameObjectがscene内内にいる場合は有効 でも、ファクトリーっぽく自動生成される場合はちょっと困った。

 void OnCollisionEnter2D(Collision2D collision)  { // 衝突したとき
        // もし、衝突したものの名前が目標オブジェクトだったら
        if (collision.gameObject.name == targetObjectName) {
      //今までは一個だけのオブジェクトを削除していたのでオブジェクトの名称を直接してしていた。
            GameObject DestroyObject = GameObject.Find(DestoryObjectName);
            Destroy(DestroyObject); 
        }

うまくいった実装

こっちの実装ではアタッチしているgameobjectを取得して削除する、という仕様に切り替えた でも、何で公式に書いているようにDestroy(this);で消さないの?ということもあると思うが、thisの場合だとなぜかうまく消えなかったのでこっちを採用した。 その辺りは、バージョンなどが関係するのかな、わからんけど

 void OnCollisionEnter2D(Collision2D collision)  { // 衝突したとき
        // もし、衝突したものの名前が目標オブジェクトだったら
        if (collision.gameObject.name == targetObjectName) {
                //複数の同じオブジェクトを生成してぶつかった物を削除するのであれば
                //シンプルにgameObjectをさして削除するとオブジェクトが消える
            Destroy(gameObject);    
        }
    }
}