妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。当たった弾を消す処理はどこに書いたらいいのか?この広告は、90日以上更新していないブログに表示しています。Paper2D「昨日は矢が当たったら敵が消えるだけで、まだ色々足りてないんだけど、まず問題なのが当たった矢が消えずに残ってしまうこと。「でも壁に当たった時は消えて欲しくないんだよ。敵に当たった時だけ消える。矢同士の接触はコリジョンの設定でしないようになってるから、今のところ当たるのは敵と壁の2種類」(1)"矢"の方に、何かに当たったら自分を消す処理を入れる「矢の方に入れるパターンの難しいのは、今回は自分が何と当たったかわかるまで消せないので、それを調べる処理が必要になること。今回の場合、当たった先のコンポーネント名を直接ブループリントに書いちゃってるから疎結合にならない。「これだと柔軟性ゼロだから、相手方のコンポーネントの種類が増えるたびに分岐が増えちゃう。やるとしたら、タグを使うとか、インターフェースを使うとか、なるべく直接クラス名を入れない方法が良い」(2)"敵"の方に、当たってきた何かを消す処理を入れる「逆に敵側の処理で消してしまう方法もある。昨日はDamageCauserに何も入れてなかったけど、そこに矢のアクターを入れるようにしておくと、ダメージイベントの中から当たってきた矢がどれかわかる。「今の仕様だとそうなる。弾の種類が増えたりすると対応しきれなくなる場合がある。矢のDamageイベント(ここで消す)「こういう方法も考えられる。消えない貫通レーザーを作った場合には、レーザー側でダメージを無視するだけでいい。いうことを疎結合のまま達成出来る。「インターフェースとか作るよりは楽かなとも思うんだけど。この方法だと、矢のOnActorHitとOnTakeAnyDamageと別のイベントだから、それぞれコンポーネントも別に出来るというのもある。「当たった時の反応が1種類なら(1)、当たった時の反応が色々でも弾は1種類なら(2)、当たった時の反応も弾の種類も色々な時は(3)かインターフェース仕様かなあ。(id:una_unagi)誤字脱字や古くなっている情報等あれば、ぜひコメントやメールでお知らせ下さい。)はてなブログをはじめよう!una_unagiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。