First Person Shooterの課題について
取得したアイテムをドロップした後、出現するアイテムオブジェクトがおかしい(サイズが大きくなる、オブジェクトが浮いてる)
アイテムのスケールがXYZ共に0.25がデフォルトになっていますが
アイテムをドロップするときにキャラクターのDropPointのTransformでスケールをセットしているため、アイテムが巨大化しています。
サンプルのTemplatePickUpとずっと見比べていたのですが、BluePrintは同じ状態でして、、
そしておっしゃるように、Transformに注目してみると、サンプルの方ではRoot(Sceneコンポーネント)の配下にStaticMeshを持たせていたみたいでした。上手くいっていたみたいでした!同様にSceneをかませたら解決しました。
今回は0.25で配置されたものが、Drop時にTransformが1にリセットされて再生成されてしまうバグと認識しました。代替案も大変参考になりました!ありがとうございました。
ちなみに、GetWorldTransformノードにReturn value Rotation
などのピンを追加するのはどうしたら良いでしょうか?
少し調べてみたり、ノード右クリックを片っ端からためしてみても分からず。。
Transformのピンのところで右クリックして出てきたメニューの「SplitStructPin」を選択すると分割できます。
出てこない場合は一度ノードを切ってから再度やると出てきます。
物理挙動を有効化してアイテムを取得したときにアイテムのコリジョンが無効化するので
床がすり抜けていき、Z軸座標が言って一以下になってアイテムが削除されているのが原因のようです。
よってコリジョンの管理と設計をきちんとやる必要があります。
Dropアイテムボタン押下後に、Blueprint側でコリジョンを有効化し直してるように見えたのですが、これでは十分でない感じでしょうか。。
別でコリジョンを有効化する必要があるのでしょうか
その前にアイテムを取得した瞬間にコリジョンを切っています。
その時はコリジョンが無い状態になるのでレベルの床との当たり判定が消えて奈落の底に落ち続けていきます。
ここでコリジョンを切らないという選択は邪道でしょうか?
そこはどう設計するかによりますが
自分がぱっと思いつくのが以下の2つです。
・コリジョンを切ると同時に物理挙動も無効化する
そしてコリジョンを有効化するときは物理挙動も有効化する
・コリジョンを2つ用意して片方はレベル床との当たり判定を常に有効化し、もう片方はプレイヤーとの当たり判定用のコリジョンとして配置し、プレイヤーとの当たり判定用コリジョンの有効無効を切り替えて対応する
前者でやってて上手くいっていないという印象で、
後者に賭けてみたいと思うのですが、
コリジョン2つ用意するというのはメッシュの形に合わせたコンポーネント?を追加すればいいのでしょうか?
このBoxCollisonのコリジョン設定をレベルの床との判定を行うように設定し、
子のコリジョンは常に有効化にするように処理を変更すればいいかと思います