節電鯖民の遊び場

01-練習:とりあえずVR抜きにしてTPSの大地生成とキャラクター操作を試してみる

最終更新:

mcforum

- view
メンバー限定 登録/ログイン
とりあえずほぼほぼ手順はコレ

目次


前提

  • 上記記事のUnity版数は 5.3.4
  • この記事執筆に際しインストールしたのは最新版…の1版前かも(Unity2019.1.0f2)
  • デバッグ用にVisualStudioを入れておく。多分2015のCommunityあたり。

手順

  • 概ね記事に従えばいいが、ちょいちょい項目が変わっていて詰まった所があるのでメモしていく。

1.Unityのプロジェクト作成

  • 1.1.とりあえずUnity入れたばかりなので外部Asset系は全部後入れでも良さそう(後回し)
  • 1.2.既に環境があるならAdd Asset PackageでStandardAssetを追加しておいても良い(と思ったがもしかするとこの手順だと使わないかもしれない)
  • 1.3.テンプレートはとりあえず「3D」



2.大地の作成

  • 2.1.Asset Storeにアクセスして、「Nature Starter Kit2」を入手、インポート
  • 2.2.記事だと、「HierarchyウィンドウでTerrainを選択し」といきなり配置済みの状態となっているが、バージョンの違いか手順違いにより何もヒエラルキーには配置されていないので、自分で配置する。
  • 2.2.1.プロジェクトウィンドウの「NatureStarterKit2」→「Scene」→「New Terrain」をヒエラルキーにドロップしてサンプルっぽい大地が表示されるのを確認

  • 2.3.配置したTerrainを選択すると、インスペクターにツール類が表示されるので、がりがりテクスチャや高低をペイントして大地を作る(記事でも触れられてるがシムシティライク)

  • 2.4.簡単にカンで使い方を書いていく。
    • 2.4.1.一番左のボタン「Create Neighbor Terrains」:Sceneウインドウで隣接するマスを選択することで、そこに新規の平野が作られるっぽい。境界はキレイに繋いでくれる。別オブジェクトとして配置されるので、現在位置から表示非表示変更するような制御をするのかなぁ。

    • 2.4.2.左から二番目のボタン「Paint Terrain」:ブラシサイズと不透明度、ブラシ形状を選んで「Raise or Lower Terrain」で高低の増減、「Paint Texture」でテクスチャ、「Set Height」で高低を固定値で設定、「Smooth Height」で高低を均し、「Stamp Terrain」で指定したたかさの山を設置するペイント操作がそれぞれ行える。

    • 2.4.3.左から3番目(中央)のボタン「Paint Trees」:同じくブラシで植樹していくモード。木が登録されていないので、「EditTree」ボタンを押して、Assetsの「NatureStarterKit2」→「Nature」からtree01~04あたりを登録して木を生やす。
      • なおTree HeightのRandom?のチェックがついた状態でバーの幅を弄ると生やす木の高さがランダムになる。

    • 2.4.4.右から2番目のボタン「Paint Details」:左クリックで草をペイント、SHIFT+左クリックで除去。Detailsの中から草を選んでペイントする。

    • 2.4.5.一番右のボタン「Terrain Settings」生成に関わる設定全般。細かくなるので説明は割愛するが、描画距離に関わるDistance系の設定を含むTree&Detail Objectなんちゃらの設定は描画速度に関わってくるのでよく弄ることになるかもしれない。



