キャラクターを斜面に立てるにはどうすればよいですか?


8

まず第一に、私は原則を理解したいので、私は平易な英語での説明を好むことに注意してください(もちろん、私はこれらの説明を補足するコードに対して何もありません)。

私は私が何を意味するかをお見せするために、斜面に正しくゲームリンボの2つのスクリーンショットとレッツ・スタートを文字ステップを作るための方法は何か疑問に思って: 斜面に立つリンボの主人公 平らな地面に立っているリンボの主人公
だから、あなたはこれらの写真で見ることができるように、それはの背骨のように見えます性格は実際には地表ではなく地平線に垂直であり、この観察は私に私の疑問を導きます:
スプライトキットでそのような動作をどのように再現できますか?物理的なボディをノードにアタッチすると、それを回転させる可能性があるので、次のようになります。 スプライトが立っている地面に追従していることがわかります。そのため、キャラクターの足は床にありますが、その背骨は地平線に対して垂直ではなく、地面に対して垂直です。

ローテーションを無効にすると、次のような ここでは、脊椎は水平線に対して垂直ですが、キャラクターの足は床に触れていません。 実際には、スプライトの1つのコーナーだけが床に接触しています。
結果が得られます。これらの方法の両方を実行すると、重要な問題が発生し、自然に見えなくなります。それで、それを自然に見えるようにするにはどうすればよいですか?いくつかのスプライトといくつかの物理ボディを作成し、それらをすべてジョイントで結合することを考えたのですが、これを見ると、 ここに画像の説明を入力してください
これらのノードを物理的にリンクすることはできますが、どのようにしてそれらを作成するのですか?グラフィカルに見える?たとえば、現実では、太ももとふくらはぎは膝でつながっています...

何か案は ?


1
自分で斜面に立ってみて、どうなるか見てみましょう。片方の脚をもう一方の脚の前に置くと、傾斜を補正するために、高い方の脚を曲げる必要があります。したがって、複数のジョイントを使用するアプローチが適切なオプションです。
Eejin、2014年

@Eejin Okありがとう、そして関節のレベルでのグラフィカルなリアリズムはどうですか?自然にリンクするにはどうすればよいですか?複数のノードがあるように見えないようにするには?
トレバー

それはあなたのゲームのいくつかの側面に依存します。もちろんよく描かれた体の部分が役立ちます。サイズと、完璧なディテールの重要性についてもう少し詳しく教えてください。
Eejin、2014年

常に地面が高い草などである場合、スプライトの低いポイントを使用するだけで大​​丈夫かもしれません。キャラクターの脚は、彼らがどのように立っているのかわからないところまで不明瞭になるためです。
jzx 2014年

SpriteKitについては知りませんが、多くのゲームでは、プレーヤーを長方形ではなく「カプセル」または「錠剤」の形で表現しています。また、通常、物理オブジェクトはスプライト自体よりも小さくなります。
Thane Brimhall 2014年

回答:


6

ジョシュ・ペトリーの答えをさらに詳しく説明すると、足の角度を見つけるのも非常に簡単です。

ここに画像の説明を入力してください

足の角度は、傾斜面の角度と同じです。その斜面には2つのポイントがあるため、傾斜角を見つけることができます(斜面の三角形の2つのコーナーを使用することも可能ですが、緩やかな斜面は複雑になりすぎます。ローリングヒルの場合、これが最善の解決策です)。最終的に、勾配はH / P(曲がった脚のかかとが対応するヒップの真下にあると想定)、またはarctan(H / P)radになります。コサインを使用すると、H =(F + T)-(Fcosθ+Tcosφ)であることが簡単にわかります。

足の角度はarctan((F(1-cosθ)+ T(1-cosφ))/ P)になります

PS:本当に入りたい場合は、Pに追加された幅を見つけることもできます。

PSS:足は上にしか曲がらないので、80度の坂を登ろうとする前に注意してください。

PSSS:人々はかかとで丘を登ることはありませんが、彼らはその上で休んでいます。足を丘の上で完全に平らに保つと、つま先のボールの上に立っているプレーヤーをいくらか正確に表現でき、アイドリング中にかかとが地面に沈むことで、非常にリアルな動きができます。


5

使用できる簡単な解決策とトリックがあります(たとえば、傾斜がすべて固定角度になる場合は、傾斜した動きとアイドルの追加のスプライトを作成し、傾斜した表面上にあるかどうかをゲームコードに知らせるメカニズムを提供します。それに応じてレンダリングします-これは通常、古いスプライトベースのゲームが行っていたものです)。

マルチジョイントスプライトのアイデアを拡張する一般的な解決策は、インバースキネマティクスを使用してキャラクターの足の配置解決することですも参照)。

これには、キャラクターの論理的な骨格構造を定義することが含まれ、いくつかの異なるスプライト(胴体、必要な数の脚のパーツ、および足)によって視覚的に表現されます。このシステムのエンドエフェクターは、(固定された)胴体の位置と、現在の歩行サイクルフレームに基づいてどの足が前にあるかのアイデアから計算できる、斜面上のキャラクターの足の位置です。これらの2つの既知の位置の間で、IKシステムは脚のジョイントのパラメータを解決し、傾斜したサーフェス上で実際のBipedがどのように安定するかを合理的に近似します。

多くの場合、IKは3Dの問題として表現されますが、比較的簡単に2D空間に減らすことができます。2Dでは、3Dの場合のようにリアルな動きを作成するために、ジョイントの回転コンストレイントと同じくらい多くのファスティングを行う必要はありません。

これは、すべてのフレームを手作業で作成する古い手法ではなく、特にキャラクターの骨格ベースのスプライト合成の傾向を考えると、多くの最近の2Dゲームで使用されている方法です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.