cover

Unityでよく使う関数

この記事は現在仮設置なのであとでしっかり更新します。

わからない言葉詳細を知りたい言葉があったときは「調べましょう」「聞きましょう(人やAIに)」←超重要

関数とは?

** 関数は、「名前をつけた処理のまとまり」 ** 何かの「動作」や「計算」をまとめておいて、あとから名前で呼び出せるようにする仕組み

メリットとしては、

  • 同じ処理を何回も書かなくていい(再利用できる
  • 長いプログラムを整理できる など

引数について

** 引数(ひきすう)とは、関数に「データを渡すための仕組み」 ** 関数名のあとの () の中に入れる値のこと。

Unityでよく使う関数

この記事では色々な関数を載せておきますが、無理に覚える必要はありません。 使いながらゆっくり理解していきましょう。


物体を動かす時

Transform.Translate(Vector3 vector) ベクトルで指定した方向に1度進む。
正確には、物体の現在位置に vector を足して、新しい位置に移動する。
Transform.Rotate(Vector3 eulers) 指定した回転角度(オイラー角)分だけオブジェクトを回転させる。
x/y/z それぞれの軸に対して度単位で角度を指定する。

力を加える時(物理演算関係)

Rigidbody.AddForce(Vector3 force) オブジェクトに物理的な力を加える関数。
力の向きと大きさを指定することで、自然な加速・移動を再現できる。
第2引数に ForceMode を指定すると、加える力の種類が変わる。
例:AddForce(force, ForceMode.Impulse)は「瞬間的な力(弾き飛ばす)」を加える。

入力を処理する時

便利なInputSystemというものもありますが、 ここではより基本的な方法を説明します。 (ここで挙げられるものはInputSystemとは別物です。)

Input.GetKey(KeyCode key) 指定したキーが「押されている間」trueを返す。
フレームごとに押しっぱなしを検知したいときに使う。
Input.GetKeyDown(KeyCode key) 指定したキーが「押された瞬間」だけ true を返す。
1回だけの処理(ジャンプ、攻撃など)に適している。
Input.GetAxis(string axisName) 滑らかな移動用の入力値(-1.0〜1.0)を返す。
"Horizontal" や "Vertical" など、事前に設定された名前を使う。

デバックする時(意外と重要)

Debug.Log(object message) Unityのコンソールに情報を表示する。
変数の中身や処理の流れを確認するときに非常に便利。

物体を生成・消滅させる

Instantiate(Object obj) 指定したオブジェクト(プレハブ)を新しく生成する。
弾の発射、敵のスポーンなどに頻繁に使われる。
引数を増やせば、出現するときの位置や回転や大きさが決められる。
Destroy(Object obj) オブジェクトをゲーム内から削除する。
プレハブや一時的なエフェクトなどの片付けに使われる。

遅延処理する時

少し難しい関数なので、 よくわからない場合は数秒待って実行したいときに使うもんだと思っててください

Invoke(string methodName, float time) 指定した関数を、指定した秒数の後に1回だけ呼び出す。
時間差でイベントを起こしたいときに使える。
StartCoroutine(IEnumerator routine) 一定時間ごとに処理したい、途中で待機させたいときなどに使う関数。
コルーチンを開始し、yield return で処理を分割できる。

数値計算系

案外使わない感じもしますが、たまに使うので。

Mathf.Abs(float x) x の絶対値を返す関数。
負の値を正に変えるだけで、正の値はそのまま返る。
Mathf.Clamp(float value, float min, float max) value を指定した範囲に制限する関数。
上限・下限を超えた場合、それぞれ max/min に固定される。
int型など数値型だったらどれも使える。
Mathf.Round(float x) x を四捨五入して、最も近い整数に変換する。
Mathf.Sin(float rad) ラジアン単位の角度からサイン(sin)値を返す。
波のような動きや周期的な処理に使える。
Mathf.Cos(float rad) ラジアン単位の角度からコサイン(cos)値を返す。
円運動や時間ベースのエフェクトに役立つ。
Mathf.Atan2(float y, float x) y/x の比から角度(ラジアン)を求める関数。
2Dで向いている方向を求めるときに特に便利。
難しい場合はこんなものがあるんだな程度でOK。
Mathf.Lerp(float a, float b, float t) a から b に向かって t の割合(0〜1)だけ進んだ値を返す。
補間(滑らかな移動や色の変化など)に使われる。