【Unity】Horror FPS Kitでオリジナルのドアと鍵を作る


Unityの有料アセットであるHorror FPS Kitにはデフォルトでいくつかの鍵と、それであけることができる扉がバンドルされているのだが、自分でオリジナルの鍵を作って、オリジナルの扉を開けられるやり方がわかったのでメモしておく。

事前に必要なもの

  • 扉になるもの
  • カギになるもの
  • カギになるものの、2D画像
  • カギを入手したときの音
  • 扉を開けようと試みたときにあけられなかった時の音
  • 扉を開けたときの音
  • 扉を閉める音(今回は扉を開けるだけなので不要)



まずカギになるものをシーンに配置する。今回はいつか使おうと思っていた、首だけモンスター「MH_Green」を使う。



プロジェクトウィンドウ内の
内のObjectReferencesをダブルクリックして、開いたウィンドウ内に、ヒエラルキー上に設置した鍵のオブジェクトをドラッグ&ドロップ。(今のところ、このさぎょうの意味は理解できていない)

ヒエラルキー上の_GAMEUIを選択し、インスペクターの中から、Inventory(Script)内のInventory DatabaseにアタッチされているInventory Databaseをクリック。
すると、プロジェクトウィンドウ内に、現在_GAMEUIにアタッチされているInventory Databaseがハイライトされる。

ハイライトされたInventory DatabaseをダブルクリックしてInventory Databaseウィンドウを開く。
ウィンドウ上部の「+」ボタンを押す。

アイコンになる鍵の2D画像を、あらかじめプロジェクトウィンドウに読み込み、スプライト化しておく。
上記の画像の通り諸々セッティングする。


ヒエラルキー上の設置したカギになるオブジェクトのインスペクターを編集していく。
まず、レイヤーを「インタラクト」に変更。(忘れがちなので注意)

フローティングアイコンにチェックを入れることで、アイテムに近づいたときにアイテムを画面中央に合わせると、アイコンが出る。

Interactive Item(Script)をアタッチする
アイテムタイプ:インベントリー・アイテムを選択
エグザマイン・タイプ:オブジェクトを選択
メッセージタイプ:アイテムネームを選択
ディスエイブルタイプ:ディスエイブル・レンダラーを選択
インベントリー・アイテム:

エグザマインネーム・・・Examineは「診る」の意味。アイテムの名前を入力
アローエグザマインテイク・・・これにチェックすることでアイテム取得前に手に取ることができる。
エグザマインローテイト・・・Bothにすることで、アイテムを手に取ったときにグリグリと回転できる。

ピックアップサウンド・・・カギを拾い上げたときの音


扉になるオブジェクトをヒエラルキー上に配置する。
今回は上にスライドするタイプの石でできた扉を作った。

扉にのインスペクターを編集していく。

レイヤーをインタラクトに変更


アニメーションを追加し、今回は上にスライドするアニメーションを作成してた。


画像の通り諸々設定する。
Locked Textに文章を入力すれば、鍵を持ち合わせていない場合に鍵を開けようとトライすると入力したメッセージが表示される。

Animation / Open Anim:ここに入力するアニメーションの名前と、実際のアニメーションの名前が一致しないとダメ。


画像の通り設定する。

Blender テクスチャーペインティングの覚書

勉強したBlenderのテクスチャーペインティングのやり方をすぐ忘れてしまうので、ここにメモとして残しておこうと思う。
※ベイキングの覚書はこちら

色塗り

基本となる塗りつぶし


Texture Paint モードを選び
Active Tool And Workspace Setting / Texture Slots の+キーを押してBase Colorを選択
画像のように設定。※Colorは何でも良い


Shift + A / Color / Mix RGB
で作成したやつに上で作ったColorとベイキングの時に作成したキャビティマップをつなげる。
MixをOverlayに変更。Facを1.000にする(←意味あるか不明)


こんな感じに設定を変更

複数オブジェクトがある場合は
オブジェクトをAlt + 左クリックすると選択を変更できるようにする設定(画面左上のEdit / Lock Object Mode )のチェックを外しておくと良い。


Bleedを設定することで、Colorイメージにおいて、メッシュの外側にマージンを取ることができる

塗り重ね


左右対称に塗り重ねたい時は、Xを選択しておくこと。


Blend の箇所は色の重ね方。単純に上塗りしたい場合はMix
Color Palette は今選択中の色を保存できる。また、オブジェクトに塗られているところの上でSキー+左クリックで色をストックすることも可能。ただし、その場合は光の影響も受けるため注意。




最終的にSahder Editor はこのようになった。
赤枠がカラー、青枠がラフネスで新たに追加したところ

