5th week - dsuz/2019-1st-term-unity-game-development GitHub Wiki

プロジェクトが失われてしまった人は

新しく空の Unity プロジェクト (2D) を作り、4thWeekCompleted.unitypackage をインポートすることで先週の授業終了時の状態になる。

今回のテーマ

  • 音 (audio) を鳴らす
  • Sprite を入れ替える
  • Asset Store の使い方
  • Animation の基礎

今回使うアセットをダウンロードする

  1. 5thWeekAssets.unitypackage をダウンロードしてインポートする
    • 今回インポートするアセットは以下の通り
      • image

BGM を鳴らす

  1. シーンに空のオブジェクトを追加し、名前を BGM に変える
  2. BGM オブジェクトに AudioSource コンポーネントを追加し、以下の設定をする
    • AudioClip に Music Dreamy010 を追加する
    • "Play On Awake" にチェックが入っていることを確認する
    • Loop にチェックを入れる
  3. シーンを再生し、設定した BGM が鳴ることを確認する

説明

  1. AudioSource コンポーネントの意味と設定項目を確認していく
    • AudioClip - 鳴らす音声ファイル(アセット)
    • Play On Awake - オブジェクトが生成されたら自動的に再生する
    • Loop - チェックを入れるとループする
  2. AudioClip のアセットを Project ウィンドウで選択して、設定項目を確認し、プレビュー/再生を確認する
  3. カメラのオブジェクトに AudioLister が付いていることを確認する

効果音を鳴らす

  1. Ball オブジェクトに AudioSource コンポーネントを追加する
  2. Ball オブジェクトの BallController コンポーネント - Sfx に /Assets/Sounds/coin_26 をアサインする
  3. シーンを実行し、Ball が何かにぶつかるたびに効果音が鳴ることを確認する

説明

  1. 効果音を鳴らす処理は BallController に実装されている
  2. AudioSource.PlayOneShot(AudioClip clip) で、指定した clip を鳴らすことができる
    • AudioSource.Play() では、AudioSource.clip で代入(アサイン)した AudioClip を鳴らすことができる

課題 1.

現状では、Killzone に接触してミスとなった時も効果音が鳴ってしまう。この問題を解決し、Killzone に接触した場合には効果音がならないように修正せよ。

以下のポイントを考えた後に、実際に修正の作業を行うとよい。

  1. Killzone に接触した時に効果音が鳴るのはなぜか
  2. Killzone に接触した時には効果音を鳴らさないようにするにはどうすればよいか

課題 2.

以下の効果音を鳴らすように修正を加えよ。

  1. ゲームオーバー時に /Assets/Sounds/game_over_04 の効果音を鳴らす
  2. ゲームクリアー時(ブロックを全て破壊した時)に /Assets/Sounds/DM-CGS-12 の効果音を鳴らす

参考

Asset Store でアセットを探す

  1. Asset Store でアセットを探す時、Unity Editor 上で探す場合は Asset Store のウィンドウを Maximize するとよい
  2. カテゴリや価格等でアセットをフィルタリングすることができる

スプライトを差し替える

  1. Project ウィンドウから /Assets/Sprites/Block/BricksWide アセットを選択し、Inspector から Sprite Editor を起動する
    • image
  2. 各設定の意味を確認していく
    • スプライトシートとは何か

参考

課題 3.

  • /Assets/Sprites/Blocks/BricksWide 内のスプライト BricksWide_0~5 を使って TargetBlock のプレハブを 6 つ作り、TargetBlockGenerator にそれら 6 つのプレハブを設定してステージを自動生成せよ
    • image
  • このようなステージを作成せよ
    • image

キャラクターをアニメーションさせる

Animation と Animator Controller を作る

  1. /Assets/Sprites/Bird/player_fly_f01~03 をまとめて選択し、Scene または Hierarchy ウィンドウにドラッグ&ドロップする
    • image
  2. "Create New Animation" ウィンドウが New Animation を保存しようとするので、BirdFlapAnimation と名前を付けてアニメーションアセットを保存する(名前は後からでも変えられる)
  3. このアイコン image のアセットが勝手にできているので、名前を BirdAnimationController と名前を変える
    • image
  4. シーンを実行して、鳥が羽ばたいていることを確認する
  5. Hirarchy から鳥のオブジェクトの名前を Bird に変える

説明

  1. Animation とは何か
  2. Animator Controller とは何か
  3. Animation と Animator Controller の関係を知る

Animation の速さを調整する

自動的につくられた Animation では鳥の羽ばたく速さが速すぎるので、以下のようにして Animation の速さを調節する。

  1. Project ウィンドウで BirdAnimationController を選び、Window メニューから Animator ウィンドウを開く

    • BirdAnimation を選び、Inspector から Speed を 0.5 に設定する

    • image

  2. シーンを実行し、鳥の羽ばたく速さが遅くなっていることを確認する

説明

  1. Animator Controller の State について

課題 4. Ball の機能を Bird に移動(移植)する

下の動画のように、今まで Ball が持っていた機能を Bird に移植せよ。

image

ヒント

以下のように作業するとよいでしょう。

  1. Ball オブジェクトを無効(非アクティブ)にする
  2. Bird オブジェクトに BallController を追加する
  3. Bird オブジェクトに Collider(2D) を追加する
  4. Bird に対して各種コンポーネントの設定を Ball と比較しながら、Ball の設定を移していく
    • BallController に対する UI コンポーネント・Audio Clip の設定を適切に行うこと
    • タグも忘れずに設定すること
    • Rigidbody2d の Gravity Scale/Physics Material の設定も忘れずに変更すること
  5. StartButton の Button コンポーネント - On Click() に設定されている処理も忘れずに変更すること

参考

まとめ

  1. 音を出すためには AudioSource コンポーネントを使う
  2. スプライトはスプライトシートで提供されることがある
  3. Animation/Animator Controller を使ってアニメーションを制御する
  4. スプライトを入れ替えることで見た目を変えられる
  5. Asset Store の機能を使って効率的にアセットを探そう