Unityでは数値型のフィールドにC#のエクスプレッションや数式を入力ことができます。
今回、例として上記のシーンにあるオブジェクトのTransformのコンポーネントの入力フィールドを使って、オブジェクトを様々な形状で配置する方法をご説明します。これを活用しワークフローをスピードアップさせましょう!
目次
基本的なC#のエクスプレッション
L(a,b)
L(a,b)というエクスプレッションを使うと、選択したオブジェクトをaとbの間に列で並べることができます。これは、スケールや回転の入力のフィールドにも使うことができます。
R(a,b)
R(a,b)というエクスプレッションを使うと、選択したオブジェクトをaとbの間にランダムで配置したり、回したり、スケールすることができます。
R(a,b)のエクスプレッションは、以前に配置されたオブジェクトにランダムな回転を付けたい際に便利です。
現在の値を調整するエクスプレッション
+= -= *= /=
例えば、*=1.5というエクスプレッションを使うと、各オブジェクトの現在値に1.5を掛けることができます。
注意:スケールする場合は「Enable Constrain Proportions」のボタンを消さないと、エクスプレッションを利用することができません。
数式
数値型のフィールドで数式をするために下記の演算子を使います。
+ | 足し算 例: 3+2を入力すると、5になります |
– | 引き算 例: 3-2を入力すると、1になります |
* | 掛け算 例: 3*2を入力すると、6になります |
/ | 割り算 例: 3/2を入力すると、1.5になります |
^ | 冪乗 例: 3^2を入力すると、9になります |
( ) | 括弧 例: (3+2)*4を入力すると、20になります |
% | 剰余演算 例: 5%2を入力すると、1になります |
数学関数
sqrt(a) | 平方根 例: sqrt(36)を入力すると、6になります |
floor(a) | 小数第一位で切り捨てること 例: floor(1.4)を入力すると、1になります floor(1.5)を入力すると、1になります |
ceil(a) | 小数第一位で切り上げること 例: ceil(1.4)を入力すると、2になります ceil(1.5)を入力すると、2になります |
round(a) | 小数点を四捨五入すること 例: round(1.4)を入力すると、1になります round(1.5)を入力すると、2になります |
pi | 円周率 例: piを入力すると、3.141593になります |
sin(a) | サイン 例: sin(pi/6)を入力すると、0.5になります |
cos(a) | コサイン 例: cos(pi/3)を入力すると、0.5になります |
tan(a) | タンジェント 例: tan(pi/4)を入力すると、1になります |
C#のExpressionEvaluatorのヘルプのページで、お使いのUnityのバージョンに合った数式を確認することができます。
エクスプレッションを利用して、オブジェクトを円状に配置する方法
X軸:cos(L(0,2*pi))*円の半径
Z軸:sin(L(0,2*pi))*円の半径
軸の入力フィールドずつに上記の数式を入力すると、選択したオブジェクトを円状に配置することができます。
参考サイト
Unity 2023.2 – Expression Evaluator Help
Unity 2023.3 – Help (プロパティの編集)
Daniel Ilett – Six Grass Rendering Techniques in Unity (3:27)