Invector3rdPersonControllerの困りごとと解決策まとめ

  • このエントリーをはてなブックマークに追加

今回はInvector3rdPersonControllerの使い方で困ったところやちょい詰まりしたところの解決策まとめ記事です。
今後も何か問題を解決するたびに随時更新していきたいと思います。

あと、需要があるかどうかイマイチわからないこともあるのでコメントやリアクション等もらえると嬉しいです。

▼敵AIが追いかけてこない

敵AIの設定は色々と詰まりポイントですね。
これ以外に「NavMesh(ナビメッシュ)をベイクしていないとうまく動かない」というのもあるので、最初の頃は全然うまくいきませんでした。

残りは続きから↓

▼敵に銃弾が当たらない

これもとんだトラップですね。
defaultで敵に当たらない設定になってるってどういうこっちゃ。
ちなみに、レイヤー設定は敵キャラの子のオブジェクトの当たり判定にも影響があるみたいです。

※2020年9月7日追記↓

今度は逆パターンです。

ざっくり説明すると、
・ダメージレイヤーに設定されているエネミーには攻撃が当たる
・1回目の失敗は、エネミー本体にダメージレイヤーの設定が入っていなかったから当たらなかった
・2回目の失敗は、逆に「エネミーに設定した子のオブジェクト」のコライダー(本来弾が当たってほしくないIs Trigger設定のセンサー)に弾丸が当たって本体に届かなかったこと。
→その理由として、また敵に攻撃が当たらんかったらヤダなと思い、ダメージレイヤーをEvrythingにしてしまったため、全てのレイヤーが弾を遮る設定になってしまった。
→そのため、本当に弾が当たってほしい「Enemy」などのレイヤーだけをダメージレイヤーに設定したことで解決。

 

▼敵が自分の攻撃でダメージを受ける

これもやりがち。defaultで自滅許可設定になっています。
しかも、おうちゲームジャム(2020年5月)の作品でも同じことをやっていて、Twitterをたどると2018年、2019年と同じことをしてました。

自分で自分の頭を叩き続けるオークのバグを見て一人で爆笑してましたが、ここまでくるとオークさんのことを笑えないですね。
tweetはすぐ流れちゃうので、大事なことはブログにまとめましょうね。

 

 

 

 

▼武器を切り替えた後に XWeaponTrail のエフェクトが出ない

これは他のアセットとの組み合わせ問題ですね。
状況としては、
・ゲーム開始時点で装備していた武器はXWeaponTrailのエフェクトが再生される
・一度他の武器に持ち替えた後、再度装備するとXWeaponTrailのエフェクトが出ない
ということ。
なのでevent機能から他のスクリプトに働きかけて有効化します。

イベントmanagerのコンポーネントは自由度が高いので結構使います。
例えばplaymakerのFSMに対して「send event」で指示を出したりもできますので、そこから複雑な挙動をさせたりも可能です。

 

▼マウスカーソルが出てきてしまう

こちらも組み合わせ問題。
気が付いてみたら簡単なことでしたが、errorも何も出ないので気が付くまで時間がかかりました。
playmaker(コードを書かなくても様々な処理を実装できるアセット)を使っている方は要注意。
もしかしたら、さらに他のアセットと組み合わせた際にも同じことが起きるかも。

 

▼武器の持ち替えで位置が狂う

これは一体どういうことかと言いますと、

・武器の持ち手の原点は「defaultHandler」というObjectの位置になる
・武器の角度もそれに準拠する
・しかし、銃と剣の角度は異なっている
・つまり、銃に合わせると剣の角度や位置がくるってしまう
・結果、剣を手に持つはずが手の甲から生えてきたりする

ということ。
なので、近接武器用のCustom handlerを追加する必要があるのでした。

手順↓

1、プレイヤーキャラの「ITEM MANAGER」を開く

2、default handlerの下にCustom handler を追加する

3、最後にItem list Editor から武器側の設定を開いて先ほどのCustom handler を指定する

これで完成。あとはCustom handler のオブジェクトをいじって位置や角度を調整すること。

ちなみに、handlerの位置や親にするボーンは自由に設置できるので、
応用すれば多分、肩から生えてる砲台とか足の先につけた仕込み刀とかもできたりするかも。

 

▼武器が壁や地面に弾かれてしまって使えない

モーションや武器の大きさによっては深刻な問題ですね。
小柄なキャラが大きな武器を持ったり、洞窟や室内などのステージでは全く武器を振れないこともあるのでリコイルの設定を外しましょう。

 

▼Playerの子のObjectにColliderを設定すると親Objectに影響を及ぼす問題

やりたいこととして、

「Playerの子のObjectとつぃて浮遊するブレード武器を装備したい」と思った時、
そのまま子のObjectにBoxColliderを付けると、そこまで含めてPlayerの体の一部になってしまう。
具体的には、動画のように浮遊する子のObjectが壁や地面にぶつかるとPlayerが浮いてしまう。

なので、そちらをTriggerにすれば壁をすり抜けるが、そのままだとダメージオブジェクトとして敵にダメージが入らない。
それを解決するために、

上記の図のように、
Triggerイベントでダメージを与えるように設定しておくことで解決。

 

  • このエントリーをはてなブックマークに追加

コメント

  1. リセイ より:

    ブログ参考にさせていただいております。
    最近Invectorを使い始めました。
    ガチ鬼ごっこで、『回復アイテムは触れただけで勝手に取得して回復します。』
    とありましたが、あれはアドオンなどであるものでしょうか?
    または自作スクリプトでしょうか?
    Healthの回復の仕方がInvectorを使う上で分からなかったもので
    どのように処理されているか、質問させていただきました。

    1. Noseams より:

      コメントありがとうございます、気が付くのが遅くなってしまってすみません!

      例のアイテムはInvectorのアセットに最初から入っていたものです。
      サンプルSceneに配置されている「health-Item」というprefabをそのまま使用しています。

      デモシーンの格納場所↓
      Invector-3rdPersonController>Basic Locomotion>DemoScenes>Invector_BasicLocomotion

      prefabの構成としては、V pickup item (script)と、V health item (script)の二つで挙動を制御しているようでした。
      上記scriptにて、Valueで回復量を設定し、Tag Filter で対象となるタグを指定すれば触れただけで勝手に回復するようになります。

コメントを残す

*