2

キャラクターのスプライトを、彼(長方形)が立っている、または歩いているプラ​​ットフォームのスコープに応じて回転させる必要があります。彼が立っているプラ​​ットフォームの傾斜に合わせて回転させることで効果を発揮しました。しかし、2つの問題があります。

まず、回転がスムーズではありません。キャラクターが平らなプラットフォームから傾斜したプラットフォームに歩くと、キャラクターは瞬時に回転します。また、その回転により、キャラクターは少し押し上げられます。

第二に、彼が坂を降りて再び平らなプラットフォームに入ると、それに応じてキャラクターを回転させることができません。これは、その時点でキャラクターが平らなプラットフォームと傾斜したプラットフォームの両方と衝突するため(これらは一緒に配置されます)、2つの衝突検出機能が連携して機能するため、数ステップの間、キャラクターは狂ったように前後に回転します。

キャラクターの向きを検出して、キャラクターのどの点(左または右)が最初に何かに触れているかを調べて解決しようとしましたが、衝突しか検出できず、「衝突なし」では検出できないため、機能しませんでした。または「キャラクターがプラットフォームを離れるとき」。

状況のイラストを添付しました。助けてください、ありがとう!

PS:私は画像を投稿することを許可されていないので、画像についてはhttp://i.stack.imgur.com/jqPjt.pngにアクセスしてください。ありがとう。

4

2 に答える 2

2

あなたのローテーションはずれているようです。文字の長方形のベースを中心に回転する必要があります。それはあなたの問題のいくつかを解決しますが、すべてではありません.

キャラクターが 2 つのプラットフォームに接触している場合を処理する必要があります。現在、プラットフォームから角度を直接抽出し、それをキャラクターに割り当てているだけだと思います。接触点が異なる場合は任意の角度が必要になるため、それではうまくいきません。

解決策は、2 つの接触点の間にベクトルを作成し、ベクトルのコンポーネントを取得してx,yを呼び出すことatan2(x, y)です。これにより、接点間の角度がラジアンで与えられます。パラメータを正しい方法で取得してください。ゲーム開発には、三角法とベクトル計算の知識が必要です。ここで何が起こっているかというと、斜辺が 2 つの接触点によって定義された軸に沿った直角三角形を作成し、次に三角形を反転させてtan = opp/adj、x 成分と y 成分を交換することで角度を取得します。

接触点が常に特定の順序で指定されていることを確認する必要があることに注意してください。そうしないと、作成した三角形が反対方向を向いているため、奇妙な角度で回転することになります。最初に x 座標に基づいてソートする必要があるかもしれません。

于 2012-05-02T12:36:29.840 に答える
1

この例の簡単な解決策は、オブジェクト全体ではなくコーナーで衝突検出を行うことです。カットした点だけが接するような角度で接する点でオブジェクトを回転させることができます。このソリューションは、上向きの場合にのみ機能し、下向きには機能しません。それを解決するために、側面でも衝突検出を行います。次に、側面がちょうど接触するような角度で、接触している角を回転させます。

于 2012-05-02T14:52:54.257 に答える