つかぱい.com

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

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

UnityでCanvasをカメラのサイズと合わせたい時の設定方法

通常のCanvasオブジェクトだと非常に大きくて Gemeビューで数値調整は調整が大変だった。 SceneビューでMainCameraに収まるようにしたかったのでその時のメモ

やり方

Canvasオブジェクトの中にCannvasコンポーネントからRenderModeを変更する。

通常は”ScreenSpace-Overray”の設定になっていると思うのでここをメインカメラの枠内に収まるように”ScreenSpace-Camera”に変更する。

f:id:ferrari458tukapai:20200308183301p:plain

変更後、RenderCameraにMainCameraをセットする。

選択方法は右の◎のアイコンから選択してもいいし、ヒエラルキーからオブジェクトをドラッグ&ドロップしても良い

f:id:ferrari458tukapai:20200308183150p:plain

選択後の確認方法

選択後はSceneビューでカメラの枠にテキスト情報などが収まっていればOK

f:id:ferrari458tukapai:20200308183226p:plain

開発/Starry_Hill

Rubyでもいい感じにパスワードを出して欲しい

f:id:ferrari458tukapai:20200227223051p:plain

イメージ

確かにLinuxだったらさ、コマンドでランダムなパスワードとか出せると思うけどRubyでもやりたいじゃんと思って考え中

一番簡単な考え方

require 'securerandom'

i = ARGV[0]
#puts i
puts SecureRandom.alphanumeric(i.to_i)

こんな感じにSecurerandomのライブラリを使って何桁のパスワードを出力して欲しいかを入れるだけ

こうするととりあえずランダムなパスワードがいい感じができるのでちょっと満足した。

ターミナルでSudoのパスワード入力をTouchIDで実行する。

人類楽してもいいと思うんだ。

やり方

pam.d/sudoのファイルの先頭にtouch ID認証を追加する。

このファイルは先頭からsoリンクを呼び出すので末尾に入れるとパスワード入力してかつTouchIDを認証するというめんどくさいことになるので注意が必要

まずエディタでpam.d配下のsudoファイルを呼び出す。

sudo vim /etc/pam.d/sudo

開いたら、下の図のように先頭行にTouch ID認証を入れる

Touch ID の認証:auth sufficient pam_tid.so

f:id:ferrari458tukapai:20200224114338p:plain

これで保存して閉じればOK

正しく設定されていれば同じファイルを開いた際にTouch IDの認証画面が開くはず

fishでもsudoで罵られたい![元ネタ:sudoするたびに可愛い女の子に罵られたい!!]

Qiita記事より転機

元ネタはこれ 出典:sudoするたびに可愛い女の子に罵られたい!!

これで自分のシェルちゃんが可愛くなりますね💕

この記事だとzshだったみたいなのでfishでもいけるかなと思ったので確認した時のメモ。

やり方📝

SUDO_PROMPTの変数でこのメッセージを格納しているらいしいので呪文を唱える。

set -x SUDO_PROMPT "[sudo] さっさとパスワード入れなさいよ、このバカ! > "

永続的にしたい場合は以下

echo 'set -x SUDO_PROMPT "[sudo] さっさとパスワード入れなさいよ、このバカ! > "' >> ./.config/fish/config.fish

image.png

こんな感じにできたらOK

コメント欄にあったtimeoutの値を入れると毎回罵られるので好きな人は入れておけばいいんじゃない

sudo visudo

vim /etc/sudoersでも編集できるけど、良いこはvisudoを使いましょう。

image.png visudo 編集画面

image.png 反映できているか確認した図

おまけ

パスワードを間違えた時に罵られる方法

以下visudoで設定を編集

#これを入れると間違えた時罵られる
Defaults badpass_message="パスワードが間違ってるじゃない!正しいの入れなさいよ!!"

実験結果

 ~  sudo visudo                                              1.5m  Sun Feb  2 10:06:28 2020
[sudo] さっさとパスワード入れなさいよ、このバカ! > 
パスワードが間違ってるじゃない!正しいの入れなさいよ!!

ソース:https://www.tecmint.com/sudo-insult-when-enter-wrong-password/