Unityでロープ作成

3Dロープパズルを作りたいと思い作成中(コアメカニクス)

物理ロジックが難しすぎて色々試してます
アプローチは現在3つ
①Unityの物理エンジンを利用
②ビレ積分を使用
③Line Castを使用

パズルゲームを作成するための最低条件の設定
a.トンネリングの防止
b.ロープ同士の衝突
c.ロープ同士の上下
d.衝突箇所の維持・解除

あれば良い事
A.パフォーマンス
B.見た目

現時点(9/28)での各アプローチ評価(10段階)

①Unityの物理エンジンを利用
a.4点
ロープの長さを管理するロジックに苦戦中。単純なスタート〜エンドの長さは簡単に処理出来るけど、ロープ同士が絡まり長さが増えた場合をどうするかで停止中。
長さ管理をクリアしないとトンネリングは必ず発生。
長さがクリア出来たらトンネリングはかなり防げる可能性はあり

b.10点
colder同士の衝突管理はめちゃくちゃスムーズ。衝突感知範囲の調整の自由さには感激。

c.8点
Z軸を調整する事で管理はかなり簡単。
しかし、長さのロジックでsegmentの密度が変化してめり込みが発生するか?しかし、自然な絡まりの再現には成功。

d.6点
予期しない挙動によりSegmentが暴れる可能性は充分にある。管理下では素晴らしい。

A.2点
パフォーマンスはかなり悪い
大量のSegment(Colder・Rigidbody)を動かすのでロープが増えるとヤバいかもしれない。イベント駆動管理にして動かしているロープとそれに衝突したロープのみを処理動かすロジックでも、パズルが複雑になるとどうなるかは不明。でも重要度は低め。


②ビレ積分を使用
a.2点
どうやってトンネリング防止を強化するのかマジで分からない。ちょっと負荷が増えたらすぐに貫通しやがる。

b.5点
感知までは成功。でもその程度…

c.0点
ここで停止。どうやってもロジックがクリア出来ない。

A.7点
悪くは無い。

③Line Castを使用
a.10点
非常に優秀。cubeには弱いけど、使わなけりゃ問題無い。

b.0点
現在奮闘中。Colderを持つオブジェクトには優秀なんだけどなぁ…

c.0点
上記と同様

A.10点
非常に優秀。何も言う事は無い。


統括
いっその事①と③のハイブリッドを採用してみるか?
基礎は①で距離計測に③を使う。
③の衝突処理には①のセグメントを引っ掛ければ安定した距離は計測出来そう。
①でロープを作って、ドラッグして動かしている最中は③で距離を計測(見た目担当)、距離が確定したら①を③に沿って作成?
A.の評価が気になるけど、とりあえずやってみる価値はありそう?

いいなと思ったら応援しよう!