OpenAssetOrgのアセットで2Dゲームを作る⑧ ProjectileMovementComponentの移動制限
「矢の形が変になってる問題は、途中で一時停止してみたところ、やっぱりY方向にずれていたことがわかった」
妹「でもなんでズレるんだろ? キッチリまっすぐ飛んだやつは跳ね返っても、まっすぐに飛ぶと思うんだけど」
「理屈としてはそうなんだけど、多分高速化を優先して計算精度が落としてるんだと思う。でも今回のようにキッチリ動いて欲しい時もあるから、そういう時用のオプションがある」
「ProjectileMovementComponentの中の、ConstrainToPlaneで、ある軸を固定した移動というのが設定できる。今回の場合、Yを固定するといい感じになる。UseGlobalPhysicsSettingにした場合はプロジェクトの物理設定と同じ設定になる」
「ただこっちはY軸を固定する設定を、XZPlaneという風に表現してる。XとZだけ動かせるようにしたいということで、言いたいこととしては同じなんだけど」
妹「ProjectileMovementって物理なの?」
「ProjectileMovementComponentは物理ではない。シンプルな仕組みで、設定も物理とは独立してて関係ない。関係はないんだけど、実際問題として軸を固定して動かしたいという意図は同じだから、そこで統一して設定できたら便利かな? っていう話だと思う」
「ちなみにX軸を固定するとこんな風になる。矢をどの角度に撃とうとしても上か下かで、横方向に一切飛んでくれなくなる。もちろん奥行きのY方向にもバンバンはみ出していく。ゲーム的な動きを作ろうとする時にはだいたいこのコンストレイントを上手く設定してやる必要がある。それか自分でTickイベントとか使って移動させるか」