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日 とも可