2017-01-29 5 views
1

私は現在、特定の座標に続いて.pngイメージを移動しようとしている2次元ゲームを持っています。私は(0,0)にこのオブジェクトを配置し、(500500)に移動しようとするところならば、私は次のことを行うことができます:座標を使ってオブジェクトをあるポイントから別のポイントに移動する方法は?

public void move() { 
    if (x < 500) { 
     x += velocityX; 
    } 
    if (y < 500) { 
     y += velocityY; 
    } 
} 

これは動作しますが、唯一その理由は完全に対角線。このシステムでは、オブジェクトを水平方向、垂直方向、または斜め方向にのみ移動できますが、その間には移動できません。私のような何かしようとした場合:

public void move() { 
    if (x < 500) { 
     x += velocityX; 
    } 
    if (y < 400) { 
     y += velocityY; 
    } 
} 

をオブジェクトは、ちょうどそれがy軸上の400に達するまで、それはx軸上500に到達するために、最後のビットのために水平に移動する完璧な斜めの角度で動くでしょう。まっすぐな道をたどっている間にオブジェクトをどの座標にも移動できるようにするにはどうすればいいですか?あなたの窓に斜めに完璧移動するに

+1

算術。オブジェクトを移動させたい距離を(各軸で)計算します。距離をあなたが取るべきステップ数で割ります。 xとyにそれぞれ加算する。 – khelwood

+0

@khelwoodステップ数? –

+0

ステップ数とは、イメージを一番上にしたいターン数を意味します。 –

答えて

0

、あなたは、あなたのケースで

velocityX   width 
----------- = ----------- 
velocityY   height 

velocityXとvelocityY`の比率は次のようでなければならないことを確認する必要がありwidthが500であれば、heightは400とあればあるvelocityX 5ならば

velocityY should be 4 
+0

'velocityX = 5'と' velocityY = 4'では動作しますが、 'velocityX = 2'と' velocityY = 1.6'では全く同じ比率ではなく、その方程式の結果です。 –

+0

'4'は' int'で、 '1.6'は' float'です。関連するすべての変数を 'float'とすると、正常に動作します。 –

関連する問題