FC2ブログ

unity Third Person Character、Free Look Camera Rigの改造

先日テストで作っていたゲームを公開してみました。
https://drive.google.com/drive/folders/17q357HpU_zkLPafPjzESeA_1gcYDEGmk?usp=sharing
その中でThird Person Character、Free Look Camera Rigに対して行った改造を紹介してみます。

自分が詰まったところが誰かの役に立つと信じて…

Free LookCameraRigの不満点修正
Free Look Camera Rigとは、unityのデフォルトアセットとして自由に使えるとても便利なカメラ機能です。
パソコンのFPSゲームのようにマウスでカメラを操作できるのですけど、コンシュマーゲームみたいにコントローラーの右スティックでカメラ操作をしたい!ので、頑張って調べました。

カメラの制御をしているFreeLookCamというスクリプトのなかで、76、77行目のところにマウスの動きを読み取るスクリプトが書いてあるっぽい
Free LookCameraRigの不満点修正001
この中にあるMouse X、Mouse YはunityのInputという機能を利用して定義されているらしい
上部メニューの
Edit>Project Settings>Input
でInputメニューを表示すると
Free LookCameraRigの不満点修正002
このようにMouse X、Mouse Yの設定が入っていて、Typeがマウスになっています。
ここに同じ名前のMouse X、Mouse Yという設定を追加しマウスではなくジョイスティックを読むように変更すると、マウス、コントローラーのどっちでもカメラが動かせるようになります。

元からあるMouse X、Mouse Yを選択しCtrl+Dで複製して、中身を改造するようにすると楽です。
Typeの項目をマウスからジョイスティックに変更、Axisはどのジョイスティックを使うのかを選ぶ場所ですが、Xbox互換のコントローラーとPS4のコントローラーではジョイスティック番号が違うらしいので検索して調べてくださいな(人任せ)
Free LookCameraRigの不満点修正003
上の画像はPS4コントローラーの場合
コントローラーのスティックは手を離した状態でもごくわずかに傾いた状態になってしまっている場合があるため、Deadの項目で小さな値を指定することにより、スティックの傾きがごくわずかな場合に傾きを0として扱うことができます。
0.1とか適当に入れておきました。
Sensitivityの項目は大きくするとスティックをちょっと傾けただけでカメラが大きく動くようになります。
ゲームを動かしながらお好みの値を探してみてください。



ThirdPersonCharacterの不満点修正
こんどはThirdPersonCharacterの不満点を修正していきます。
こちらに対する不満点としては、ジャンプはコントローラーでできるのにしゃがみ動作はキーボードじゃないとできないところ。

ThirdPersonUserControlというスクリプトの中身を改造していきます。
Free LookCameraRigの不満点修正004
スクリプトの中の51行目にInput.GetKey(KeyCode.C);というプログラムが書いてありますが、これはキーボードの「C」を直接読み込むというもの。
これを改造しないとコントローラーでしゃがみ動作ができるようになりません。
Input.GetKey(KeyCode.C);
のかわりに
Input.GetButton("Fire3");
とプログラムを変更しました。
これは、キーボードのCを直接入力として使うのではなく、カメラの時にいじったInput設定のFire3の入力を使うものです。
こう改造することでコントローラーのFire3ボタンをおせばしゃがむようになります。









