2012-03-05 4 views
1

私の発射体は弧を描き始めますが、右に移動すると制御不能になり、落ちることはありません。 何が問題なのか分かりません。As3:私の弾丸をアークにして元に戻すにはどうすればいいですか?

はここに私の最初の変数

private var gravity:Number = 9.8; 
private var xVelocity:Number = 30; 
private var yVelocity:Number = 30; 
private var speedx:Number = xVelocity*Math.cos(Math.PI/180); 
private var speedy:Number = yVelocity*Math.sin(Math.PI/180); 

これは弾丸が

bullet.x += speedx/10; 
bullet.y -= speedy; 
speedy -= gravity/10; 

(継続的にcreaton後に行われる)に移動され、これは弾丸が画面

bullet.x = (player.getX() +(Math.cos((player.getRotation()+90)*Math.PI/180))); 
bullet.y = (player.getY()+(Math.sin((player.getRotation()+90)*Math.PI/180))); 
に追加する方法がどのようにあるのです
+0

ここでは何かが重大に間違っています。最後の部分(「箇条書きが画面に追加されました」)では、前の場所に関係なく箇条書きの場所が変更されます。あなたが面白いやり方でプレイヤーを動かさない限り、私はあなたが現実的な弧の始まりをどのように獲得しているのか想像できません。 – Beta

+0

これは弾丸の元の場所です。混乱させて申し訳ありません。その部分が実際に最初に実行されています。本質的にプレーヤーは、その中心を回る円であり、弾丸が向いている方向に弾丸を発射します。 – user1212619

+0

それから、コードは基本的に正しく見えます( 'speed'と' velocity'のようないくつかの無害な特質は別として)。あなたは 'スピード'を見て、着実に減少していることを確認できますか?それはゼロから始まり、20回の反復後には約-19でなければならない。 – Beta

答えて

0

私はここで手足に出掛けるつもりです。私はあなたの座標が混ざっていると思います:実際には "上"は+x、右は実際には+yです。だから、弾丸は+xの方向に動き始め、+x( "上")に移動し続け、速くて速くなり、+y( "右")に向かって進みます。 +yに向かい、-yではなくなりました。これはあなたが定義した方法です。あなたが意図した以上にもう1つ-があります。

周囲の座標を切り替えると、物が現実的に見えるはずです。

関連する問題