カラーについては、上に一番ベースになる全体の色味を設定し、それをMix RGB のMultiple(乗算)でつないでいくことで、photoshopなどで言うところレイヤーを追加していく感じで塗り重ねていった。
※独自に考えた方法なので、もっと良い方法があるかも。

目について


目については、まず、Textures.comより適した画像をダウンロード。
www.textures.com
手に入った画像を画像編集ソフトで、うまいことはめ込んで作った。
なお、photoshopビックドキュメントファイルであれば、レイヤーの状態をたもったままのイメージをBlenderに読み込むことができる。
ただ、注意すべきたはBlender側で上書き保存ができないこと。

ラフネス


カラーを作成したとき同様、「+」ボタンを押して、その中からRoughnessを選択。Colorの部分は最初に選択されているグレーで構わない。透明箇所が無いので、Alphaのチェックは外しておく。


全体の様子をみつつ、濡れた感じにしたいところ(このキャラクターでいうところの口の周りや背中、股など)を意識しつつ、ふんわりした感じに塗っていく。そのうえで乾いたところを意識しつつ、あまり極端な境目がわからない感じで白く塗っていく。
最終的にラフネスのイメージはこのようになった。黒いところが光って見え、白いところが乾いて見える。


赤い丸が白めに塗ったことで乾いて見える箇所。青い丸が黒めに塗ったことで濡れて見える箇所。角や目など、別のメッシュで構成されているものに関しても設定をした。

Blender ベイキング~テクスチャーペイントの覚書

勉強したBlenderのベイキングのやり方をすぐ忘れてしまうので、ここにメモとして残しておこうと思う。

準備


まずは、アドオン「Node Wrangler」をインストール
使い方はこちらを参照
vook.vc

ノーマルマップはノード上で白黒データに変更する
ノーマルマップを有効にするには、オブジェクトがシェーディング・スムーズの状態である必要がある

キャビティマップもノード上で白黒データに変更する

キャビティマップとカラーのノードをPrincipled BSDFのBase Colorに接続しようにも、同時に二つは接続できないので、Color / MixRGBを間に挟む必要がある。挟んだあと、Overlayモードに変更する。キャビティマップとカラーの割合を調整することもできる。

さらにキャビティマップとMixRGBの間に、Convertor / ColorRampを挟むことで、キャビティマップのレベル補正をすることができる。

ノーマルマップのベイキング

全てのオブジェクトのUV展開が済み、一つのマップにすべてが収まった状態からスタート。



メインのボディのハイポリとローポリを一緒に選択し(目や角、衣服などはこの時は選択しない)、「テンキーの/」で分離モードにする。
両方とも選択した状態でシェード・スムーズにする(オブジェクトモードでないとシェード・スムーズはできないので注意)。



ノーマルマップ用のイメージを作成する。まずはUVエディターウィンドウの赤で記したボタンを押して、黄色の線の箇所をこのように設定する。(このキャラクターの名前は決まってないが、後々狼のような動きをするかつ、顔が蝙蝠っぽいので仮としてこの名前にしてある)。



Shader Editor上でShift + A / Texture / ImageTexture を作成したら、読み込むイメージを、先ほど作成したものにする。



さらに、Color Space を Non-Color に変更する。



レイヤーでローポリのオブジェクトを選択した状態で、Shader Editor上で名前を変更する。



さらに、ハイポリのオブジェクトを選択した状態で、Shader Editor上で新規作成→名前を変更し、batwolf normsは不要なので、消去する。



ローポリのオブジェクトを選択した状態で、Shader Editor上のbatwolf normsを選択して、白枠で囲われた状態にする。Render Propertiesを選択して、Render EngineをCyclesに変更する。



Bake typeをNormalに変更。Selected to Activeにチェックを入れ、Max Ray Distanceの値を調整するのだが、参考にする値は、図のようにローポリからハイポリが飛び出ている距離だ。正直ここは何度やっても適切な値がわからないので、何回かやり直すことになると思う。今回は講師と同じ0.02mでやってみる。



まず、ハイポリを選択して、そのあとでCtrlを押しながらローポリを選択する。※上記までの画像とオブジェクト名を変更してあります。Shader Editor上のbatwolf normsが選択されているか再度確認して、Bakeボタンを押す。



ベイクが完了したら、Image / Save as でファイルを保存する。



ローポリだけを選択して、Edit Modeにすると、Bakeされた画像の上にメッシュを重ねてみることができる。メッシュの内部にまで紫以外の色が入り込んでいる場合は、Max Ray Distanceの値が間違っていることになるので、数値を調整して、できるだけこうならないようにBakeを何度かやって調整する。再度Bakeしてこれだと思う結果がでたら、Image / Save で保存することを忘れずに。なお、保存されていない場合はImageの横に※印がでる。