3.キャラクターの配置

  • 3.1.Asset Storeから「Unity-Chan! Model」を入手、インポートしておく
  • 3.2.参考記事では「Modelsフォルダ内のunitychan.fbxを」と書いてあるが、現時点版ではそれらしいものがないので「unity-chan!」→「Unity-chan! Model」→「Prefabs」→「for Locomotion」の「unitychan_dynamic_locomotic」をそのまま「Scene」ウインドウにドロップして配置する。ヒエラルキーにドロップした場合は原点あたりに投下されるので、該当項目をダブルクリックでカメラフォーカスして移動させるか数値入力等で配置したい所に移動する。

  • 3.3.参考記事では「Animators->UnityChanLocomotions」の設定や、「Scripts->UnityChanControlScriptWithRgidBody」による操作スクリプトの設定など実施しているが、3.2で配置したプレハブには既に設定済みなので対処不要(ただし、コンパイルエラーが出てるので後ほど修正する)。

  • 3.4.カメラの設定
    • 3.4.1.デフォルトのカメラは無効化する(削除かインスペクター最上部のチェックを外す)
    • 3.4.2.Assetsの「unity-chan!」→「Unity-chan! Model」→「Prefabs」→「for Locomotion」に入っている「Main Camera(Prefab Asset)」を配置する。このカメラじゃないとスクリプトでジャンプ等の動作でカメラに細工してる処理が上手く動かず、ジャンプした瞬間に一時停止させられたりする。詳細はソース読んでないので分からない。
追記:もしかするとTagにMainCameraが付いてなかっただけかもしれない。

  • 3.5.その他設定

    • 3.5.1.記事にある「当たり判定の修正とカメラ追尾」に似た調整は必要だが、現時点ではとりあえず置いておく。まずは動かしてみる。

※参考記事にある「Capsule ColliderのRadiusとHeightをゼロ」にする対処は、やってみたらUnity-Chan!が地面を突き抜けてしまう結果に。それもそうだな・・・



4.スクリプトの修正(unityのランタイム仕様変更による影響)


  • 4.1.ユニティちゃんのオブジェクトを選択するとインスペクターに並ぶ各種スクリプトに黄色い三角形が表示され、コンパイルエラーが出ているのがわかる。

  • 4.2.とりあえずエラーしているスクリプトをダブルクリックする。VisualStudioが起動するので、上部の「Unityにアタッチ」を押す。するとビルドエラーするのでエラー一覧から赤丸になってるエラーをダブルクリックして該当箇所に飛ぶ。

  • 4.3.ひとつずつエラーを解消していく

    • 4.3.1.AutoBlink.cs の「エラー CS0234 型または名前空間の名前 'Policy' が名前空間 'System.Security' に存在しません」については、該当のusing宣言自体をコメントアウトしてしまう。(この解決方法を示していたサイトでは良く分からないが動くようになった、みたいなふんわり感だったが、名前空間の宣言削っても問題ないなら問題ないのだろう…)

    • 4.3.2.「DrawProceduralIndirect」が旧形式だってエラーが出てたはずだが、2回目のプロジェクト作成だと出なくなっている・・・もし出たら「DrawProceduralIndirect」を「DrawProceduralIndirectNow」に直せば多分大丈夫?



とりあえずこの時点で再生ボタン押せば大体移動したりジャンプしたりは行ける。



5.エフェクトをかける


  • 5.1.標準のStandardAssetにEffectなさそう…「NatureStarterKit2」→「Standard Assets」→「Effects」→「ImageEffects」→「Scripts」にあった

  • 5.2.とりあえず記事にあったのを一通り試してみる。適用はC#のスクリプトをヒエラルキーのMainCamera(UnityChan用に追加したほう)にドロップして適用する

    • 5.2.1.「Antialiasing」アンチエイリアス、特にインスペクターの設定は弄らなくても大丈夫

    • 5.2.2.「Sun Shafts」空気中の霧に太陽光が線を作るアレ。設定で程よい感じにする。

    • 5.2.3.「Screen Space Ambient Occulusion」草の影をアレしたりして自然に見せるやつ

    • 5.2.4.「Depth of Field」被写界深度設定

    • 5.2.5.「Color Correction Curves」色調変更

    • 5.2.6.「Vignette and Chromatic Aberration」画面隅を暗くしたりブラーかけたりする

    • 5.2.7.「Bloom」なんか光るやつ



とりあえず土台とキャラクター動かすのと、なんとなく雰囲気作りの方法は掴めた気がするのでこの記事はここまで。



謝辞
本ページ内で使用されているUnity-Chan!は以下の著作・ライセンスの元使用しています。
© Unity Technologies Japan/UCL
http://unity-chan.com/contents/license_jp/
目安箱バナー