妹でもわかるUnrealEngine4

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

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

一定時間無敵状態にする

妹「敵に当たった後はしばらく無敵になるようにしたいんだけど、コリジョンの無効化が上手く出来ない……」

「その場合はコリジョンいじらない方がいいと思うんだけど」

妹「えっ、でもそしたら当たっちゃうじゃん」

「当たらないと床すり抜けて落っこちちゃうから。無敵用の変数を作って、無敵かどうか区別できるようにして、Branchノードで無敵じゃない時だけダメージ関連の処理をすればいいんだよ」

妹「コリジョンはあるけどダメージをくらわない……それでいいのか」

「無敵ってそういうもんでしょ」

妹「じゃあ無敵にするのはダメージくらった時でいいとして、戻すのはどうやればいいんだ? 1秒経ったら無敵じゃなくしたいんだけど」

「Tickイベントだったかな、定期的に実行されるやつがあったでしょ。あれで1秒経ったら無敵用の変数を元に戻すようにすればいい」

妹「むずかしいかも」

「TickイベントのDelta Secondsは秒単位の数字が小数で取得できるみたいだから……無敵用変数も小数にして、無敵になった時に1を代入する。その後Tickイベントの度に、無敵変数が0以上なら、Delta Seconds引いていけばいい。ダメージ処理のところでは0以上なら無敵、0以下なら普通にくらう」

妹「変数とはそうやって使うのか。でもコリジョンの設定は上手くいってないままなんだな。床すり抜けて落ちないといけないはずなんだけど……あ、そうだ、これもすり抜け用変数を作ればいいのか?」

「それは無理。ダメージはブループリントで書いてたから融通効くけど、当たっても通り抜けないようにする処理はブループリントで書いてないから。変数を作ってもそれを使ったBranchノードをはさむところがない」

妹「うーん、そしたらやっぱりコリジョンの設定も出来ないと駄目なのか」

「まあとりあえず今回は要らなそうなので、要るようになってからでいいのでは。今ちょっと触ってみたけどわかんなかったし」

妹「わかんなかったのかよ!」