3rd term extra - dsuz/unity-game-dev1-3d-2019 GitHub Wiki

Extra

第3ターム(以前)で扱った技術を組み合わせてできるデモを作ってみました。以下のような画面になります。

前回までの終了状態にするには

前回までのプロジェクトがない人は以下のようにしてプロジェクトを準備します。

  1. 新たに Unity のプロジェクトを作る
    1. テンプレートは 3D を選ぶ
  2. Asset Store から Basic Motions Pack をプロジェクトにインポートする
  3. SDユニティちゃん 3DモデルデータVer 1.01 をダウンロードし、インポートする
    • このデータをインポートすると以下のコンパイル エラーが出るので、該当行をコメントアウトもしくは削除する
    • Assets\UnityChan\Scripts\AutoBlinkforSD.cs(8,23): error CS0234: The type or namespace name 'Policy' does not exist in the namespace 'System.Security' (are you missing an assembly reference?)
  4. 3rd_week_completed.unitypackage をダウンロードし、インポートする
  5. 4th_week_asset.unitypackage をダウンロードし、インポートする
  6. 5th_week_assets.unitypackage をダウンロードし、インポートする
  7. 6th_week_assets.unitypackage をダウンロードし、インポートする

デモを実行するには

  1. 前回までのアセットが準備されているプロジェクトに、Cinemachine が入っていなければ Package Manager から Cinemachine を追加する
    • Cinemachine が入っているかどうかはメニューで判断できる
    • Cinemachine が入っている場合は、メニューの Component と Window の間に Cinemachine というメニューが追加されている
  2. 3rd_term_extra.unitypackage をプロジェクトにインポートする
  3. /Assets/Scenes/Demo シーンを開いて実行する
    • WASD でキャラクターを動かし、Space でジャンプ、左 Ctrl またはマウスの左クリックで攻撃ができる
    • 攻撃はタイミングよく押すことで3つまで攻撃をコンボできる(パンチ→キック→両手パンチ)

デモの説明

各機能は以下のように使われている。

  1. 各キャラクターのアニメーションの制御に Mecanim (Animator/Animator Controller/Animation) を使っている
  2. 敵の動きにナビゲーションシステムを使っている
  3. プレイヤーの接地判定や移動方向の制御に Ray(Physics.Linecast())、Transform.TransformDirection() を使っている
  4. 攻撃処理に Animation Event を使っている
  5. カメラがプレイヤーを追尾するのに Cinemachine を使っている

※)カメラから飛ばす Raycast は使っていない

さらに学ぶために

このデモを改造していきましょう。例えば以下のような改造を加えるとよいでしょう。

  1. Skybox を追加する
  2. プレイヤーや敵のモデルを差し替える
  3. プレイヤーや敵のアニメーションを差し替える
  4. カメラの動きを変える
  5. マテリアル・テクスチャ・背景モデル等を Asset Store からインポートしてマップを作る
  6. 効果音を加える
  7. (攻撃が当たった時などに)エフェクトを加える
  8. スコアを実装し、敵を倒したら点が入るようにする
  9. 敵がプレイヤーに近づいたら攻撃してくるようにする
    1. プレイヤーのライフを実装し、敵に攻撃されたらライフが減るようにする
    2. ライフが 0 になったらゲームオーバーになる
  10. プレイヤーに武器を持たせる
    1. 武器の種類により攻撃範囲が変わるようにする
  11. 敵を一撃では倒せないようにする
    1. 敵にダメージを与えた時にはそれに合ったアニメーションが再生されるようにする
    2. 攻撃や武器の種類により与えるダメージ量が変わるようにする
  12. 異なる攻撃方法を追加する
    1. 飛び蹴りなど