おでんブログ

ゲームデザイナーな自分がUE4でつまづいたところを記録していくブログ

【UE4】Paper2Dで攻撃コリジョンと被ダメコリジョンを同時に扱うには

Paper2DのSpriteって複数のコリジョンをつけても個別に判定ができない。だから、これは被ダメ(身体用)とか、これは攻撃(武器)とかの判定ができない。

でどうするかを考えていたんだけど、

被ダメ用と攻撃用でSpriteを分けて、重ねて表示する

のがよさそうだった。

↓のような感じで、被ダメ用のコリジョン(左)と、攻撃用のコリジョン(右)の2つのSpriteを用意して重ねて表示する。Spriteは絵がなくても(Textureの指定なし)でもエラーは起きなかったので、攻撃コリジョン側はコリジョンだけのSpriteにできる。

とはいえ絵がないとコリジョンはつけづらいので、元のSpriteを複製してコリジョンをつけてからTextureをクリアすればOK。またコリジョンをつけなおしたいときはTextureをいったん復活させれば元に戻る。

f:id:marutoku-oden:20210216181524p:plain f:id:marutoku-oden:20210216181643p:plain

 

Spriteを二つに分けると↓のようにそれぞれ別で判別できるようになる。

Sprite(Sprite0)→被ダメ用

AttackCol→攻撃コリジョン

f:id:marutoku-oden:20210216182007p:plain

Overlapもそれぞれで判別できるようになる。
f:id:marutoku-oden:20210216181936p:plain

FlipBookでアニメーションさせている場合は、本体のアニメーションに合わせて攻撃コリジョン側のFlipbookもフレームを合わせる必要があるし、再生タイミングもきっちり揃えないとタイミングがずれちゃうかも。

↓本体のアニメーションと同じタイミングで攻撃コリジョンを切り替える必要がある。

f:id:marutoku-oden:20210216184603p:plain f:id:marutoku-oden:20210216184633p:plain

(NoCol_Spriteはコリジョンも表示もないスプライト。攻撃コリジョンが出てない間はこれを指定している)