batwolf normsとPrincipled BSDFの間にShift+A / Vector / Normal Mapを追加。



ハイポリの目を閉じて、ローポリだけを表示し、表示を画像の黄色枠のやつにすると、ローポリにノーマルマップが乗った状態を確認できる。

キャビティマップのベイキング

UVエディター上でキャビティマップ用のイメージを作成する。
ノーマルマップの時と同様、大きさは2048px ×2048pxで、Alphaのチェックを外す。名前はbatwolf cavとした。
さらにShader Editor上にImageTextureを作成して、batwolf cavを読み込み、Color SpaceをNon-Colorに変更する。



ハイポリを選択した状態で、Shader Editor上でジオメトリーを追加する。



さらにColorRampを追加する。



全てをつなぐ。



表示をRender Previewモードに変更し、ColorRampのスライダーを動かして、白黒の明暗を強く表現するようにする。




ハイポリ→Ctr+ローポリの順番で選択。
batwolf cavを選択
Bake TypeをDiffuseに変更。
ContributionsをColorのみにチェックが入るようにする。
Selected to Activeにチェックが入るようにする。
Max Ray Dixtanceはノーマルマップの時と同じで良い。
Bakeボタンを押す。


Max Ray Dixtanceをノーマルマップの時と同じ0.02mでやったが、穴あきが多く、いろいろやってみた結果、10mまでのばしてもこれ以上は埋まらなかったので、あきらめた。
Imageを保存するのを忘れずに。



3D Viewportの表示をMaterial Previewに変更し、ハイポリを非表示にし、batwolf cavのColorからPrincipled BSDFのBase Colorにつなぐ。



キャヴァティマップが無い状態と比べると差がわかる。

ボディ以外のパーツのベイキング

キャラクターに装飾を追加する場合


なにかものたりないなと思い、背中に角を追加した。
角をまずスカルピング(horn hp)して、それを元にローポリメッシュを作成(horn lp)。
ローポリメッシュにシームを追加して、UV展開。
すでに、ボディに関しては、ノーマルマップも、キャビティマップも作成済だったので、隙間にどうにか角のローポリを展開したメッシュを並べるのに苦労した。
今後は、キャラにバリエーションを作るためにも、ボディだけでイメージの全体が埋まらないように作成するのがポイントかなと思った。

なお、角の色が黒いのは、まだキャビティマップをベイクしていないから。

注意:ローポリをShade Smooth にするのを忘れない



同じく、目もUV展開。目に関しては、ベイクする元のハイポリが無いので、そのままこれをローポリとして使おうと思う。

ボディ以外のパーツのノーマルマップのベイク


上の画像の①~⑥を設定した状態で、BAKEボタンを押す。


書き出されたノーマルマップのイメージ
ローポリをエディットモードにすると、ノーマルマップのイメージにメッシュを重ねてみることができる。
メッシュが重なっているところの色が明らかに他の紫色と違っていたら、再度、Max Ray Distance の値を調整してベイクする。
自分場合は、どこまでMax Ray Distance の値をいじっても完全には変な色の箇所が消えなかったので、、UV Editor のImage / Save をしたあとで、画像編集ソフト(Clip Studio PaintPhotoshopなど)で直接変な色を消したり馴染ませて上書き保存した。


修正前のノーマルマップ


修正後のノーマルマップ。なんか色が濃くなっているけど、気にしないでおこう。できる限り、黄色や赤色の部分を消したり、紫に近づけるよう修正した。

ボディ以外のパーツのキャビティマップのベイク


上の画像の①~⑥を設定した状態で、BAKEボタンを押す。(この画像は既にBAKEをした後にキャビティマップのイメージを画像編集ソフトで修正したあと)

書き出されたキャビティマップのイメージに、ノーマルマップの時同様、ローポリのメッシュを重ねて、メッシュと重なっている部分に穴が開いてないか(真っ黒なままになっていないか)確認。穴が多ければ、Max Ray Dixtanceの値をいじって、再度ベイクする。
限界まで消えない箇所については、UV Editor のImage / Save をしたあとで、ノーマルマップの時同様、画像編集ソフトで修正する。

ザ・スナップキットシリーズ ニッサン スカイライン 2000GT-R

プラモデルを作りたくなった。

かれこれ5年以上やっているネットラジオのわたラジでも語ったんだけど、精神を病んで暫く休職となった。
wataradi.seesaa.net

