2011-08-21 9 views
1

これは私の最初の投稿ですので、私にご負担ください。私は私の問題について私がここでできるほど明確にしようとします。 まず、数学を吸うと言いましょう。私は学校でそれを失敗し、単純な数学の概念を理解することができず、特に私がコードするのが大好きなので、私は終わりがないと思う。プログラムを行いたい人、基本的な数学演算を実行できない人悪いコンボ。 Aaaanyway、問題に。イメージをある程度から徐々に回転させる

いくつかのコンテキスト。私は小惑星タイプのゲームを書いています。それは非常にきれいに来ている、と私はこのサイト(ありがとう!)とGoogleのおかげで今までのすべてのハードルを克服してきました。私は自分の問題を解決するために最高値と最低値を検索しましたが、どちらも機能しない解決策に陥るか、理解できず、自分のコードに組み込むことができないようです。

この問題は、船の回転を伴います。私はジョイスティックが押されている角度を返す画面上のジョイスティッククラスを持っています。私はその角度を使って船を同じ方向に向ける。

私がしたいのは、です。徐々には、最短のターン、左または右を使用して、ユーザーが行きたい角度に向かって船を回します。私の考えでは、「どうしたら5度から350度、左に行くの?」と思っています。私はここで...

を知らない私のドローコードです:

public void draw(Canvas canvas){ 
    canvas.save(); 
    canvas.rotate((float) (fAngle + 90), (float) (dX + (mShip.getIntrinsicWidth()/2)), (float) (dY + (mShip.getIntrinsicHeight()/2))); 
    mShip.setBounds((int)dX, (int)dY, (int)dX + mShip.getIntrinsicWidth(), (int)dY + mShip.getIntrinsicHeight()); 
    mShip.draw(canvas); 
    canvas.restore(); 
} 

角度がジョイスティックgetangleメソッドからfAngle変数に渡されます。画像が向い​​ているため、角度は90度増加します。

user.fAngle = oJoystick.getAngle(); 

だから各ゲームチックに、私は、プレイヤーは程度によって、学位を行きたいどんな方向に向かう船を有効にします。これについてのどんな助けも大いに感謝されるでしょう!

読んでいただきありがとうございます!

+0

http://asgamer.com/2009/as3-character-movement-asteroids-style-360-degree-動き - これをチェックしてください、作者は彼がしている動きを説明する素晴らしい仕事をします –

答えて

1

tickの関数ではなく、次のようになります。 user.fAngle = oJoystick.getAngle();

使用この(お好みに合わせて増分を調整する - これは、回転速度を制御する):

const float increment = 1.0; 
float direction; 
float joy = oJoystick.getAngle(); 
float ang = user.fAngle; 
float fudge = 5.0; 

if (abs (joy - ang) > fudge) { 
    if (joy > ang) { 
     if (joy - ang < 180) 
      direction = 1; 
     else 
      direction = -1; 
    } else if (joy < ang) {  
     if (ang - joy < 180) 
      direction = -1; 
     else 
      direction = 1; 
    } 
} else // already pointing right direction 
    direction = 0; 

user.fAngle = ang + direction * increment; 
if (0 > user.fAngle) 
    user.fAngle += 360; 
if (360 < user.fAngle) 
    user.fAngle -= 360; 
+0

これは正しい方向に大きなステップです。ありがとうございました! いくつかの問題があります。時々、船は制御不能になります。 船は正しい方向に向くと「揺れ」ます。私はこれがフロートと丸めと関係があると仮定しています。 – Salx

+0

スピンについてはわかりませんが、コードを編集して揺れを少なくしました。あなたの好みに合わせて「ファッジ」を微調整します。 – user885074

+0

「ファッジ」は素晴らしい作品です。もう一度感謝します。船はまだ制御不能になっています。私は考えている。私のコードでcanvas.rotate(float)(fAngle + 90)がこれを邪魔していると思いますか?私は半分取り除いてイメージを修正してください。 – Salx