Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

スケルタルメッシュ の コリジョン

277 views

Published on

2ちゃんねるのUE4初心者質問スレより

Published in: Software
  • Be the first to comment

  • Be the first to like this

スケルタルメッシュ の コリジョン

  1. 1. スケルタルメッシュ の コリジョン 目的が分かっていて一通りチュートリアルをこなしたい人→5ページに移動 コリジョンの設定だけをしたい人→17ページへ 結果がどうなるか知りたい人→22ページへ
  2. 2. キャラクターブループリントには2つのコリジョン があります 一つ目がキャラクターを覆うCapsuleComponent 二つ目がキャラクターのMeshに割り当てられて いるPhysicsAsset(右図で言うとメッシュに沿 ってる緑と赤のコリジョン)
  3. 3. なぜキャラクター(or敵キャラクター)に 2つもコリジョンが必要なのか 1/2 CapsuleComponentの役割 一つじゃダメ なんですか? ズバリ移動! 大雑把で滑らかな形のおかげで凸凹にひっかからない スムーズな移動を実現 スイッと
  4. 4. PhysicsAssetの役割 なぜキャラクター(or敵キャラクター) に2つもコリジョンが必要なのか 2/2 いくつかの役割がありますが今回の主旨に沿った役割は 当たり判定 CapsuleComponentはあまりに大雑把すぎて当たり判定 には向いていない そこでキャラの形に近いPhysicsAssetを当たり判定に使 いたい 私の判定当たり 過ぎ? 見た目通りの判 定 ダメな例 理想
  5. 5. で、実際にどうやるの? つまり銃弾がCapsuleComponentに当たらずにMeshに当たるようにしたい
  6. 6. まずは下準備 以下の方法が分かる方は自力でやって11ページまで飛ばそう ・FirstPersonTemplateを使ってプロジェクトを作る ・ThirdPersonTemplateからキャラクター関連一式をさっき作ったプロジェクトに移行する ・ThirdPersonCharacterブループリントを開きPhysicsAssetにSK_Mannequin_PhysicsAssetを割り当てる ・ThirdPersonCharacterブループリントのCapsuleComponentの大きさを以下のように変更する。 CapsuleHalfHightを300 CapsuleRadiusを300 ・FirstPersonProjectileにおいてInitial Life Spanを30、ProjectileComponentのInitial SpeedとMaxSpeedを共 に100に、Projectile Gravity Scaleを0に設定する
  7. 7. 下準備(全5工程) 1.FirstPersonTemplateとThirdPersonTemplate のプロジェクトをそれぞれ作る 2.ThirdPersonTemplateのThirdPersonBPフォル ダをFirstPersonTemplateに移行する わからない方はこちら↓ 移行についての公式ドキュメント
  8. 8. 下準備 続き 3.ThirdPersonCharacterブループリントのPhysicsAssetを割り当てる まずThirdPersonCharacterを開く 次にコンポーネントのMeshを選 択 最後に詳細でPhysics Asset Overrideを検索 SK_Mannequin_PhysicsAssetを 割り当てよう SK_Mannequin_PhysicsAssetが ない人はThirdPersonTemplateか ら移行してこよう
  9. 9. 下準備 最後(嘘) 4.引き続きThirdPersonCharacterブループリントでの作業です まずCapsuleComponentを選択する 次に詳細でShapeと検索して Capsule Half Hight Capsule Radius のどちらの値も300にする CapsuelComponentを大きくすること で完成したときの結果がわかりやすく なるよ!
  10. 10. 下準備 最後 5.FirstPersonProjectileの設定 FirstPersonProjectileを開く 詳細にてInitial Life Spanを30に設定 ProjectileComponentを選択する 詳細にて Initial Speedを100 Max Speedを100 Projectile Gravity Scaleを0 に設定する 下準備お疲れ様!
  11. 11. 下準備の結果 ThirdPersonCharacterをレベル上に配置したら浮いている コリジョンを可視化(Alt+C)したらPhysicsAssetが見える プレイして弾を飛ばしてみたら無茶苦茶遅い これらを満たせば(多分)成功 ついでに実際に撃ってみてCapsuleComponent(キャ ラの周囲のおおきな球)に弾が跳ね返されることを 確認しておこう
  12. 12. コリジョンの設定 これから以下の流れでやってくよ ・独自のオブジェクトチャンネルを追加する ・ThirdPersonCharacterのコリジョンプリセットを変更 ・FirstPersonProjectileのコリジョンプリセットを変更 あれ・・・下準備より楽なんじゃ・・・
  13. 13. 独自のオブジェクトチャンネルを追加する オブジェクトチャンネルとは? なんでもいいのでレベル上のアクタを選択してみ よう(画像ではFloorを選択) 次に詳細にてCollision Presetsを探してみよう 赤枠で囲われた部分が自分のオブジェクトチャン ネル 青枠で囲われた部分が自分がどのように他のオブ ジェクトチャンネルに対して反応するかの設定
  14. 14. で?
  15. 15. 例え話をしよう Object Type いじめられっ子 Object Response 庇護者 助けを求める いじめっ子 逃げる Object Type いじめっ子 Object Response いじめられっ子 いじめる 庇護者 逃げる Object Type 庇護者 Object Response いじめられっ子 助ける いじめっ子 撃退する ドラえもん のび太 じゃいあん 「いじめられっ子」というオブジェクトチャンネルを持つのび太の反応 「庇護者」のオブジェクトチャンネルを持つドラえもんに対しては「助けを求める」 「いじめっ子」のオブジェクトチャンネルを持つじゃいあんに対しては「逃げる」 つまりアクタが持つコリジョンに関する 属性だよね
  16. 16. 実際設定してみれば多分わかります・・・ 例え話なんてしなきゃよかった・・・
  17. 17. 一旦整理 現在 理想 現在ThirdPersonCharacterの CapsuleComponentとMeshのオブジェクトチ ャンネルはどちらともPawnになっている 一方FirstPersonProjectileのコリジョンはPawn をブロックしている つまり銃弾はCapsuleComponentとMeshのど ちらともHitする 理想を実現するためにやるべきことは2つ 1.Meshに銃弾がHitする独自のオブジェクトチ ャンネルを割り当てる(18,19ページ) 2.銃弾がPawnを無視するようにする(20ペー ジ)
  18. 18. 4.名前はお好みで ここでは「MeshCollision」とします 独自のオブジェクトチャンネルを追加する こんどこそ 1.セッティングからプロ ジェクトセッティングを 開く 2.EngineのCollision を開く 3.NewObjectChannel をクリック
  19. 19. 作ったオブジェクトチャンネルを割り当てよう 先ほど作ったMeshCollisionというオブジェクトチャンネルを ThirdPersonCharacterのMeshに割り当てていきます まずThirdPersonCharacterを開 きます 次にコンポーネントからMeshを 選択します 最後に詳細のコリジョンの CollisionPresetsをCustom ObjectTypeをさっき作った MeshCollisionに設定します これでMeshとCapsuleComponentのオブジェクトタイプ が別々になりました
  20. 20. ProjectileがPawnを無視するようにする まずFirstPersonProjectileを開き ます 次にコンポーネントから CollisionComponentを選択しま す 最後に詳細のコリジョンの CollisionPresetsをCustom CollisionResponsesのPawnをIgnore に設定します MeshCollisionをBlockしていることも確認しておいてくだ さい これで銃弾はThirdPersonCharacterの Pawn(CapsuleComponent)に当たらずMeshCollision (Mesh)に当たるようになりました
  21. 21. 完成です
  22. 22. 早速プレイしてみよう ・銃弾がCapsuleCompnentを素通 りすること ・銃弾がMeshにHitして跳ね返って くること その2つを確認しましょう
  23. 23. コリジョンの設定は無限です 今回は紹介しませんでしたが独自のコリジョンプリセットも作成できます それに独自に作ったオブジェクトチャンネルに対応するために既存のコリジョン プリセットもいじらなければならないでしょう 自分のゲームに合った設定を探していきましょう

×