ゲーム企画(前回)を企画倒れさせないためにも、Tutorialはひとまずこなしてみた。このBlogでも途中経過を記録していきたいため、作成した内容をgifで残せるように、Recorderについても調べてみた。
Recorderについて
準備
(Unity Hubではなく)作成したProjectにてRecorderをインストール。
Window > Package Management > Package Manager
Recorderを開く
インストールしたら、Windowメニュー/GeneralからRecorderのWindowを出す:
Gifの撮影
Gifを撮るには、EncorderをGIF Encorderに変えるだけ。
| その他、Target FPSやQualityなど設定項目は色々あるが、デフォルトでさほど問題なさそう |
停止後にProjectフォルダー内のRecordingフォルダに保管される。
| ひとまずTutorialの成果 |
【Launch Condition】バージョン0.1
作成を進めるに当たって一歩ずつ徐々に進めるための提案をChatGPTからもらう:
ーーー
この手の企画で一番よくある失敗は「最初から完成形を作ろうとして溺れる」こと。
Launch Condition は特に、段階を刻むほど気持ちよく育つタイプだ。
ここでは
Unityに慣れる × モチベを削らない × 企画を壊さない
この3点を同時に満たす進め方を出す。
結論から言うと最初のゴールは「地球から撃って、きれいな放物線が描ける」だけでいい。
ーーー
ひとまず最初の一歩として、ChatGPT推奨の以下のフェーズを進める:
- フェーズ0: Unityに慣れる ⇛ ✔ Tutorialはこなしたので済
- フェーズ1: “撃つ”だけのロケット
- フェーズ2: 発射条件を“触れる”ようにする
フェーズ1: “撃つ”だけのロケット
2D Projectを作成
Tutorialと同じく、Universal 2Dで新しいProjectを作成。
スプライトを配置
Hierarchyで新しいSpriteを作成:
Create > 2D Object > Sprites > (任意の形状)
スクリプト
ひとまず初速を与えて放物線軌道を描くだけのシンプルな動作を作成。
速度: Vector2 velocty;
重力: Vector2 gravity = new Vector2(0f, -9.8f);
Start() 初速条件:
velocity = new Vector2(1f, 10f);
Update() 計算毎の速度変化:
velocity += gravity * Time.deltaTime;
transform.position += (Vector3)(velocity * Time.deltaTime);
フェーズ1の結果
フェーズ2: 発射条件を“触れる”ようにする
フェーズ2では、発射角度と初速を設定できるようにする。ひとまずUIの作り込みは後回しにして、Inspector内で変更できるのみ。ついでにSpriteの角度も進行方向に合わせて回るようにした。
発射角度と初速設定へ変更
発射条件
射角: public float launchAngleDeg = 60f;
初速: public float LaunchSpeed = 10f;
Start() 初速条件:
float rad = launchAngleDeg * Mathf.Deg2Rad;
velocity = new Vector2(Mathf.Cos(rad), Mathf.Sin(rad)) * LaunchSpeed;
Update() 計算毎の速度変化:
velocity += gravity * Time.deltaTime;
transform.position += (Vector3)(velocity * Time.deltaTime);
if (velocity.sqrMagnitude > 0.0001f)
{
float RocketAngle = Mathf.Atan2(velocity.y, velocity.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(0f, 0f, RocketAngle - 90f);
}
UI追加
TutorialでもUI作成は行ったが、手順がいくつかあり少々分かりにくかったので念の為メモ:
Hierarchy > UI Toolkit > UI Document > [GameUIへ名前を変更]
Asset > Create > UI Toolkit > UI Document > [UILayoutへ名前を変更]
Game UIのSouce Assetに、作成したUILayoutをDrag & Drop
Spriteを選択しScirptのUi Documentに、GameUIをDrag & Drop
