6th week - dsuz/unity-game-dev1-1st-term-2020 GitHub Wiki

今回のテーマ

今回のテーマは「UI」と「機能の追加」です。

  1. UI
    1. スコアを表示する
    2. ゲームオーバーを表示する
  2. 機能を追加する
    1. 内部的に得点を管理していた変数を画面に表示する
    2. スペースキーを押したら台を揺らす(ボールに力を加え、カメラを揺らす)
    3. ボールの速度を制限する
    4. ボールを逃したら(ボールが killzone に入ったら)ボールを消して GAME OVERと表示する

プロジェクトの準備

今回のプロジェクトをインポートすると、/Assets/Scenes/GameScene が上書きされます。そのため、GameScene で作業していた人は、これまでの作業内容が失われないように Duplicate (Ctrl + D) して作業内容を退避しておいてください。

UI を設定する

UI の置き方

シーン "/Assets/Scenes/UISample" を開き、以下を理解する

  1. Text オブジェクト(Text コンポーネントがアタッチされたオブジェクト)の作り方
  2. ゲーム空間 (world space) と UI 空間 (screen space, overlay) が異なる空間であること
  3. Rect Transform コンポーネントの設定方法、特に Anchor Presets
  4. Text コンポーネントの設定項目
  5. Canvas 特に Canvas Scaler コンポーネントの UI Scale Mode プロパティの設定値 Scale With Screen Size

課題 1

画面の右下に以下のような操作説明を表示してみましょう。

A/D: パドルを左右に動かす

←/→: パドルを左右に動かす

Space: 台を揺らす

課題 2

フォントを変えてみましょう。

  1. 日本語フリーフォント
  2. Unity でフォントを変える方法

課題 3 発展課題

TextMesh Pro でさらに文字を装飾してみましょう。

  1. TextMesh Pro でタイトル文字列を作る(前編)
  2. TextMesh Pro でタイトル文字列を作る(後編)
  3. TextMeshProで日本語フォントを使用する【Unity】

※)フォントを画像に変換するため、多くの文字を変換しようとするとそれだけ時間がかかります。

機能の追加

スコアを表示する

ScoreManager.AddScore() にスコアを表示する機能を追加しています。

スペースキーを押したらボールにランダムに力を加える

BallController.Update() でその処理をしています。また、CameraController コンポーネントにカメラを揺らす機能を追加してそれを呼んでいます。

ボールの速度を制限する

BallController.Update() でその処理をしています。

ボールを逃したらゲームオーバーにする

KillzoneController でその処理をしています。

課題 4

スペースキーを押してボールに力を加えた後、数秒間はスペースキーを押してもボールに力が加わらず、数秒経ったらまたスペースを押してボールに力を加えることができるようにしてみましょう。

参考: シーン TimerSample

まとめ

  1. UI はゲーム空間とは異なる空間に存在し、設定が異なる
  2. 小さい命令を組み合わせて、機能を作ることができる

参考資料

  • UI
    • Unity の教科書: 4-5, 5-8, 8-7
⚠️ **GitHub.com Fallback** ⚠️