つかぱい.com

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

【Vim】カーソルキーでの移動を禁止する設定(ドラゴン付き)。

事前インストール

cowsayとslコマンド必要なので予めインストールが必要 brew install cowsay sl

設定方法

.vimrcに以下を設定する。

設定するとAAのドラゴンが丁寧に教えてくれる。

function TeachKey(message)
    let summon = join([“!clear; cowsay -f dragon “, a:message, “を押すのだ”])
    exec summon
endfun
nnoremap <buffer> <Left> <Esc>:call TeachKey(‘h’)<CR>
nnoremap <buffer> <Right> <Esc>:call TeachKey(‘l’)<CR>
nnoremap <buffer> <Up> <Esc>:call TeachKey(‘k’)<CR>
nnoremap <buffer> <Down> <Esc>:call TeachKey(‘j’)<CR>
nnoremap <buffer> <PageUp> <Esc>:call TeachKey(‘Ctrl+B’)<CR>
nnoremap <buffer> <PageDown> <Esc>:call TeachKey(‘Ctrl+F’)<CR>
inoremap <buffer> <Left> <Esc>:call TeachKeyBi)ding(‘h’)<CR>
inoremap <buffer> <Right> <Esc>:call TeachKey(‘l’)<CR>
inoremap <buffer> <Up> <Esc>:call TeachKey(‘k’)<CR>
inoremap <buffer> <Down> <Esc>:call TeachKey(‘j’)<CR>
inoremap <buffer> <PageUp> <Esc>:call TeachKey(‘Ctrl+B’)<CR>
inoremap <buffer> <PageDown> <Esc>:call TeachKey(‘Ctrl+F’)<CR>
vnoremap <buffer> <Left> <Esc>:call TeachKeyBi)ding(‘h’)<CR>
vnoremap <buffer> <Right> <Esc>:call TeachKey(‘l’)<CR>
vnoremap <buffer> <Up> <Esc>:call TeachKey(‘k’)<CR>
vnoremap <buffer> <Down> <Esc>:call TeachKey(‘j’)<CR>
vnoremap <buffer> <PageUp> <Esc>:call TeachKey(‘Ctrl+B’)<CR>
vnoremap <buffer> <PageDown> <Esc>:call TeachKey(‘Ctrl+F’)<CR>

nnoremap <buffer> <Del> <Esc>:<C-u>!sl<CR>
inoremap <buffer> <Del> <Esc>:<C-u>!sl<CR>
vnoremap <buffer> <Del> <Esc>:<C-u>!sl<CR>

set backspace=0

確認方法

設定されるとこんなのが出る。

image.png

参考URL

vi(vim)で完全にカーソルキーを無効化させたい - スタック・オーバーフロー

development/vim

Starry Hillのテスト版を公開してみた

f:id:ferrari458tukapai:20200714230751p:plain

URL: Starry_Hill | フリーゲーム投稿サイト unityroom

今まで一人で作ってきたゲームの基礎的な部分をWebGLで遊べるようにしてみました。

今後少しずつアップデートできるようにしたい

ひとまずしょうもないゲームとしては遊べるので試しにプレイしてもらえると嬉しいです。

スクリプトでLoadSceneがうまく動かないと思ったら気をつけること

f:id:ferrari458tukapai:20200514225654p:plain

こんな実装しているんだけど肝心のGame_Sceneが出ないような感じになったとき

BuildSettingにシーンが入っているかを確認する。

f:id:ferrari458tukapai:20200514225718p:plain

File>BuildSettingを開く

f:id:ferrari458tukapai:20200514225737p:plain

ロードできるシーンはこの辺に書いてあるので対象としているシーンがない場合はここにドラッグアンドドロップで追加する。

development/Starry_Hill

最近の開発進捗

ちまちまミニゲームの開発を続けているんだけど、仕事する時間と人に付き合う時間が多くてなかなか進まない

一応スタートからゲームオーバーまで一通りのシーンまで遷移することができたので一旦簡単にはできたような感じ

残りはバラバラなっているスクリプトをまとめたり設計のドキュメントを書き起こしておきたい。

f:id:ferrari458tukapai:20200513215642g:plain

【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