【Unity】接触・衝突・当たり判定

 接触や衝突の判定には大きく2つ、 OnCollisionEnter ()【オンコリジョンエンター】かOnTriggerEnter()【オントリガーエンター】 のどちらかを利用できる。以下にそれぞれの特徴をまとめる。

CollisionTrigger
Colliderコンポーネント必要必要
Rigidbodyコンポーネントどちらかに必要どちらかに必要
is Triggerどちらも無効どちらかを有効
取得できる情報CollisionCollider
物理的影響影響あり影響なし

 これらはStart()【スタート】関数やUpdate()【アップデート】関数と別で宣言して利用する関数で、判定が起こったときに中に記述した処理を実行する。Enterの他にStay【ステイ】、Exit【イグジット】なども利用できる。それぞれの判定をまとめると以下の通り。

Enter接触した瞬間のみ
Stay接触している間常に
Exit離れた瞬間のみ

 使い分けとしては物理的影響の有無が大きい。具体的な例を出せば、
 ・着地しているときにダメージを与えたい→OnCollisionStay()
 ・自動ドアのセンサのように侵入を検知したい→OnTriggerEnter()
などがイメージしやすい。

 また、どちらも取得した情報からGameObjectを取得することができる。以下にそのサンプルを示す。

void OnCollisionEnter(Collision nantara){
   Debug.Log(nantara.gameObject.name);  //接触したオブジェクトの名前情報を表示
}

void OnTriggerEnter(Collider nantara){
   Debug.Log(nantara.gameObject.name);  //接触したオブジェクトの名前情報を表示
}

【Unity】テキストの表示

 画面上にテキストを表示したい場合はText【テキスト】コンポーネントを利用する。これはRectTransform【レクトトランスフォーム】やCanvasRenderer【キャンバスレンダラー】などと組み合わせて利用するため新しく文字を表示したい場合は素直にテキストオブジェクトを追加することを推奨する。以下の図のように「Hierarchy」>「+」>「UI」>「Text」とたどると追加できる。

 TextコンポーネントのTextの枠に入力した文字を画面上に表示する。その下の「Font Size【フォントサイズ】」や「Color【カラー】」で文字の大きさや色も変更できる。尚、RectTransformで指定した表示エリアからはみ出るサイズになった場合何も表示されなくなるので注意。また、RectTransformの位置座標が画面外に指定されている場合にも表示されない。

 スクリプトから表示する文字列を変更したい場合このTextプロパティにString型で代入すればよい。他のコンポーネントやそのプロパティの変更については「【Unity】コンポーネントの取得」を参照。
 また、単純に表示・非表示を切り替えたいだけであればオブジェクトのアクティブ・非アクティブをコントローするだけでよい。こちらについては「【Unity】アクティブ・非アクティブ」を参照。

【Unity】キー入力の利用

 キーボードのキーが押されているかどうかはInput.GetKey()【インプットゲットキー】で取得できる。型はbool。押されていればtrue【トゥルー】、押されていなければfalse【フォルス】。また、押されたタイミングや指を離したタイミングも以下のように取得可能。

Input.GetKey()押している間true
Input.GetKeyDown()押した瞬間true
Input.GetKeyUp()離した瞬間true

 引数には”String型のキーの名称”か”KeyCode【キーコード】”を渡せる。よく使いそうなキーコードに関して以下にまとめる。更に全てのキーコードを知りたい場合は公式のリファレンスを参照。

KeyCode.Space スペースキー
KeyCode.AAキー(他のアルファベットも同様)
KeyCode. UpArrow 上矢印キー
KeyCode.DownArrow下矢印キー
KeyCode.RightArrow右矢印キー
KeyCode.LeftArrow左矢印キー
KeyCode.Alpha11キー(他の数字も同様)

 boolを返すので下記のようにそのままif文の条件に入れて利用することが多い。KeyCodeを利用する場合文字列ではないので””を付けてしまわないように注意。

if (Input.GetKeyDown(KeyCode.Space)){
            Debug.Log("スペースキーが押されたよ!");
        }

【Scratch】抵抗器カラーコード計算機をつくったときのはなし

抵抗器のカラーコードを入力すると抵抗値を教えてくれます。
イラストの白い部分からプルダウンで4つの色を選びます。
スペースキーを押すと計算結果を表示します。

ゲームにとどまらず身近なものの便利ツールをすぐに試作できるのもScratchの面白いところですね。