見出し画像

Unityが分からないから勉強してみた【Unity学習Log #3】

当記事をご覧頂きありがとうございます。
この記事はUnity初心者の私が学んでいく過程で分かったこと・メモしておきたいこと・躓いてしまったこと等をまとめる記録となっています。
ナンバリングしていますので、同じく初心者の方の道しるべの一つになれば幸いです。

Create with Code - コードを使ってゲームを作ろう

#2に引き続きこちらのコースをしました。
前回ユニット2~3、今回はユニット4~5です。

ユニット4

ステージからボールを落とすゲームです。
落とす度にボールが一つずつ増えてスポーンしてきます。

学んだこと

・正規化 normalized

enemyRb.AddForce((player.transform.position - transform.position).normalized * speed);

このユニットで使った一文。
このスクリプトで「プレイヤーに向かって敵が追いかけ続ける」ようになる。
細かく分けると、

  • Rigidbodyの物理演算を使っている

  • AddForceの「対象に運動の力を加える」で敵を移動させる

  • player.transform.positionでプレイヤーの場所を取得

  • transform.positionで敵の場所を取得

  • position同士を引くことでプレイヤーから敵の間の距離をVector値として取得できる

  • 正規化 normalizedすることで、Vector値の距離を最小値0か最大値1にする
    ⇒追いかけ続けるという特性上、数値を揃えると都合良くなるため正規化を使う

  • speedは変数、速さを変えられる

物理演算と聴くと敬遠したくなるが、一つ一つ嚙み砕くと何となく分かった気がする。

・ゲームオブジェクトの親子関係座標
⇒親子関係にして親のオブジェクトをシーンビューでぐるぐる動かすと、子のオブジェクトも一緒にぐるぐる動く。
global座標はワールド座標の原点(0,0,0)から見た座標。
local座標は親子関係のゲームオブジェクトで、親のオブジェクトから見た相対的な座標。
A(1,0,0)
B(3,0,0)
→Aを親にBを子にするとB(2,0,0)になる

・void 好きなメソッド名()
⇒Start()とかで下の呼び方すると色々できる。
整理したい時に便利。

メソッド名();

・void 好きなメソッド名(int 変数名)
⇒引数!

メソッド名(1);
メソッド名(2);

void メソッド名(int 変数名){ Debug.Log(変数名);}

とすると、コンソールに1・2と順に表示される。

・retrun;で値を返す
⇒void使えない。
型をメソッドのところに入れると値のやり取りができる。

Int a=メソッド名(1,2);
Debug.Log(a);

int メソッド名(int 変数名1,変数名2){ return 変数名1+変数名2;}

とすると、コンソールに3と表示される。

・IEnumerators と WaitForSeconds()のコルーチンで「ちょっと待った!」
⇒StartCoroutineでコルーチンの場所を呼んでくる。
処理を7秒待つようなことができる。

・変数名++で足し算!
⇒1足し算する。

ユニット5

クリックで箱を壊してポイントを集めていくゲームです。
ドクロはポイントが減ってしまいます。
難易度を変えると箱のポップスピードが上がります、

学んだこと

・2Dモード・3Dモードの切り替え方
⇒メニュー画面を使うような時に便利。

・addTorqueで回転力を加える
⇒キューブ型のオブジェクトとかが、ぐるぐる回りだす。
addForceと同じように使っていく。

・while(条件)でループ
⇒条件が続く限りループし続ける。

・public List<GameObject> targets; で配列のように
⇒同じ型のものを指定したいときに使用。
配列みたいにできるし、prefab入れられるしで整理にも使えそう。

・private void OnMouseDown() でマウスでクリックしたときのイベント
⇒クリックしてオブジェクトを消すとか、イベントを設定したいときに。

・(object).gameObject.SetActive(true) でゲームオブジェクトの有効化
⇒見えなくしていたゲームオブジェクトを見えるようにする鍵。

・On Click() でボタンを押すイベント発生
⇒クリックイベント発生!
inspectorで設定するもいいけど、スクリプトで設定するのも楽しい。
そのときはaddlistener使う。

・平面のアンカーポイントを設定すると画面の場所指定
⇒左上にスコアを表示し続けたいときに、アンカーポイント指定で画面サイズ変わっても左上に固定できる。
まずアンカーポイント、その後位置調整を癖にする。

コースを通した感想

英語いっぱい・初めての学習方法

英語がずっと!
解説動画の日本語字幕がユニット3途中から無くなり、英語字幕で見るようになったため頭がパンクしそうでした。
またC#スクリプトも基本英語ベースなので、細かなニュアンスをよく理解できずにいたところが痛かったです。

そういった点では英語話者の方や、翻訳系統のお仕事をされていて、プログラミングをしたことのない方にUnityのC#スクリプトは相性がいいと思いました。
コースの動画を見ながら進めていく点から、やっていくことが明確なため勉強しやすい方法ではないでしょか。

上記の点でやっていくことを動画で、動画外で「こんな操作をしてください」と要点のまとまった部分をまとめて下さっていたため、

  • スクリプトを実際に打って動作確認

  • わからないスクリプトを「uinty スクリプト」で調べて理解

を繰り返しました。

言語は分からずとも操作は分かる。
人生で初めて「解説動画を見ながら、分からないことを一人だけで勉強する」方法で学習しているため、とても新鮮な気持ちでした。

基本の形⇒付属品をくっつけていく

開発の順番でした。
まず最低限やりたいことを実装する。(基本の形)
そこから付属品をくっつけていき、完成品を豪華にしていく。

動作確認しながらちょっとずつ増えていく機能は心躍りました。
(ユニット4では、下記の感じ。
「プレイヤーに向かってくる敵【基本機能】」
「敵をランダムスポーンにする、ステージから落とすと数が増えていく
【付属品】」)


なんとなく英語の単語を覚えたり、開発の順番を知れたりと勉強が少し楽しく感じる点から、ユニット2~5を集めたこのコースができて良かったです。

                     2023年7月1日 とも可

いいなと思ったら応援しよう!