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

妹でもわかるUnrealEngine4

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

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

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

2Dゲーム ブループリント デバッグ ノード解説

妹「アイテムを持つところは、なんかおかしいから、一から書き直したいとは思ってたんだよ。捨てる時もうまくいってないし、だいぶ前に書いたとこだから自分でも何でこうしたのかよくわからないし」

「とりあえず吹っ飛びを抑止するだけなら、今の仕組みのままでもできるよ」

f:id:una_unagi:20151119205236p:plain

「吹っ飛ぶバージョンのブループリントから、AttachLocationTypeをKeepWorldPositionに変えただけなんだけど、これで吹っ飛ばなくなる。SetActorLocationを無効にするとわかるけど、持とうとしたその時の場所のままでアクターをくっつける。今まではKeapRelativeOffestにしてたから、相対座標を維持してたから、見た目と全然違うとこに飛んでいってたわけで」

妹「うーん、でも結局本来持たせたい、"持つ"っていうソケットの位置ではないよね? 結局SetActorLocationは必要になるし」

「そうなんだけど、でも持った瞬間に関係ない位置に動くことはないし、事前に関係ない位置に動かす必要もない。元々そこにあったわけだから、変なとこにめりこんだりもしない」

妹「それでも直せるのか。根本的に、この場合アクターをそのまま持つ必要がないような気もしてるんだけど」

「拾われたアイテム(アクター)はいったん削除してもいいね。コンポーネントに絵だけ設定するとか。拾った時にクラスを変数に保存しておいて、捨てる時にはそれを元にスポーンしたらいいし。スポーンならコリジョンが重なった時の対応が選べるから、捨てた時に異空間に消える問題も直せるかも」