仕事を休んですぐは、なかなかベットからも起き上がれない状態だったけど、数週間たったのちに、どうにか出かけられるようになって、なにか良い意味での暇つぶしをできるものを探していた。

以前に読んだ「うつぬけ」という本で、筋肉少女帯大槻ケンヂが、うつ病になったときに、プラモデルをつくっている間は精神がおちついたというくだりがあったので、プラモデルもよいなぁと思った。

私は子供のころは、ガンプラやBB戦士、ゾイドなど、プラモデルにはそこそこ親しんでいた方だったと思う。

そこそこ体調が良い日に、よろよろとヨドバシの玩具コーナーをうろついてみたところ、とてつもない種類のプラモデルが並んでいることに驚いた。

印象としては、全体の1/3がガンプラで、3/1が非ガンダムのロボットやキャラクターのプラモ。最後の1/3が車や兵器、電車などの実在するか、かつて実在したもののプラモといった感じである。

私は、ガンダムやその他のロボットものアニメに非常に疎く、ちゃんと完走したのはエヴァンゲリオンやとその他片手で数えられるほどしかない。

思い入れのないものを作るというのもなんだなと思いつつ、ぶらぶら歩いていると、少し心がときめいたコーナーを見つけた。

車のプラモのコーナーだ。

私は高校生の頃あたりに、久々にプラモデルでも作ってみるかと意気込んで、フェアレディーZを購入。ガンプラに親しんでいたこともあって、開けてびっくり。色も塗られてなきゃ、接着剤がないと組み立てることもできない。結局ほぼ手を付けずにゴミ箱いきとなった。そんなこともあって、車のプラモは難しいという思い込みがあった。

では、なぜ今、車のプラモデルにときめいたかというと、数年前から私が好きなイギリスのテレビ番組、「クラシックカー・ディーラーズ」で世界中の中古車が修理されていく様をみて、車って良いなぁという漠然としたいた思いがあったからだろう。

とはいえ、またフェアレディーZのような上級者向けに手をつけると、また挫折しかねないので、簡単に組み立てられそうなものは無いか探していたところ、青島のザ・スナップキットシリーズなるものを見つけた。

楽プラとうたっているだけあって、色塗り不要、接着剤不要とのこと。店頭にできあがり品が飾ってあったが、玄人が自分でこだわって色を塗った作品とは比べるまでもないものの、それなりのクオリティではある。そしてお値段も1,000円とお手頃。

この日は買わなかったのだが、翌日、わたラジを一緒にやっているコットンごとう氏と昼飯を一緒にした際に、コットン氏がヨドバシに行きたいとのことで、二日連続でヨドバシのおもちゃコーナーへよろよろと足を運んだ。

そこで、結局この楽プラシリーズのとある車のプラモデルを購入したのだが、それはまた今度紹介するとして、実はその後いろいろあり、さらに別の日にヨドバシで、これを購入した。

ということで、心のリハビリとプラモのリハビリを兼ねて、こいつを組み立てみることにした。

ネットで調べて、最低限組み立てに必要な道具も購入。

開封してみるとこんな感じ。

シャーシのパーツがプリウスのものが入っていたので、不良品交換をしていただいた。丁寧な対応をいただき青島文化教材社様ありがとうございます。

画像を見てもわかるとおり、シールの細かいこと。組み立てる前のパーツに、これらのシールを貼るのが一番神経を使ったが、どうにか間違いなく貼れたと思う。

組み立ては、楽ぷらを買っておいて、こんなことを書くのもなんだが、拍子抜けするほど簡単にできた。

ネットで調べたコツに従って、ランナーから切り離したパーツのでっぱりは、金やすり→スティックのやすり→スポンジのヤスリの600→1000の順番で削って綺麗にした。

色が既にぬってあることの弊害としては、メッキ塗装のパーツがどうしてもヤスリがけすると、余計なところも一緒に削れて、下地がでてしまうところ。ここだけでもスプレーかなにかで色を塗り足したい。

できあがりはこんな感じ。
サイドミラーの片方がすぐ取れてしまうので、接着剤を買って固定しようと思う。

実はすでに、もう一箱楽プラを買ってあるので、それも後日組み立てて、ここに書こうと思う。

 

BlenderからUnityへキャラクターを書き出ししてホラーキットで使用する

Blenderで作成した敵キャラをUnityのホラーゲーム作成のための有料アセットHFPS KITで動かすための、自分なりの備忘録を記載する。
やることが多くて、何度やっても細かい部分を忘れるので。
assetstore.unity.com


Blenderで敵キャラを作る方法については、Udemyのこちらを参考にした。
https://www.udemy.com/course/blendercharacters/www.udemy.com

