PuppetMasterのキャラクターコントローラをタッチパネル対応にする
- BTA(Kelorin Jo)
- 2020年10月19日
- 読了時間: 4分
更新日:2020年10月29日
前回の記事はPuppetMasterをNPCに使いましたが、今度はプレイヤーに使う際の話です

PuppetMaster(以下パペマス)付属のいくつかあるキャラコンは、サンプルシーンMeleeに使われてる
CharacterMeleeDemoを選んで使ったのですが、
あいにくこれは、タッチパネル操作には対応してなくて、改造しないとモバイル用途には使えませんでした。
改造して対応させるまでの忘備録を記します。
このキャラコンの中身がかなり厄介で、継承を使いまくってました。
キャラ動かすのにアタッチしたコンポーネントの中身を見ても、どこにも入力と移動に関する下りが見つからず、
public class クラス名 :の後がMonoBehaviourでないのに気づくのに2日かかった
継承を使えば、元アセットを壊すことなく改造ができるということなんでしょうが、私は素人なのでバリバリ書き換えます。
Inputのコードがなかなか見つからない。仮に見つかってもシーン内にないものに、どうやって入力情報を渡せばいいのか…??
入力場所を探すのに、CF2を使いました。
これはモバイル用のバーチャルパッドのアセットですが
こいつにはプロジェクト中のスクリプトをすべて検索して、Inputを自分のコードに差し替えるという機能があります。これを利用すれば場所がわかるって寸法よ
(VisualStudioのctrl+Fの検索で「ソリューション全体」で探せると気づいたのは後のこと)

そして突き止めたのがアセット中でインプット機能を担ってるのはUserControllThirdPerson.csだけだったこと、
シーン中で使われてたのは、その継承であるUserControllMelee.cs
継承クラスだらけ
Inputを使ったメソッドだかクラスだかが独自仕様の入力機能として別のクラスで作られて、それがさらに継承で違う名前になって使われて、そりゃ見つからないわ…
これで勝った!と思ったら
今度は、パペマスのキャラコンが、仮想パッドのコアであるJoystickのクラスを認識しない…!
理由は、PuppetMasterアセットがPluginsフォルダに入っているせいでした。
EditorフォルダやResourcesフォルダと同じく特別なフォルダで、この中に入ってると外のスクリプトが認識できなくなるのでした。
JoystickのフォルダまるごとPluginsに引っ越したら、認識されました。
レガシーな仕様らしいんで、中身全部外に引っ越しても問題ないかもしれないけど、今からではプロジェクトが壊れるかもしれないので見送りました。
UserControllThirdPerson.csのほうに、Joystickとボタンを割り当てる記述を追加
(ちなみにボタン操作のアセットはないので、カンバスのUIでジャンプボタンなどを自作)

こう書くと、シーンに実際に使われてるUserControllMelee.csのインスペクタに変数の項目が出現、
シーンに追加したタッチパッドUIをD&Dで割り当てることができるようになります
移動やアクション判定のコードも差し替えれば(デスクトップ版と併用できるように作る余裕はない)


やっと仮想パッドの操作で動かすことができました。

こんな拙いプログラム技術でも改造して動かせるもんなんだなー
その他
・JoystickPackはマウス操作はできませんが、もう一つパッドを追加してパペマスのカメラコントローラCameraController.csのInput.GetAxis("Mouse X")、Input.GetAxis("Mouse Y")を差し替えればいけました。
・ただしJoystick仮想パッドはデフォだとカンバス全画面を占領して使い、複数のパッドが同時に存在すると競合して使えません。パッドプレハブのタッチ有効範囲=RectTransformを、PosXとWidthをいじって画面半分とかにして重ならないようにしたら解決しました。
ただタッチ操作でカメラ移動がやりづらいゲームでは、左パッドひとつで移動兼カメラ移動にしたほうが快適かも。
・実は最初は有料+多機能なCF2タッチパッドアセットを使ってたのですが、なぜかうまく動かなかったので、仕方なくJoystickPackを導入しました。
CF2は使ってるシーン中のカンバスのレイキャストが機能不全になり、簡単なボタンもまともに使えなくなるため撤去せざるを得ませんでした。(CF2オブジェクトを非アクティブにしてもだめ/CF2の有効範囲を避ければ、そこだけはレイキャスト使えたけど/もしかしたら回避方法があるのかもしないけど見つからず)
高度なプログラム技術とかマジいらないから安直に使わせてください…
・なおこのパペマスキャラコンは、まだキャラモデル差し替え・二段ジャンプ・壁ばしり・アイテム拾って装備・近接殴り攻撃といったそそる機能を備えてますが、今の所使えてません。特に殴りはセット方法がわからず使うとエラーになる
今回と前回の記事の技術で作ったゲームが、こちらになります。Android用
よかったら遊んでみてください。
Comments