「毎日Unity」の技術ブログ

開発で役立つ情報を発信する

UnityC#

【UnityC#】距離比較はDistance()よりsqrMagnitudeを使え

Distance()よりsqrMagnitudeを使った方が良い理由についてまとめました。 [ 理由 ] 理由は簡単で、Distance()には処理に時間がかかるルート計算が含まれるからです。 sqrMagnitudeにはルート計算が含まれないためDistance()よりも短時間で処理できます。 [ …

【UnityC#】知っておくと役に立つかも

下記ばそれぞれ同じ処理です。 処理1 if(X) { X = false; } else { X = true; } X = !X; 処理2 X++; if(X == 3) { X = 0; } X = ++X % 3; 処理3 if(X) { if(Y || Z) { } } if(X && (Y || Z)) { } 処理4 Z = X; X = Y; Y = Z; (X, Y) = (Y, X); 処理5 while(t…

【UnityC#】Dictionaryの使い方

Dictionaryの使い方を自分用にメモすることにしました。 [ Dictionaryとは ] [ 使い方 ] 宣言 初期化 要素の追加 要素の消去 全要素の消去 ペア数を取得 KeyからValueを取得 ValueからKeyを取得 特定のValueを含むか 特定のKeyを含むか n番目のValueを取得 n…

【UnityC#】ML-Agentsの新しい学習環境の作成方法

ML-Agentsの新しい学習環境の作成方法についてを記事にしました。 [ 記事内容 ] [ 環境 ] [ 注意事項 ] [ Pythonのインストール ] [ Pyhtonの仮想環境の構築と有効化 ] [ ML-Agentsのダウンロード ] [ ML-Agentsの準備 ] [ Unityプロジェクトの作成 ] [ 学習…

【UnityC#】乱数を取得する方法

乱数を取得する方法を自分用にメモ。 [ 取得方法 ] 「Random.Range()」で取得できます。 [ 使用例 ] 下記はコンソールに0から360までのランダムな整数の数値を出力するスクリプトです。 using System.Collections; using System.Collections.Generic; using …

【UnityC#】アニメーションについてのメモ。

スクリプトからアニメーションを操作する際につまずいたのでメモを残します。 [ 現在再生中のアニメーションの名前 ] Animator.GetCurrentAnimatorClipInfo(0)[0].clip.name [ 現在再生中のアニメーションの長さ ] Animator.GetCurrentAnimatorClipInfo(0)[0…

【UnityC#】FPS出てるのにカメラがカクつく時の解決方法

FPS出てるのにカメラがカクついてしまう時の解決方法をメモ。 [ 原因 ] プレイヤーの移動処理とカメラの移動処理を異なるスクリプトのUpdate関数で実行しているのが原因です。 [ 解決方法 ] プレイヤーの移動処理をUpdate関数にぶちこんで、カメラの移動処理…

【UnityC#】スクリプトからFixedTimestepを変更する方法

スクリプトからFixedTimestepを変更する方法を自分用にメモ。 [ 変更方法 ] 「Time.fixedDeltaTime = 〇;」で変更できます。 [ 使用例 ] 下記はFixedTimestepを0.01に変更するスクリプトです。 using System.Collections; using System.Collections.Generic;…

【UnityC#】再生中のアニメーションの名前を取得する方法

再生中のアニメーションの名前を取得する方法をメモ。 [ 取得方法 ] 「Animator.GetCurrentAnimatorClipInfo(0)[0].clip.name」で取得できます。 [ 使用例 ] 下記はコンソールに再生中のアニメーション名を毎フレーム出力するスクリプトです。 using System.…

【UnityC#】Gizmosの使い方

いくつかのGizmosの使い方を自分用にメモ。 [ Gizmos.DrawRay ] Gizmos.DrawRayは開始座標とベクトルを指定してRayを表示します。 下記は座標(0, 0, 0)を始点としてベクトル(0, 0, 1)を表示するスクリプトです。 using System.Collections; using System.Col…

【UnityC#】オブジェクトを特定の座標に向ける方法

オブジェクトを特定の座標に向ける方法を自分用にメモ。 [ transform.LookAtを使う方法 ] 下記のスクリプトをオブジェクトにアタッチしてスペースキーを押すと、そのオブジェクトが座標(2, 3, 1)を向きます。 using System.Collections; using System.Collec…

【UnityC#】スクリプトからコンポーネントを消去する方法

スクリプトからコンポーネントを消去する方法を記事にしました。 [ 消去方法 ] 「Destroy();」で消去できます。 [ 使用例 ] 下記はRigidbodyコンポーネントを消去するスクリプトです。 using System.Collections; using System.Collections.Generic; using U…

【UnityC#】スクリプトからCubeを生成する方法

スクリプトからCubeを生成する方法を自分用にメモ。 [ 生成方法 ] 「GameObject.CreatePrimitive(PrimitiveType.Cube);」で生成できます。 [ 使用例 ] 下記はCubeを生成し、生成したCubeの座標を(10, 20, 30)にするスクリプトです。 using System.Collection…

【UnityC#】経過時間を取得する方法

経過時間を取得する方法を自分用にメモ。 [ 取得方法 ] 「Time.Time」で取得できます。 [ 使用例 ] 下記はコンソールに経過時間を毎フレーム出力するスクリプトです。 using System.Collections; using System.Collections.Generic; using UnityEngine; publ…

【UnityC#】経過したフレーム数を取得する方法

経過したフレーム数を取得する方法を自分用にメモ。 [ 取得方法 ] 「Time.frameCount」で取得できます。 [ 使用例 ] 下記はコンソールに経過したフレーム数を毎フレーム出力するスクリプトです。 using System.Collections; using System.Collections.Generi…

【UnityC#】Vector3型からQuaternion型に変換する方法

Vector3型からQuaternion型に変換する方法を自分用にメモ。 [ 変換方法 ] 「Quaternion.Euler()」で変換できる。 [ 使用例 ] 下記はVector3型のVector3TestをQuaternion型に変換してQuaternionTestに代入しています。 using System.Collections; using Syste…

【UnityC#】Quaternion型からVector3型に変換する方法

Quaternion型からVector3型に変換する方法を自分用にメモ。 [ 変換方法 ] 「.eulerAngles」で変換できる。 [ 使用例 ] 下記はQuaternion型のQuaternionTestをVector3型に変換してVector3Testに代入しています。 using System.Collections; using System.Coll…

【UnityC#】変数のデータ型を取得する方法

変数のデータ型を取得する方法を自分用にメモ。 [ 取得方法 ] 「.GetType()」で変数のデータ型を取得することができます。 [ 使用例 ] 下記のスクリプトではコンソールに「System.String」と出力します。 using System.Collections; using System.Collection…

【UnityC#】対数を得る方法

対数を得る方法を自分用にメモ。 [ 方法 ] 「Mathf.Log(a, b)」で対数を得ることができます。bが底でaが真数です。 [ 使用例 ] 下記はlog2 1024をコンソールに出力するスクリプトです。 using System.Collections; using System.Collections.Generic; using …

【UnityC#】オブジェクトのレイヤーを取得する方法

オブジェクトのレイヤーを取得する方法を記事にしました。 [ 取得方法 ] 「gameObject.layer」で取得することができます。 [ 使用例 ] 下記は、下記のスクリプトがアタッチされているオブジェクトのレイヤーが9の時にそのオブジェクトを消去するスクリプトで…

【UnityC#】bool形からint型に変換する方法

boolからintに変換する方法をメモ。 [ 方法 ] 「Convert.ToInt32(bool)」で変換できます。 [ 使用例 ] 下記はbool型のBoolTestをint型に変換しIntTestに代入しています。 using System.Collections; using System.Collections.Generic; using UnityEngine; u…

【UnityC#】スクリプトからアニメーションを逆再生させる方法

スクリプトからアニメーションを逆再生させる方法を自分用にメモ。 [ 方法 ] まずはじめに、下記の画像のようにAnimatorのParametersにFloat型でSpeedというのを作成します。値は1.0にしておいてください。 次に、下記の画像のように逆再生させたいAnimation…

【UnityC#】キー入力を文字列型として取得する方法

キー入力を文字列型として取得する方法を自分用にメモ。 [ 取得方法 ] 「Input.inputString」で取得することができます。 [ 使用例 ] 下記は入力されたキーをコンソールに文字列型で出力するスクリプトです。 using System.Collections; using System.Collec…

【UnityC#】メッシュを反転する方法

メッシュを反転する方法を自分用にメモ。 [ 反転方法 ] 「triangles.Reverse()」でメッシュを反転することができます。 [ 使用例 ] 下記は下記のスクリプトをアタッチされたオブジェクトのメッシュを反転させるスクリプトです。 using System.Collections; u…

【UnityC#】スクリプトからメモリ解放する方法

スクリプトからメモリ解放する方法を自分用にメモ。 [ 方法 ] 「 System.GC.Collect(); Resources.UnloadUnusedAssets();」でメモリ解放できます。 [ 使用例 ] 下記はLキーを押すとメモリ解放するスクリプトです。 using System.Collections; using System.C…

【UnityC#】ベクトルの長さの取得方法

ベクトルの長さの取得方法を自分用にメモ。 [ 取得方法 ] 「Vector3.magnitude」で取得できます。 [ 使用例 ] 下記はVector3Test1の長さをコンソールに出力します。 using System.Collections; using System.Collections.Generic; using UnityEngine; public…

【UnityC#】2点間の距離の取得方法

2点間の距離の取得方法を自分用にメモ。 [ 取得方法 ] 「Vecotr3.Distance()」で取得できます。 [ 使用例 ] 下記はVector3Test1とVector3Test2距離をコンソールに出力します。 using System.Collections; using System.Collections.Generic; using UnityEngi…

【UnityC#】単位ベクトルの取得方法

単位ベクトルの取得方法を自分用にメモ。 [ 取得方法 ] 「Vecotr3.normalized」で取得できます。 [ 使用例 ] 下記はVector3Testの単位ベクトルをコンソールに出力します。 using System.Collections; using System.Collections.Generic; using UnityEngine; …

【UnityC#】カメラが壁を貫通しないようにする方法

カメラが壁にめり込まないようにする方法について記事を書きました。 [ 問題 ] TPS視点のカメラを作ってると、下記のようにカメラがオブジェクトにめり込んでしまうんですよね...。 [ 解決方法 ] まず、プレイヤーとカメラを親子関係にする必要があります。…

【UnityC#】文字列の改行

文字列の改行の仕方を忘れそうなので自分用にメモ [ やり方 ] 改行したいとところに"\n"を挟む。 [ 使用例 ] using System.Collections; using System.Collections.Generic; using UnityEngine; public class ScriptTest : MonoBehaviour { void Start() { s…