書き出しと読み込み

Blenderでキャラクターを作成する際の注意点

目を光らせたい場合は、目のメッシュはそれ以外と分けておく
Unityではラフネスの細かい部分の調整ができないので、あきらかにテカテカな部分を作りたい場合は、メッシュを分けて作る必要がある。

ブレンダーで書き出し

ブレンダーで作成して、mixiamoでリグとウェイトを入れたキャラクターを、ブレンダーで読み込み。不要なオブジェクト類を削除した状態からスタート。

書き出ししたいパーツを全て選択した状態で
fbxに書き出し。

書き出しの設定

ただし、Unity内でほかのキャラクターとのサイズ比を考慮してScaleの大きさを調整する。
この場合はScaleが1だと小さすぎた

テクスチャの書き出しで気を付けること
オーバーレイを選択した状態でCtr + Shiftを押して「Viewer」を出した状態でBakeすることを忘れない
※Ctr + Shift を押してもViewerが出ないときは、このViewerはEmissionなので、手作業でEmissionを出してバイパスする。
Shift + A で虫眼鏡にEmissionと入力すると、出てくる。

Unityに読み込み

プロジェクトのどこかに、書き出ししたFBXファイルをドラック&ドロップして読み込ませる。
テクスチャーイメージもわかりやすいように、同じフォルダに読み込みさせる。

リグの設定

プロジェクト内のFBXファイルを選択して、インスペクターのRigタグを選択。

Animation TypeをHumanoidを選択してApplyボタンを押す。


プロジェクタ内のキャラクターのオブジェクトの子オブジェクトにアバターが作られる。

マテリアルの適応

FBXファイル(以降キャラオブジェクトと呼称)をシーンに配置
マテリアルファイルを作成してテクスチャを当てはめて、シーンに配置したキャラオブジェクトにアタッチする。

ラグドールの設定

