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

妹でもわかるUnrealEngine4

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

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

ボンヂャーラビット強制射出事件(発生編)

2Dゲーム デバッグ ブループリント Character

妹「説明してもわからなそうというか、なんて説明したらいいのかわからないからやって見せるけど……」

妹「これエビ天を拾ったり離したりを繰り返してるんだけど、エビ天を拾った時に、下にいるボンヂャーラビットが飛んでいっちゃうことがあるんだよ。なんでだろ?」

f:id:una_unagi:20151116230614p:plain

「パッと見た感じは物理エンジンの暴走っぽい。物理設定のオブジェクトを、物理的にありえない状況……例えば別のオブジェクトの中に埋め込まれたような状態にすると、そこから抜け出すために凄いスピードで移動して、その勢いでどっかいっちゃうことはある」

妹「ボンヂャーラビットは物理じゃないけど、エビ天の方は物理で動いてるよ。だからエビ天が変なとこに飛んでいくことはよくあるんだけど、でもぶつかったりはしてないように見えるし。あと下に回り込んでやっても駄目で、ラビットより上にいる時にしか効かないみたい」

「エビ天を拾った時というのは確実なの? 離した時はなんにも起きないの?」

妹「それは確実。何回もやって確認したから。左を向いてる時にエビ天を離すと、そのまま異空間に消えたりはするけど、ラビットには影響なかった。拾った時だけ」

「それはそれで直した方がいいと思うんだけど……あと飛んでいく以外に、途中で動きが一時停止したり、向きが変わったりしてるケースがあるよね? 動画の後半の方とか、坂をのぼった後に反転するはずなのに、坂の手前で折り返してるのとか。この折り返しはどういう条件で起きるの?」

妹「あ、ほんとだ。気づかなかった。向きは足元の四角コリジョンが地面に重なってるかどうかで判断してるんだよ。地面がないと折り返して、下におっこちないようにしてる」

「壁に当たった場合とかは?」

妹「当たったらそこで止まるよ。止まるというか壁を押し続けるかんじになると思うけど。……エビ天を拾ったら地面がなくなる?」

「物理の挙動はともかく、向きが変える処理は自前だから、そのへんは調査しやすそう。特にその四角コリジョンがどういう反応をしてるのかは追跡調査が必要。あと当然だけど拾う処理のブループリント。ここにも容疑がかかってる。末尾ノードから減らしていって、どのノードを減らした段階で吹っ飛び現象が起きるのか特定する。それからラビットの情報をprint stringで随時出力して調べてみる。あとは調べていく過程で疑わしいやつを追っていく」

妹「先は長そうだ……」