修正した基本的な部位は以上です。
キーボード左シフトを押すと歩き動作になる機能とかもあるけどコントローラーでは使わない機能なので無視
てねひむは基本的にスクリプトが読めないのでスクリプトの中をいじったりはしたくないんだけど、既存機能の改造はスクリプトを触らないとどうしようもないので大変
一から自分で作る機能はBOLT(https://assetstore.unity.com/packages/tools/visual-scripting/bolt-87491)というアセットで作ってます。
ブロックの組み合わせでパズルゲームみたいに作れるからめっちゃ楽。たのしい。


それでは今回の記事は以上です。
世の中のunityゲーすべてコントローラーで遊べるようにして
っていうかスタンダードアセットデフォルトでコントローラーに対応しておいてくださいよお願いしますunity公式さん
スポンサーサイト

Unityで!できるだけ簡単にゲームっぽくうちの子を走らせてカメラで追う!

Unityがあればプログラムしたことないデザイナーでも簡単にプロトタイプが作れる!→スクリプトをいじりましょう

うがーー!!

というわけでできるだけスクリプトをいじりたくないてねひむがうちの子でゲームっぽい物を作りたい備忘録です。




①自作キャラが走り回るようにする


キャラクターが走り回るというだけでもぐぐるといろんなやり方が出てきて困惑しますが、その中で一番わかりやすそうな物を紹介しておきます。
複雑なことがしたいならいろいろググっていろいろ試してね。

サードパーソンキャラクター02

自分用備忘録としていつも雑なスクショメモを作ってますが、雑です

Unity画面上部のメニュー、「Assets」から、インポートパッケージ→キャラクターズ
でキャラクター関連のスタンダードアセットを読み込みます。


サードパーソンキャラクター
1.よみこんだスタンダードアセットの中からThirdPersonControllerというプレハブをさがしてヒエラルキーにD&D
2.すると画面にメガネおじさんが出てくるので、ヒエラルキー内ThirdPersonControllerの中にあるおじさんを削除、かわりに動かしたいキャラをD&Dで入れます。
3.ThirdPersonControllerを選択し、右側のインスペクター設定画面で、アニメーターのアバターという項目に、動かしたいキャラを選択します。
4.お好みで、インスペクターのカプセルコライダ項目をいじります。いわゆる当たり判定
センターがカプセル中心位置で、Radiusがカプセル半径、Heightが高さ

ここまでやるとキャラが自由に動かせるようになります!感動!
操作はいつもの「ASDWで前後左右移動、スペースでジャンプ」もしくは「XboxコントローラーLスティックで移動、Yボタンでジャンプ」
らしいです。

地面の配置は忘れずに…


②カメラがキャラを追うようにする

上を試してみたらわかりますが、なにも設定しなければ当然カメラは動きません。
キャラが画面外に出たらなにもできなくなっちゃいます。

まず下準備としてシーンのデフォルトで入っているカメラを削除します。
カメラが複数あったらどっちを使っていいのかわからなくなっちゃいますからね

次に、上で作ったキャラクターを選択し、インスペクター設定の上の方にあるタグを「Player」に変えておきます。
そうすると、これから追加するカメラが「Player」を追いかけるようになります。

フリーカメラリグ01
下準備ができたら、
Unity画面上部のメニュー、「Assets」から、インポートパッケージ→カメラズ
カメラ関連のスタンダードアセットを読み込みます。

追加されたアセットの中からFreeLookCameraRigを探し、ヒエラルキーにD&D

基本的にはコレでもう動くはず!
あとは各種調整です。

ヒエラルキーのFreeLookCameraRigの中にある、「Pibot」のインスペクターで、カメラが見る位置の調整ができます。
背が小さいキャラ、高いキャラなどにあわせてY軸の高さを調整しよう。

フリーカメラリグ02
ヒエラルキーのFreeLookCameraRigを選択するとインスペクターでいろんな設定がいじれる
UpdaTypeを変えるとカメラの追いかけ方がスムーズになったりする(各種効果はわからん)
あと動きのスピードとかスムージング量とかをいじって好みのカメラにしよう

フリーカメラリグ03
ヒエラルキーのFreeLookCameraRigの子供の子供、「Main Camera」のポジションZをいじると、キャラとカメラの距離をいじれるらしい




ここまでできれば「ゲームでよく見るそれっぽいカメラワーク」の完成だ!!
…マウスでカメラを回すことはできるけど、Rスティックで周りを見渡すやり方がわかりませぬ…たすけて………


© Unity Technologies Japan/UCL
スクショ内の一部にユニティちゃんを使用しています
かわいい

うちの子をUnityだったりVRChatに連れて行ってあそぼう

最近の現実逃避先としてUnityに触り始めました

MMD用に作っていたうちの子をUnityに持っていけたので忘れないようにメモっておきます。

①モデル準備

Blenderのうちのこ

3分クッキングばりにすでにできているものを持ってきます

MMD用に作っていたうちの子モデルで、

・モディファイヤーの適用
・余分なオブジェクト(下絵とか、ライトとかカメラとか)を削除したきれいなBlenderシーン
・ボーンにスキニング済み

という状態になっています。

別のソフトにコンバートという話になるとボーン名称などでよくトラブルになるのでググっていたのですが、
現時点では気にしなくていいようです。


②FBXエクスポート
基本的にはBlenderのファイルメニューからエクスポート→FBXを行うだけなのですが…
ちょっとこったことをしようとして一度詰まってしまいました。
スケール変更の話です。

BlenderとMMDとFBXとUnityで長さの扱いが違うという話。
ややこしい。

まず。MMDは長さの扱いが直感出来ではありません。
初音ミクの設定身長は158cmですが、MMDのミクさんのモデルをBlenderにもってくると約4 BlenderUnitとなります。
BlenderUnit(以下BU)とはBlenderの長さの単位であり、特に設定をいじっていなければ1BU=1メートルとなります。
身長158cmのミクさんをBlenderの世界に連れてくると4メートルの巨人になってしまう
今回使うオリジナルキャラのヘイローちゃんもMMD世界では1メートルちょっとの身長ですが、Blender世界では2.7メートルになっています。
ちなみにUnityの単位はメートルなので、1BUがそのまま1メートルとして扱われます。

なので、BlenderからFBXを書き出すときについでにサイズ縮小をかけました。

FBXエクスポート画面_m

Blenderのファイルメニューからエクスポート→FBXの画面
左下に出力設定をする項目があります。

そのなかにスケールを入力する場所があるのでそこに「0.395」と入力しました。
これで身長4メートルのミクさんは158センチに、2.7メートルあったへいろーちゃんも良い感じの身長になるはずです。

倍率の出力時
またそのさい、数字入力欄の横のアイコンをオフの状態にしておいてください。
Blenderの単位1BUは1メートルでUnityの単位もメートルなのでそのままで問題ないのですが、
FBX形式の単位はセンチメートルなので、このボタンをONにしておくと数字が100倍のセンチメートル表記に勝手に変えてしまいます。
オフの状態にしておいてください。


③Unityへのインポート
FBXの書き出しができたのでUnityに読み込みます。

Unity画面01
Unityを起動して新しいプロジェクトを作ったら、
画面下側の「Assets」の中にFBXをD&Dで投げ込みます。
すると投げ込んだFBXと同時にマテリアルというフォルダも作成されます。

次に、今投げ込んだ、「Assets」の中のFBXファイルを今度は左上の「Hierarchy」にD&Dします。
すると真ん中のシーン画面にキャラが表示されます。

Unity画面02
ですがそのままだと想定より小さくなってしまっています。
(ためしにユニティちゃんを隣に置いてみました)
これはFBXエクスポート時に設定したサイズ変更で0.395倍にモデルを縮小した上で、更にUnity上でも0.395されてしまい、
0.395×0.395で最終的に0.156025倍にされてしまっているためです。
なぜそんな謎なことを…という思いは置いておいてUnity上で勝手にかけられているスケールをなくせば想定の身長になります。

Unity画面03
Assetsの中のモデルを選択し、InspecterのModerlの中の、Use File Scaleのチェックを外します。
するのチェックの上のScale Factorが倍率として使用されるようになりますので、これが1なら想定通りの身長になります。


④マテリアル設定
Blenderではテクスチャを張って色までついてたはずですが、Unity上だと真っ白になってしまっています。
Unity上でテクスチャを張り直します。

Unity画面04
まずモデルに使用しているテクスチャ画像を適当なフォルダにまとめ、そのフォルダごとAssetsの中にD&Dします。

Unity画面05
次にAssetsの中のMaterialsフォルダ(FBXを入れたときに勝手に作られるフォルダです)の中のマテリアルを選択し、InspecterのなかのAlbedoのとこの丸をクリックします。
するとテクスチャ選択画面が出るので、対応したテクスチャを選択します。
これをすべてのマテリアルに行うとモデルに色が付くはずです。


⑤キャラクタライズ

キャラクタライズって言葉はモーションビルダーでの呼び方だけど似たようなものだからいいでしょ…

Unityには、違うモデルでも共通のモーションを使いまわせるMecanimという機能があるのですが、それに対応した人型モデルとして「ここが腕ですよ、ここが脚ですよ」というように指定をする必要があります。

Unity画面06

Assetsの中のモデルを選択したら、Inspecterの中のRigを選択し、Animation TypeをHumanoidに変更します。
そうしたら下のConfigureをクリックしてキャラクタライズ画面を開きます。
(セーブするか聞かれたらセーブしましょう)

Unity画面07
キャラクタライズ画面
右のInspectorに人の絵とリストが表示されます。
リストにはそれっぽいボーンが自動で入っていますが、間違いが多いので確認して修正していきましょう

左のHierarchyの中にあるボーンから正しいボーンを選択し、Inspectorのリストの中にD&Dします。
実線の丸が必ず必要なボーン
点線の丸があってもなくてもいいボーンです。
(ヘイローちゃんつま先とか無いし)

全部設定できたらDoneを押して作業を終わります。

ここまででUnityで使いやすいモデル形式が完成しました


⑥Unityパッケージ化

Unityは、アセットストアでいろんなものが配布、販売されているように、モデルや背景、スクリプトなどそれぞれの要素を組み合わせてゲームを作ることができます。

今回はその中でキャラクターの作成を行ったので、コレをいろんなプロジェクトに使いまわしし易いようにUnityパッケージ化しておきます。
Unity専用のzipファイルみたいなもので扱いやすいし、一度用意しておけばマテリアル設定やキャラクタライズをしなくてもすぐにキャラクターが使えます。

まず、Assetsの中で右クリックして新規フォルダを作ります。
作ったフォルダの中に、キャラクターと関係あるデータをD&Dで入れます(FBXデータやマテリアル、テクスチャフォルダなど)

Unity画面08
フォルダにひとまとめにしたら、メニューのAssetsからExport Packageを選択し、

Unity画面09
自分が作ったフォルダだけチェックをいれてエクスポート

保存画面が出るので名前を付けて保存すると、「.unitypackage」が作成されます。

ほかのプロジェクトでキャラクターを使いたい場合はこのUnityパッケージをAssetsにD&Dするだけですぐにキャラクターが使えます。


⑦遊ぶ
あとは
http://0310unity.hateblo.jp/entry/unity_chan_basic
こちらの記事のようにキャラクターを走らせたり

http://vrchatjp.playing.wiki/d/%a5%a2%a5%d0%a5%bf%a1%bc%a4%ce%ba%ee%c0%ae
なにかと話題のVRチャットのアバターにしたり

自分が作ったものが動くって楽しいぞ!
プロフィール

てねひむ

Author:てねひむ
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード