Categories: unitylibrary

はじめてでも安心!Unityの教科書 補足一覧

ここでは、Unity参考書のページでも紹介しました↓の本に関連する補足事項を一覧として掲載しています。

Unity2018完全対応版はコチラ↓

Unityの教科書 Unity 2018完全対応版 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)

Unity2019完全対応版はコチラ↓

Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座

この本はUnity初心者・プログラミング初心者でも手軽に始められるように、基礎的な説明や、それを補足するため図・ネコのイラストが充実しており、私ワガハイもC#スクリプト作成の基本を理解するために非常に助けられました。個人的に、初心者には是非オススメしたい1冊です!

ただそれがゆえ、少し細かい(マニアックな)ネタや、関連する話については敢えて説明を省いてある箇所があります。まぁそういった応用的な話はUnityに慣れてきたら自分で調べろって話ですね(^^;)

そこで、私ワガハイ的に、「この本を卒業して次のステップに向かう際、こういったことが気になる?調べるんじゃないかな?」と思った事柄について以下に書き並べています。是非参考になればと思います。

補足事項一覧(随時更新)

<2-4 変数を使ってみよう>

%:余り

<2-5 制御文を使ってみよう>

かつ(and):&&、又は(or):||

switch文

for文中でのbreak、continue、goto

<4-4 Tips ワールド座標系とローカル座標系>

transform.Translate(0, -1.0f, 0, Space.World)

補足事項詳細(随時更新)

<2-4 変数を使ってみよう>

・+:足し算、-:引き算、*:掛け算、/:割り算、%:余り ←余りも覚えておくと便利です!

Debug.Log(10 % 3);
//10÷3=3…1 ←この「余り1」が算出される

出力結果:

<2-5 制御文を使ってみよう>

・if文の条件式を書く部分で、2つの条件が関わる時、

「もし条件Aかつ(and)条件Bなら」(両方の条件を満たす時のみ)→ if (A && B) { }

「もし条件A又は(or)条件Bなら」(片方の条件を満たしてればOK)→ if (A || B) { }

int Math = 55; 
int English = 85;
if (Math >= 80 && English >= 80){
// どちらの条件も満たす場合のみtrue
    Debug.Log("合格!");
} else {
    Debug.Log("不合格!"); 
}

出力結果:

・if文の親戚で、switch文というものもあります。意味はif文と変わりませんが、書き方は以下のようになります。

int status = 0;
switch (status){
// switch()←カッコ内に入る変数はintかstringのみ!
    case 0:
        Debug.Log("normal");
        // status = 0 の時はコチラの分岐
        break;
    case 1:
        Debug.Log("abnormal");
        // status = 1 の時はコチラの分岐
        break;
    default:
        Debug.Log("?????");
        // status = 0でも1でもない場合
        break;
}

出力結果:

・for文関連の用語は色々ありますので覚えておくと便利です!

break:ループを途中で抜け出す(for文の外に出る)

continue:次のループに移行(ループは続く)

goto aaa:「aaa:」と書いてる箇所までジャンプ

これらの文はちょっと役割が似ていてややこしいので、下のスクリプト文も参考にして下さい。

int i;
int j; 
int a;

a=0;
for(i=0; i < 5; i++){
    //通常のfor-loop
    a++;
}
Debug.Log("a1:"+a);
Debug.Log("i1:"+i);

a=0;
for(i=0; i < 5; i++){
    //for-loopをbreakで抜ける
    if(a==3) break;
    a++; 
}
Debug.Log("a2:"+a);
Debug.Log("i2:"+i);

a=0;
for(i=0; i < 5; i++){
    //continueで次のloopへ
    if(a==3) continue;
    a++;
}
Debug.Log("a3:"+a);
Debug.Log("i3:"+i);

a=0;
for(i=0; i < 5; i++){
    for(j=0; j < 5; j++){
        //gotoで指定の箇所にジャンプ
        if(a==3) goto AAA;
        a++; 
    }
}
AAA:;
Debug.Log("a4:"+a);
Debug.Log("i4:"+i);
Debug.Log("j4:"+j);

出力結果:

<4-4 Tips ワールド座標系とローカル座標系>

・本Tipsに記載の通り、transform.Translateメソッドはオブジェクトのローカル座標系で計算されますが、transform.Translate(0, -1.0f, 0, Space.World)と書くことで、ワールド座標系での移動と計算されます。オブジェクトを回転させたり移動させたり、という場合は注意しましょう。

例1:transform.Translate(0, -1.0f, 0)…移動はローカル座標系(1秒ごとに90°回転する)なので、下動画のようにグルグル回るような移動になります。

float span = 1.0f;
float delta = 0.0f;
//以下はUpdateメソッド中に
        this.delta += Time.deltaTime;
        if(this.delta > this.span){
            this.delta = 0.0f;
            //オブジェクト回転 
            transform.Rotate(0, 0, 90.0f);
            //ローカル座標系で(0,1,0)方向に進む…回転すると進行方向が変わる
            transform.Translate(0, 1.0f, 0);
        }

例2:transform.Translate(0, -1.0f, 0, Space.World)…移動はワールド座標系なので、下動画のように常に上に向かう移動になります(ローカル座標がどっち向いてようが関係なし)。

float span = 1.0f;
float delta = 0.0f;
//以下はUpdateメソッド中に
        this.delta += Time.deltaTime;
        if(this.delta > this.span){
            this.delta = 0.0f;
            //オブジェクト回転 
            transform.Rotate(0, 0, 90.0f);
            //ワールド座標系で(0,1,0)方向に進む…回転しても進行方向が変わらない
            transform.Translate(0, 1.0f, 0,Space.World);
        }

r_yoshi

Share
Published by
r_yoshi

Recent Posts

ゲーム「ワガハイ式テトリス」 制作手順4-2

監督スクリプトを記述しよう(ブ…

5年 ago

動的配列(List型)のご紹介と活用法

こちらのページでは、Unity…

5年 ago

ゲーム「ワガハイ式テトリス」 制作手順4-1

監督スクリプトを記述しよう(ブ…

5年 ago

ゲーム「ワガハイ式ビリヤード」 制作手順2-5

監督スクリプトを記述しよう こ…

5年 ago

ゲーム「ワガハイ式テトリス」 制作手順2-1

テトリミノに付けるスクリプトを…

5年 ago

ゲーム「ワガハイ式ぷよぷよ」 制作手順3-2

各ぷよに付けるスクリプトを記述…

5年 ago