UE4_休符さんの「パンチラ防止機能」
— 休符 (@kyu_fu) 2020年8月26日
しばらく眺めていたが、やっと理解できた。
ので備忘録
まずこの機能は
「パンチラしようとしたら、カメラが変な方向を向く」機能
プレイヤーカメラがキャラクターのローアングルに入ろうとするとカメラが変な方向を向いてしまう機能です。
— 休符 (@kyu_fu) 2020年8月26日
なので
毎度、定められた動きをカメラにさせるものではない(たぶん)
そしてシークエンスに来る前に、たぶんカメラのLocation座標、XとZで分岐している。
カメラの仕様がわからないけど、パンチラしていると考えられる座標が必要で
その条件がそろったうえで
シークエンスのThen1でカメラのピッチ(RotationのY座標)を比較している。
このゲームでは、ある座標から5度以上、上を向くとパンチラとみなされる(たぶん)
パンチラとみなされた場合、Trueにながれて、カメラの相対位置座標のXとZに
なんか数字が流し込まれる。
中身はシークエンスのThen2でセットされているので、その都度ではなく
それ以前にセットされた数字を利用している(たぶん)
Falseだった場合は、おそらくデフォルトの数字(-750,0,50)にリセット処理される
ゲームの仕様がわからないので-750がどういう処理なのか謎だが・・・
おそらく親がプレイヤーキャラなので
そのキャラクターからX-750、Z50の位置が基本なのかなと。
どちらにしても
回転は0度にリセットされている。
最大の謎はThen2で
Yの絶対回転座標に15かけて、-750を足して、
パンチラ時に相対位置座標のXに流し込む値にセットしているところ。
なんで???
と思ったけど
そもそも「変な方向」に向ける処理なので
変な数字を入れるためなのかなと。
最後はウィジェットを出す処理
パンチラしようがしまいが
パンチラ危険領域に達した場合に
何か警告を一度出すようにするもの(たぶん)
ここは難しくないので特筆はしないが
DoOnceをリセットさせるために
最後から最初に伸ばされているのは初めて見た
のでこの理解でいいのか不明。
レベル遷移を挟まない処理だからか
もしくはゲームインスタンスに書かれている処理なのか
パンチラの警告を何度も発動させるためのつなげ方なのかなと。
この処理自体は
パンチラしたあとの処理なので
気になる「どうやってパンチラと判定するか」に関しての処理は
このイベントからだと「カメラのY軸の回転から判定している」くらいしかわからなかった。
他の人のイベントを見て
それを理解しようとすることは
勉強の方法として面白いなと思ったのでやってみた。
結果
よくわからなかったが理屈がわかって楽しかった。