シーン上のキャラオブジェクトに対して、ホラーキットの数々のスクリプトを適応していくまえに
先にラグドールの設定をしてしまう。
※今回はMiddle SpineをSpineをアタッチした。(Horror FPS KITのShowcaseシーンのZombieAIだとSpine1なのでそちらの方がよかったかも
※Pelvisは骨盤のことなのでHipsをアタッチ

ラグドールをアタッチしたArmatureにコライダーとキャラクタージョイントとリッジボディーが自動でアタッチされる。

各Armatureに自動的に表れたRigidbosyとCharacter Jointの値はとりあえず触れないで試してみる
Colliderについては、驚くほど大きかったり小さかったりするので調整が必要。

タグの変更

キャラオブジェクトに攻撃を数回加えた後に、こちらの行方を見失うのでおかしいと思っていたら、Layerを変更していなかった。
キャラオブジェクトのLayerをを8:Zombieに子オブジェクトも含めて変更。そのあとで、ArmatureのLayerを10:Body Partに子オブジェクトも含めて変更。これでうまくいった。

オーディオソースの追加

オブジェクト直下にオーディオソースファイル「Footsteps」を作成する(キャラクターのインスペクター内にあるNPC Footsteps(Script)にあたっちするためのもの)
※床面にNavigationをベイクするのも忘れない
※シーン内にWaypointを設置するのを忘れない

アニメーターの修正方法


修正する箇所

それぞれの■に変更したいアニメーションをアタッチしていけばよいのだが、
「Blend Tree」の箇所だけは、その■をダブルクリックして、ブレンドトゥリー画面を表示し、その中の束をまとめているところを選択し、インスペクターに表示されるアニメーション各種のところに新しいアニメーションをアタッチする。

Eventの挿入

なお、注意すべきは、攻撃のアニメーションだけに限っては、アニメーション画面の攻撃がヒットするタイミングで、「Add Event」を挿入し、選択肢の中から、「PlaySoundOrDamageEvent()」を選ぶ。これをやらないと、プレイヤーに攻撃が当たらない。

Hit Reaction Layerについても同じく
「Hit Blend Tree」の■をダブルクリックして、上記のBlend Treeと同じように、キャラクターが攻撃を受けたアニメーションで変更したいものがあれば変更する。

変更方法


Assets\Horror FPS KIT\HFPS Assets\Content\Animations\Animators 内の
ZombieAnimator をCtr+Dでコピーして名前を修正する。

キャラクターをヒエラルキーで選択して、インスペクターにアニメーターを追加。
コントローラーに先ほど作ったアニメーターをアタッチ
Avatarに以前に作ったAvatarをアタッチ
Culling ModeをCull Update Transformsにする。

インスペクターに項目を追加する

Audio Source の追加


インスペクターにオーディオソースを追加。
Max Distanceを30にする。

Zombie Behavior AIを追加

インスペクターにZombie Behavior AIを追加する。
自動的に、Capsule Collider , Nav Mesh Agent , NPC Health(Script)も追加される。

Capsule Collider


黄色丸の箇所をクリックして、黄色矢印の枠の大きさを調整する。


画像のとおり数値を設定してから、細かく修正。
Area Mask は ≪Walkable , Not Walkable≫ を選択。
※表示はMixted...になる。

NPC Health (Script)


Hipsに、プロジェクト内のArmature / mixamorig:Hipsをアタッチ

Health = ゲーム開始時のこのキャラのHP
Max Health = このキャラが「Hunger Recovery」可能な場合に、回復する最大値のHP
Ht Audio : このキャラが攻撃を受けた時の音
Headshot : ヘッドショットを受けた場合に通常のダメージよりも多くダメージを受ける設定をすることができる。

HeadにはProject内のHeadのリグをアタッチする。

Allow Headshot : チェックを入れることでヘッドショットダメージが有効になる。
後述するZombie Behavior AIのDamage SettingsのDamage Valueよりも値が大きくなるように設定すると良い。

On Death
Corpse Remove Type : Disableにしておけば、死んだあとに自動で消える
Corpse Time : 自動で消える時間を設定する。

Eye Glow
目が光るように設定ができる。
Enable Eyes Glow : この設定を使用する場合はチェックを入れる
Eye Renderer : ヒエラルキー上のこのキャラクターの目のオブジェクトをアタッチする。
Emission : 最初から_EmissionColorと入っているが、謎。

NPC Footsteps (Script)

Main / Footsteps Mask : Default と PlayerBody を選択
Footsteps Audio : 既に作成した、ヒエラルキー上のこのキャラクターの子オブジェクトのサウンドソース Footsteps をアタッチする。
Ground Ray : 何のためにあるのか謎だが、どりあえず0.4に設定する
Default Footseps : 0→7に変更して、7つの足音をアタッチする。
Allow Default Footstep : チェックを入れる
Event Based Footsteps : チェックを入れる
Footstep Control / Walk Velocity : 1.2を入力
Footsteps Volume : 歩きと走るときの音量をそれぞれ入力
Next Footstep Wait / Idle Time : 0.5
Next Footstep Wait / Walk Next Wait : 2
Run Next Wait / 0.3

Zombie Behaviour AI (Script)

Behaviour Main / Sleep Behavior : Stand Up Back か Stand Up Front だとプレイ開始状態は寝た状態になっている。 IdleだとIdle状態、Noneの場合は、一行したのZombie Behavior で設定している状態になる。

Behaviour Main / Zombie Behavior : いまいちよくわからない。とりあえずW2W Patrol にしておけば動く
Main Setup / Animator : キャラオブジェクトをアタッチする(先に上記のAnimatorの項目を終わらせておく必要あり)
Main Setup / Sight Mask : Default にする
Main Setup / Threat Mask : PlayerBody, Threat にする
Main Setup / Attack Animations : 5のままで良い
AI Preferences / Enable Scream : おそらくこれにチェックを入れることで、ゾンビが叫びをすることで、別のWake By Threat にチェックが入っているゾンビが起きる。
AI Preferences / Enable Agony : チェックを入れると苦悩する
AI Preferences / Enable Hunger : チェックを入れると、後で設定するHunger Timeに応じて、腹減り状態になる。また、Hunger Recover Health にチェックを入れることで、飯を食うことでHPが回復する。
AI Preferences / Sound Reaction : そのまんま
AI Preferences / Run To Threat : 不明
AI Preferences / Attack Other : チェックを入れないと攻撃してくれない
AI Preferences / Hunger Recover Health : 上記のとおり
AI Preferences / Rndom Waypoint : Waypointの設定がランダムになる
AI Preferences / Waypoints Reassigh : 不明
AI Preferences / Low HP Ignore Player : 不明
AI Preferences / Player Invisible : そのままと思われる
AI Preferences / Damage Threat : ダメージを受けると呻く??
AI Preferences / Wake By Threat : 他のゾンビがThreatしたことで起きるということ?
AI Preferences / Patrol Time : Patrol アニメーションにかける時間と思われる。
AI Preferences / Scream Next : Enable Scream にチェックが入っていた場合の、間隔を設定する
AI Preferences / Agnoy Next : Enable Agony にチェックが入っていた場合の、間隔を設定する
AI Preferences / Player Lost Patrol : 不明
AI Preferences / Hunger Time : Enable Hunger にチェックが入っていた場合の、腹が減る時間を設定する
Ai Settings / Walk Speed : 歩くスピード
Ai Settings / Run Speed : 走るスピード
Ai Settings / Eating Stopping Dist : 不明
Ai Settings / Agent Rotation Speed : 不明
Ai Settings / Speed Change Speed : 不明
Ai Settings / Rotate Manually : 不明だがチェックを入れたままにしておく
Ai Settings / Accelerate Manually : 不明だがチェックを入れたままにしておく
Ai Settings / Walk Root Motion : 不明だがチェックを外す
Damage Settings / Damage Value :

Unity 2Dキャラクターアニメーション勉強 1

前回に引き続きUnityでアニメーションの勉強をしていこうと思う。
今回は2Dアニメーションの勉強をしていこうと思う。

2Dアニメーションの勉強をしようと思った理由

なぜ2Dのアニメーションを勉強したいかというと、いまのところ絶賛頓挫しているYoutubeを使ったアニメゲームの製作につかえるかなと思ったこと、今後他のゲームを作る時にいつかは必要になるだろうということからだ。

教材にえらんだのがこちら

わかりやすくて面白かったので、この動画の内容を記載しつつ理解を深めてみようと思う。

Unitiで2Dアニメーションを始めるには

Universal Render Pipelineと2Dどちらを選ぶか

まずはUnity Hubで選ぶテンプレ―トは「2D」が良いとのこと。
「Universal Render Pipeline」よりも、便利な機能がすでにそろっている「2D」の方がお得なのだとか。

始めの設定

プロジェクトを作成したら、パッケージマネージャーから「Universal RP」をインストール。

アセットの中で右クリックして
作成 / レンダリング / Universal Render Pipeline / PipeLine Render Forward Renderer
を選ぶと
UniversalRenderPipelineAssetとUniversalRenderPipelineAsset_Rendererの二つのファイルができる。さらに、
作成 / レンダリング / Universal Render Pipeline / 2D Rendere (Experimental)
を選ぶと、
New 2D Renderer Dataが作成される。
UniversalRenderPipelineAssetのインスペクター内、一般 / レンダラーリストに、New 2D Renderer Dataをアタッチする。

さらにProject Setting / グラフィックス
内の「スクリプタブルレンダーパイプライン設定」に
UniversalRenderPipelineAsset
をアタッチする。

これで、URPを2Dで使う準備ができたとのこと。


Unity 2D Animation

Unityのアニメーションには
スプライトアニメーション
スケルタルアニメーション
の2種類、小分類あわせると3種類ある。

スプライトアニメーション

ぱらぱらアニメーションのような仕組みでアニメーションを作成すること。

スケルタルアニメーション

  • スプライトのローテーション

スプライトにピボットを作ってそこを支点にして動かす
味気ない動きになってしまう欠点がある

  • ボーンによるメッシュのでフォーム

ボーンに追従する頂点を動かす。自然な動きが実現できる反面、大きく動かすと破綻しやすいとのこと。

Unity 2D Animationは上記の3つの機能を全て使うことができるとのこと。

2D PSD Importerでの読み込み

素材の作成と準備

Photoshop等のソフトで、各パーツ毎にレイヤーに分かれたファイルを作成
f:id:kazhase:20220115113849p:plain

各パーツ毎に見やすく並べるとこんな感じ
※Unityにインポートする際は、このように本来の表示したい位置から動かさない方が良い
f:id:kazhase:20220115113859p:plain

2D PSD Importer

2D PSD Importerは一見.psdファイルを読み込めるのかと思いきや
Photoshopビッグファイル(PSB)での読み込みにしか対応していないとのこと。
講師の方はPhotoshop以外でビッグファイルでの書き出しできるソフトがあまりないとのことだったが、自分がお絵描きにいつも使用しているClip Paint Studioは対応していた。

Photoshopビッグファイル(PSB)ファイルの取り込み

UnityへのPSBファイルの取り込み方は、他の画像の取り込み方と同じ。
自分はUnityのアセットウィンドウにポイっと入れたら早速読み込みできた。

インスペクターのCharacter Rigにチェックが入っていることを確認。
Sprite Editorをポチっとすると、Sprite Editorが立ち上がる。
f:id:kazhase:20220115114759p:plain
※勝手にレイヤー毎に読み込んでくれた。これは便利!


Skinning Editor

読み込み~Boneの設定

左上のSprite EditorのプルダウンからSkinning Editorを選択。
元のファイルの通りの、パーツ配置の画面になった。
f:id:kazhase:20220115115654p:plain

右上の「可視性」のボタンを押して操作パネルを出す。
スプライトを選択して、重なって見えている部分のパーツを非表示にする。
左側の操作パネルのCreate Boneを選択して、股下から各パーツ事にBoneを作成していく。
※親子関係を考えながらBoneを設定することにより、体をねじると、腕がついてくるなど連動して動かすことができる。

Boneの作成が完了したら、右側のパネルのBoneタブを選び、各Boneに名前をつけていく。
f:id:kazhase:20220115130359p:plain

ジオメトリ(ウェイト)の設定

Sprite Editor内左側のパネルの、Auto Geometryを選び、右側のパネルの一番下
何も選択していなければ「Generate For All Visible」を押す。
すると体全体にGeometryが自動で設定される。
なお、複数パーツある部位の場合、全てのパーツにジオメトリを設定しないとダメなので注意。

各Boneが正しいGeometryに連動しているか、動かしながら確認。
余計に連動している場合は、左側のパネルの一番下Bone influenceを押して、
右側パネル下に表示される、余計に連動するスプライトを削除する。

微調整

曲げたときに、その付近のスプライトが変な感じにゆがむ場合は
曲げる部分のスプライトの頂点だけに影響が出過ぎているせちなので、
その部分のスプライトを選択して、左側のパネルのWeight Sliderを選択肢
右側のパネル下のModeをSmoothに切り替え、Amountのスライダーの値を増やす。


FKとIK

講師の方によると「ご存じの方の方が多いと思いますが」とのことだったが、自分にはさっぱりわからない単語だった。

FK=Forward kinematics

身体の中心のBoneから先端に向かってBoneの数だけ順番に動かす

IK=Inverse Kinematics

身体の先端から動かす(一つのBoneだけを動かせば良いのでラクができる)
※どちらも関節を動かす手法
※Kinematicsとは運動学(運動の幾何学的性質を論じる学問)のこと。ギリシャ語が語源で、CINEMAと同語源。


シーンに読み込んでからの作業

シーンを作成し読み込み

新しいシーンを作成し、先ほど設定を施したPSBファイルをシーンにドラック&ドロップする。
すると、真っ黒なシルエットがシーン上に現れる。真っ黒なのは照明が無いからなので、ライトを設定する
ヒエラルキー上で右クリックして、
ライト / 2D / Global Light 2D
を選択すると、ヒエラルキー内に Global Light 2Dが現れ、シーン上の真っ黒だったキャラクターに光があたり見えるようになる。

この状態だと、複数パターンある身体のパーツが全て見えている状態なので、どれか一つずつ以外は非表示にする。

アニメーターを追加

アセットの中のキャラクターを選択した状態で、インスペクターのAdd Compornentからアニメーターを追加する。

IK Manager 2D を追加(Script)

ヒエラルキーの中のキャラクターを選択した状態で、インスペクターのAdd CompornentからIK Manager 2Dを追加する。
IK Solversの「+」ボタンを押し、ドロップダウンリストの中からLimbを選ぶ。
※2つの関節を一つの関節で動かす場合にLimbを使う。
Limbの位置を動かしたい先端の関節の根本の位置に合わせる。
Limbのインスペクター上にあるEffectorに、動かしたい関節のBoneをアサインして、Create Targetをクリックする。
これを先端の関節毎に繰り返し設定する。

スプライトの順番を変えられない

ここで問題が発生、左手が左足より手前に表示されてしまう。
順番を変更したいものの、ヒエラルキー上の順番を変えようとすると
「プレハブインスタンスの子は削除/移動することはできません。そして、コンポーネントは並び変えできません」
とエラーが出て変更できず。
それならプレハビの大元を変えればよかろうというところなのだが、大元が見当たらない。
これはおいおい考えることにしょう。
→後日、途中で詰まり、大幅にやり直しをしなければならなくなったときにわかったのだがレイヤーの順番はPSBファイル毎変える必要があるということがわかった。なので、Assets内のPSBファイルをダブルクリックしてPhotoshopなどで開き、レイヤーの順番を切り替えてほぞんしなおせば良い。

そして、Limbを付け終わったのがこちら。

Unity 3Dアニメーションの勉強 1

半年ほどかけて作っていたコイン落としゲームをAndroidアプリとして公開するための審査に出せたので、次に作ろうと思うゲームのために、これまで手を付けてこなかったアニメーションの勉強をしようと思う。

まずはこちらの記事を参照にしてみた
qiita.com


できたのがこちら。


使わせてもらったアセットはこちら
assetstore.unity.com
assetstore.unity.com
assetstore.unity.com