2011-08-10 11 views
1

私はcocos2dとbox2dについて質問があります。 ユーザーがIpad Appのホイールに触れる方法に応じて回転する単純なホイールを作成する必要があります。 あるタッチでホイールがある速度で動き始め、ある回転の後に速度が減速して停止するまで動きます。 (古典的な幸運な車のように)。iPadのcocos2Dと(?)Box2dをタッチするとホイールアニメーションが表示されますか?

私はいくつかのヒントが必要です。あなたはそれがcocos2dだけを使って行うことができると思いますか?またはBox2Dを使用する必要がありますか?私はすでにBox2dを使い始めました。それは非常に強力ですが、物体に一定の開始速度の回転を与えた後、オブジェクトを停止させるために世界シミュレーションをしますか?

ありがとうございます! Benza私はまた、これを実現するための任意の有用な例/記事を見つけることができませんでしたAndroid上でまったく同じことを開発しましたので、私はこのようにそれをやった

+0

私はまったく同じことをしなければなりませんでしたが、アンドロイドのために。あなたがコメントとコメントの投稿の背後にある概念と数学を知りたいのであれば。 – blejzz

+0

jernej、ありがとう、私は欲しいです! – benza

答えて

0

:ユーザが画面に触れてい

fling/swipe(画面上で指を動かして画面から削除します)、speedXとspeedYをピクセル/秒で計算します(アンドロイドではonFling(float velocitY、float velocitX)メソッドがあります)。

次に、ピクセル/秒単位の速度を回転/秒に変換します。つまり、指差しされたユーザーが1秒間に1500ピクセル移動した場合、ホイールはX回回転します。例えば情事/スワイプspeedXとスピーディが1500ピクセル/秒であり、あなたのホイールが150ピクセルの半径を持っている場合、あなたはそのようなホイールの弧の長さを計算します。

 arc = r * PI. (r=150) 

次に、あなたは次のように1秒当たりの回転数で速度を計算これは:あなたはスピードを持っていたら

 spinSpeed = Math.sqrt((speedX*speedX)+(speedY*speedY))/arc)*360 

あなたは、すべてのTミリ秒(私は40milisecondsを使用)このように、車輪の回転角度を変更することができます。

 wheel.angle += spinSpeed; 

をあなたはまた、実装する必要がありますドラッグ、そのホイールは最終的にこのように、遅くなる:

 spinSpeed -= drag_value; 
    wheel.angle += spinSpeed; 

あなたは所望の効果(それが遅くなりますどのくらいの速)にdrag_valueを調整する必要があります。あなたは定数でスピンスピードを掛けたいので、スピードを上げることができます(私は40を使いました)。

この実装には、ユーザーの指に続くホイールは含まれません。これを行うには、画面の最後のタッチ(X座標とY座標)以降にユーザーの指がどれだけ移動したかを計算する必要があります。したがって、2つの座標(lastTouchX、lastTouchY、newTouchX、newTouchY)が必要です。座標がある場合、この座標を通過する線の傾きまたは勾配を計算することができます(勾配/勾配は、この式ではKです。y = kx + n - 標準線の式)。次に、この2つの線の交差角度を計算し、それをホイールに適用する必要があります。このような何か:

 tg = ((k1-k2)/(1+(k1*k2))); // k1 is the slope of the previous touch coordinate; k2 is the slope of the current touch coordinates      
     angle = Math.toDegrees(Math.atan(Math.abs(tg))); 
     wheel.angle += angle; // to implement spinning in the other way use wheel.angle -= angle; 

は、あなたのアイデアを得るホープ

+0

詳細な回答をいただきありがとうございます!私はcocos2dでIosにあなたの方法を実装しようとします!私はそれができるようになることを願っています! – benza

0

uは今ではそれを考え出したかもしれないが、どの方法が.. uは、車輪を作成して、タッチにいくつかの初期回転と速度で開始することができます。しばらくしてオブジェクトを表示する必要性に応じて摩擦を有効にします。 希望することができます

関連する問題