読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

SetCollisionResponseを実行すると、Overlapイベントはその場ですぐ発生する

UE4.11 コリジョン ブループリント 仕様・不具合 デバッグ

f:id:una_unagi:20160515220713p:plain

f:id:una_unagi:20160515220737p:plain

「CollisionOverlapの発生タイミングを調べてみたところ、なんだか不思議な仕様がわかった。パンチの時に、手を振りかぶった時にSetCollisionResponseでコリジョンを有効にしてるんだけど、SetCollisionResponseの時点ですぐOverlapが起きてる。もちろんその時点で重なってた場合だけど。写真にはないけどEndOverlapの方でも同じだった」

妹「……そういうものなんじゃないの?」

「今まで見てきたブループリントのパターンからいうと、まず実行中イベントが終わってから、Overlapが起きると思ってたんだよ。もしくはDelay系ノードを挟んだ場合。この場合はPrintStringだけだから直接は影響ないと思うけど、変数SETのタイミングとか気を付けないといけない。他のも気づいてなかっただけでそういうのがあったのかも」

妹「ところで2回Overlapイベントが発生する原因はわかったの?」

「動画にしてコマ送りしたりもしたんだけど、よくわからない……ただ1回目のBeginとEnd、そして2回目のBeginまでが1フレームの間に起きてるのは間違いない」

妹「それもやっぱり変なタイミングでイベント起きてるのかなあ」

「1つ確認できたのは、敵が動いてない場合、Overlap2回は起きない。崖っぷちに追い込んだり、移動処理を無効化すると、普通に1回だけ当たる」

妹「動いてるのとオーバーラップさせるとおかしい?」

「というか、今回の場合パンチのコリジョンも手に合わせて動いてて、敵も動いてるから、双方のコリジョンが動いてる場合に、どういうタイミングでOverlapが発生してるのか、という話になる。今のところさっぱりわかりません」