スクラッチからUnityへシフトアップ
7回目は「演算」グループのご紹介です。
スクラッチの「演算」ブロックは、四則演算や比較演算、文字列の管理、その他の演算などが含まれており、変数など他のブロックと併せて使用します。 Unity にも同様に様々な演算子が用意されています。
プラス(足す)
スクラッチ同様「+」の演算子を使用します。
使用例(座標を x,y,z、それぞれ 1 ずつ増やす)
transform.position = transform.position + Vector3.one;
このコードは加算代入演算子 というものを使って、以下のように記述できます。
transform.position -= Vector3.one;
マイナス(引く)
スクラッチ同様「-」の演算子を使用します。
使用例(大きさを0.01ずつ小さくする)
transform.localScale = transform.localScale - Vector3.one * 0.01f;
このコードは減算代入演算子 というものを使って、以下のように記述できます。
transform.localScale -= Vector3.one * 0.01f;
アスタリスク(かける)
スクラッチ同様「*(アスタリスク)」の演算子を使用します。
使用例(大きさを 0.1%ずつ大きくする)
transform.localScale = transform.localScale * 1.001f
このコードは乗算代入演算子 というものを使って、以下のように記述できます。
transform.localScale *= 1.001f;
スラッシュ(割る)
スクラッチ同様「/(スラッシュ)」の演算子を使用します。
使用例(大きさを 0.1%ずつ小さくする)
transform.localScale = transform.localScale / 1.001f
このコードは徐算代入演算子 というものを使って、以下のように記述できます。
transform.localScale /= 1.001f;
〇から〇までの乱数
Unityでは Random.Range を使用して乱数を取得します。
Random.Range ( a , b ) としたとき、 a 以上、b 未満の数字のいずれかを取得します。
例:整数型の変数 num に0 から 9(10未満)のいずれかの値を代入する
int num =Random.Range(0, 10);
大なり/小なり
「>(大なり)」「<(小なり)」は比較演算子と呼ばれ、Unityでもスクラッチ同様「>」「<」で表され、条件分岐などとの組み合わせで使用されます。
a が b より大きいときは「a > b」が真となり、「a < b 」は偽となります。
例文
変数:a に1~10 までの乱数を代入
変数:b に1~10 までの乱数を代入
もし a が b より大きければ
「aが大きい」という
もし a が b より小さければ
「bが大きい」という
int a = Random.Range(1, 10);
int b = Random.Range(1, 10);
if (a > b)
{
Debug.Log(" a が大きい");
}
if (a < b)
{
Debug.Log(" b が大きい");
}
イコール
Unity で左右の値が同じかどうかを比較するときは、イコール記号を二つ並べ「==」と表記します。※イコールが1つの場合「左辺に右辺を代入する」という意味になります。
使用例
変数:a に1~10 までの乱数を代入
もし a が 1 なら
「GO!」と言う
int a = Random.Range(1, 10);
if( a == 1 )
{
Debug.Log("Go!");
}
かつ
Unity で「かつ」は &(アンパサンド)記号を2つ並べ「&&」で表記します。「&&」の両側が真の時、このブロックも真になるという役割のブロックで、大なり、小なり、イコールなどと同様、条件分岐と併せて使用されるケースが多く見られます。
使用例 もし「Aキー」と「スペースキー」が同時に押されたら
if(Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.Space))
{
//ここにAキーとスペースキーが同時に押されたときの処理を記載
}
または
Unity で「または」は |(パイプ)記号を2つ並べ「||」で表記します。「||」をはさむ両側のいずれか一つでも真ならこのブロックも真、それ以外なら偽になります。これも大なり、小なり、イコールなどと同様、条件分岐と併せて使用されるケースが多く見られます。
使用例 もし「Aキー」または「左矢印キー」のいずれかが押されたら
if(Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.RightArrow))
{
//ここにAキーまたは左矢印キーが押されたときの処理を記載
}
ではない
「ではない」(否定)を表す記号は「!」(エクスクラメーション)です。条件文にの内部の初めに使用すれば、後続する条件が「偽」の時「真」となり、「真」の時「偽」となります。
使用例 もしどのキーも押されていなければ
if(!Input.anyKey))
{
//どのキーも押されていないときの処理を記載
}
また「=」と組み合わせ「!=」とすることで、不等号を表します。
使用例 もしx座標が0でなければ
if(transform.position.x != 0)
{
// x座標が0でないときの処理を記載
}
りんご と ばなな(文字列の結合)
Unityで文字列を結合するには「+」の記号を使います。足し算と同じですが、「+」記号は左右に数字や数字型の変数がある場合は加算演算子として、文字列がある場合は結合演算子として振る舞います。
使用例
変数:a を 1から10までの乱数にする
変数:b を 1から10までの乱数にする
a × b = a*b と表示する
int a = Random.Range(1, 10);
int b = Random.Range(1, 10);
Debug.Log(a + "×" + b + "=" + a * b);
「りんご」の1番目の文字
Unityで文字列の n番目の文字を取得するには 対象の文字列に続けて[n]と表記します。nはスクラッチと違い、0から始まります。
例えば文字列:str の1番目の文字は、str[0] と表記します。
使用例
変数:n を宣言
変数:s に文字列「こんにちは!」を代入
6回繰り返す
文字列 s の n 番目の文字を言う
n をインクリメント
int n = 0; //取得する番号
string s = "こんにちは!"; //文字列
for (int i = 0; i < 6; i++) //6回(文字列の数)繰り返す
{
Debug.Log(s[n]); //文字列のn番目
n++; //n をインクリメント
}
「りんご」の長さ
Unity で文字列を扱う場合、文字列は配列というデータとして振る舞います。配列は 「
Length」というプロパティを使うことでその要素数を取得することが出来ます。
文字列:str の長さは、str.Lngth になります。
上の例文では、文字列の長さがの情報が事前に把握できていたため6回繰り返すが使えましたが、文字列が毎回変動する場合は以下のようになります。
使用例
変数:n を宣言
変数:s に文字列「こんにちは!」を代入
「文字列の長さ」回繰り返す
文字列 s の n 番目の文字を言う
n をインクリメント
int n = 0; //取得する番号
string s = "こんにちは!"; //文字列
for (int i = 0; i < s.Length; i++) //「文字列の長さ」回繰り返す
{
Debug.Log(s[n]); //文字列のn番目
n++; //n をインクリメント
}
「apple」に「 a」が含まれる
文字列に特定の文字が含まれるかどうかを判定するには「Contains」メソッドを使用します。Contein()メソッドは「 "test".Contein("s") 」の様に頭に全体文字列、カッコの中に調査対象の文字を入れ、調査対象の文字が含まれていれば「true」を、そうでなければ「false」を返します。
使用例
string str = "こんにちは!"; //変数:str に "こんにちは!" を代入
string s = "ん"; //変数:s に "ん" を代入
if (str.Contains(s)) //もし str が s を含んでいれば
{
//「こんにちは!」に「ん」は含まれる と表示する
Debug.Log("「" + str + "」に「" + s + "」は含まれる");
}
〇を〇で割った余り
割った余りを求める式は「剰余算」と呼ばれ、% を使って表記されます。
例えば 15 を 10 で割った時の余りを求めたい時は「15 % 10」 のように記述します。
使用例
変数:n を宣言
以下の処理を10回繰り返す
もし n を 3 で割った余りが 0 なら
※3の倍数なら
n は 3 の倍数という
nを1ずつ増やす
for(int n = 1; n <= 10; n++)
{
if (n % 3 == 0)
{
Debug.Log(n + "は3の倍数");
}
}
〇を四捨五入
Unityで四捨五入をする際は Math.Round()メソッドを使用します。ただし、Mathクラスは初期設定では組み込まれていないので、NameSpace で 「using System;」を使いMathクラスを読み込みます。
Round()メソッドには2つの引数を指定します。第一引数には四捨五入したい数字、第二引数には四捨五入する桁数を指定します。例えば小数点第2位で四捨五入したい場合は 2 を、整数部分で四捨五入したい場合は 0 を、1の位を四捨五入して10の位で丸めたい場合は -1 を指定します。
使用例 Mathクラスの利用準備
using System;
1234.567 を四捨五入
float num = 123.456f; //変数の宣言
Debug.Log(Math.Round(num, 2)); //小数点下2桁で四捨五入、123.46 と表示
〇の絶対値
演算ブロックの最後は「〇の絶対値」ですが、絶対値の部分はドロップダウンリストから、切り捨て、切り上げ、平方根などの数値の処理の他、サイン、コサイン、タンジェントのような三角関数から微積分に使用する関数まで、様々な演算の種類を指定することが出来ます。
ここではこの中から使用頻度の高いものをいくつかご紹介します。
絶対値 数字の絶対的な大きさを表す値(負の値の時はマイナスをとった値)
float num = -123.45
Debug.Log(Mathf.Abs(num)); // 123.45 と表示
切り下げ Mathf.Floor を使用し一度整数部分で切り捨て、再度小数に戻します
float num = 123.45
Debug.Log(Mathf.Floor(num * 10) / 10); // 123.4 と表示
切り上げ Mathf.Ceiling を使用し一度整数部分で切り上げ、再度小数に戻します
float num = 123.45
Debug.Log(Mathf.Ceiling(num * 10) / 10); // 123.5 と表示
平方根 Mathf.Sqrt を使用します
float num = 100
Debug.Log(Mathf.Sqrt(num)); // 10と表示
Sin 三角関数サインは Mathf.Sin を使用します
// x軸方向に波の動きを作る
transform.position = new Vector3(Mathf.Sin(Time.time),0,0);
Cos 三角関数コサインは Mathf.Cos を使用します
// x軸方向のSinの動きに加え、y軸方向にCosを使うことで円を描く動きを作る
transform.position =
new Vector3(Mathf.Sin(Time.time),Mathf.Cos(Time.time),0);
Tan タンジェントは3Dモデルの詳細な設定をする上で活用します。
flort t = Mathf.Tan(Time.time);
ファイブボックスでは、スクラッチはもう卒業、という方向けにUnityの個別指導のオンラインレッスンを行っています。
ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。
Comments