iPhoneでCocos2dを使って2D車を描いて、自然な方法で左から右に操縦したいと思います。ここで車を回してスプライトを動かす
は、私が試したものです:
は、車輪の角度を計算し、ちょうどホイールが指す先のポイントに移動します。しかし、これは非常に不自然な感じを作り出します。車は時間の半分にドリフトする
その後、私は車からターニングサークルを得る方法についていくつかの研究を始めました。つまり、ホイールベースと車の幅のような定数が必要でした。
float steerAngle = 30; // in degrees float speed = 20; float carWidth = 1.8f; // as in 1.8 meters float wheelBase = 3.5f; // as in 3.5 meters float x = (wheelBase/abs(tan(steerAngle)) + carWidth/ 2); float wheelBaseHalf = wheelBase/2; float r = (float) sqrt(x * x + wheelBaseHalf * wheelBaseHalf); float theta = speed * 1/r; if (steerAngle < 0.0f) theta = theta * -1; drawCircle(CGPointMake(carPosition.x - r, carPosition.y), r, CC_DEGREES_TO_RADIANS(180), 50, NO);
ラインの最初のカップルは私の定数です:
私はこの件に関しては.NET tutorialを見つけましたが、実際に完全に変換することはできません。これは、CocoaでサポートされていないMatrixesを使用しているためです。
誰かが私にこれを始める方法についてのいくつかの示唆を与えることができますか?私はサンプルコードを探していますが、何も見つかりません。私は私の定数を修正 の下に与えられたコメントの後、私のホイールベースは今50です
はEDIT(スプライトが高いは50pxです)、私のcarWidthは(スプライトの幅が30pxれる)30です。
しかし、私の車には最初のティックがあり、ローテーションは正しい(そして配置も)という問題がありますが、その後は計算が間違っているようです。
回転円の中央が元の位置に保持されずに移動されます。私が必要とするのは、車の各角度において、回転円の元の中心を再計算する必要があるということです。私は半径と回転角度を持っているので、これは簡単だと思うだろうが、どうやって車を素晴らしいサークルで動かし続けるのか分からないようだ。
これ以上のポインタはありますか?
行列は単なる多次元配列です。あなたは、参照コードの適応/作業が可能でなければなりません。 – EightyEight