壁の上を歩くことができるキャラクターを作成するにはどうすればよいですか?


34

キャラクターがクモのように動くようにしようとしています。通常、ボールがロールアップできない傾斜が上昇すると、クモはゆっくりとupい上がります。

同様に、空中に長方形のプラットフォームがある場合、クモはエッジに到達したときに倒れるのではなく、エッジを包み込み、プラットフォームの側面と下側に続きます(最終的にプラットフォームの周囲を歩きます)。

さまざまなUnity 2Dコンポーネントを調べましたが、ほとんど成功していません。:(

私の世界の衝突境界のほとんどは、Collider 2Dコンポーネントによってマークされています(重力の影響を受けた単純なボールではうまく機能しますが、このスパイダーキャラクターではそれほど効果がありません)。


1
そのゲーム:youtube.com/watch?v=ga4Zqq1tXa8(PS1の「スパイダー」、ずっと前にプレイしました)はインスピレーションの源かもしれません。
tigrou 14年

回答:


43

ウォーマーの敵に小惑星基地のブログへのリンクを投稿しようとしていたとき、カーミントンがコメントですでにガマスートラの記事にリンクしていることに気付きました。

ただし、それ自体で答えとして、これにもう少し可視性と説明を与える価値があります。

私はレイシャインを歩いています、オーオー!

trickはレイキャストです。これらにより、コードは衝突に沿って線に沿ってスキャンできます。

Walkerをサーフェスにうまく合わせるために、2つの光線を地形に向けて発射します。1つはWalkerの左側から、もう1つは右側から発射します(上の赤と黄色の線)。

各RaycastHit2Dオブジェクトから、サーフェスに垂直な方向を指す法線ベクトル(マゼンタと緑の線)を取得できます。2回のヒットからの法線を平均化することで、基礎となる地形(シアンの線)を適度に反映したキャラクターに適した方向を取得します。

このオリエンテーションラインに沿ってフォースを適用して、キャラクターを地形に固定したままにすることができます(ただし、摩擦が低いと多少のスライドが発生する可能性があります)。

キャラクターが振動したり、ロボットのように見えるのを防ぐために、キャラクターの向きを徐々にブレンドします(Walkerがコーナーを横切るときの法線の急激な変化を確認しますが、ボディはスムーズに動きます)。

地形に鋭い角がある場合、これらの光線をわずかに内側に傾けることができます。クモが90度の崖の端を通り過ぎると、張り出した光線が崖面に当たります。

また、小惑星基地チームは、歩行者の動きの方向に短い光線を照射し(図示せず)、地形に当たるとその側の光線をオーバーライドします。これにより、歩行者が90度の凹面のコーナーを歩いているときに立ち往生することがなくなります。

ドキュメントによると、2Dレイキャストは、レイが開始するコライダーを検出するという点で3Dレイキャストと異なります。私にはうんざりしているように聞こえますが、テストでこれが確認された場合は、layerMaskを使用して、レイを制限して登山可能な地形コライダーのみを検出する必要があります。


2Dレイキャストが、レイキャストの開始点を含むコライダーを検出することを確認できます。ただし、最初の検出は常に距離0およびレイキャストの方向と反対の法線で返されるため、これは簡単にフィルタリングできます。
-XenoRo

2

これにはカスタムコードが必要です。

基本的に、問題のプラットフォームのような最も近いオブジェクトが何であるかを知り、次に最も近いエッジとそのエッジ上の最も近いポイントを見つけ、そこからクモの位置と回転を計算する必要があります。

それを本当に素敵にするのは簡単ではありませんが、それをまったく機能させるのは良い挑戦です。


2
ここで本当にいいのリンクは、必ずそれはまさにあなたのケースに適していない場合は、多分、多分...だgamasutra.com/blogs/AdamWinkels/20140220/211306/...
karmington
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.