top of page

スクラッチのその次は?スクラッチブロック→Unityコード 変換表 「演算」編

スクラッチから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;
 
スクラッチブロック 1から10までの乱数

〇から〇までの乱数


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番目の文字という

変数: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を3で割った余り

変数: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


ファイブボックス 上田教室

bottom of page