6th week - dsuz/unity-game-dev1-1st-term-2020 GitHub Wiki
今回のテーマは「UI」と「機能の追加」です。
- UI
- スコアを表示する
- ゲームオーバーを表示する
- 機能を追加する
- 内部的に得点を管理していた変数を画面に表示する
- スペースキーを押したら台を揺らす(ボールに力を加え、カメラを揺らす)
- ボールの速度を制限する
- ボールを逃したら(ボールが killzone に入ったら)ボールを消して GAME OVERと表示する
今回のプロジェクトをインポートすると、/Assets/Scenes/GameScene が上書きされます。そのため、GameScene で作業していた人は、これまでの作業内容が失われないように Duplicate (Ctrl + D) して作業内容を退避しておいてください。
- 前回までのプロジェクトがない人は、新しくプロジェクトを作って以下をインポートします
- 前回までのプロジェクトがある人は、6th_week_assets.unitypackage をプロジェクトにインポートします
- ブロック崩しのシーンは /Assets/Scenes/GameScene です
シーン "/Assets/Scenes/UISample" を開き、以下を理解する
- Text オブジェクト(Text コンポーネントがアタッチされたオブジェクト)の作り方
- ゲーム空間 (world space) と UI 空間 (screen space, overlay) が異なる空間であること
- Rect Transform コンポーネントの設定方法、特に Anchor Presets
- Text コンポーネントの設定項目
- Canvas 特に Canvas Scaler コンポーネントの UI Scale Mode プロパティの設定値 Scale With Screen Size
画面の右下に以下のような操作説明を表示してみましょう。
A/D: パドルを左右に動かす
←/→: パドルを左右に動かす
Space: 台を揺らす
フォントを変えてみましょう。
- 日本語フリーフォント
- Unity でフォントを変える方法
TextMesh Pro でさらに文字を装飾してみましょう。
※)フォントを画像に変換するため、多くの文字を変換しようとするとそれだけ時間がかかります。
ScoreManager.AddScore() にスコアを表示する機能を追加しています。
BallController.Update() でその処理をしています。また、CameraController コンポーネントにカメラを揺らす機能を追加してそれを呼んでいます。
BallController.Update() でその処理をしています。
KillzoneController でその処理をしています。
スペースキーを押してボールに力を加えた後、数秒間はスペースキーを押してもボールに力が加わらず、数秒経ったらまたスペースを押してボールに力を加えることができるようにしてみましょう。
参考: シーン TimerSample
- UI はゲーム空間とは異なる空間に存在し、設定が異なる
- 小さい命令を組み合わせて、機能を作ることができる
- UI
- Unity の教科書: 4-5, 5-8, 8-7