2016-09-09 9 views
0

特定の問題が発生しています。私は非常に基本的なゲームを作成する方法を学んでいます。ボールは、正方形の左上隅または右下隅の直線から斜めに(図1 & 2のように)移動します。ボールのxとyの位置がフレームごとに変更する必要があることはわかっていますが、これについてどうやって行くのかは分かりません。四角形の中に斜めにオブジェクトを移動する

enter image description here

数学は私の強いポイントではないと私は、正方形と長方形の両方が異なる角度を持つことになり、特に以来、正確なルートを計算する方法がわからないんです。対角線を計算するために使用できる数式と、ボールのx座標とy座標がどれだけフレームごとに調整される必要があるかによって計算式がありますか?

私が行った研究から、sin関数またはcos関数を使って角度を計算する必要がありそうですが、すべてがどのようにフィットするかはわかりません。もっと詳しく知ろうとするとhttps://www.mathsisfun.com/sine-cosine-tangent.htmlを使っています。

私はこれをコード化することを計画していますが、これらの基本的な質問に対する回答には本当に感謝しています。私はプログラミングと数学の両方の側面を同時に学びたいと思っています。私はこのアプローチが最も適していると感じています。

多くの提案/助けをありがとう、私は本当にそれを感謝します。

答えて

0

矩形なので、傾き:rise(Y)/ run(X)を計算するだけです。これは、フレームごとの各方向のオブジェクトの位置をどれだけ増やすかを示します。オブジェクトの移動速度に応じて、いくつかの変更子を適用する必要があります(たとえば、オブジェクトを2倍高速に移動させたい場合は、特定のオブジェクトの変更で倍数を2にする必要がありますあなたが実際にオブジェクトの位置を変更する前に方向

0

スクエア: あなたは、フレームやJFrameのを使用している場合、あなたはあなたと一緒にコーディネートしてい

あなたは次のようにダウン、左、上からボールを​​移動することができます - > 。右上の角が(0,0)にあると仮定し、右下隅に達するまで両方の座標に1を加えます。

Uはforループを使用してこれを行うことができます

0

技術的にこのマッピングの角度は必要ありません。行の数式は "y = m * x + b"です。私はあなたがm、bを計算することができると推測します。そうでない場合は、私に知らせてください。

あなたが好きなもの(タイマー、イベントなど)に基づいて単純にxをインクリメントすることができます。上記の方程式にインクリメントされたxを入れて、それぞれのyを得ることができます。

ここでは、実際の数値ではなくピクセルを扱うほど十分ではありません。たとえば、あなたのゲームでx/yがフィートであると仮定しないようにします。足を表すピクセル数を知る必要があります。次に、画面に描画するときに、1フィートあたりのピクセル数で座標を調整します。

So ... 1.パスのmとbを計算します。 2.タイマーを使用します。各ティックで、自分のxの値を調整 3.スケーリング数であなたのy値 4分割のxとyを計算するために、あなたのxの値を使用し 5.今、あなたのオブジェクト

をプロットするために、新たなスケールのxとyを使用します...あなたが数学で遊ぶことができるトリックのすべての種類がありますが、それはあなたを開始する必要があります。

0

矩形(または四角形)の左下隅に座標が(x0, y0)、右上角が(x1, y1)としましょう。次いで対角線は、方程式

t範囲 0..1におけるパラメータである
X(t) = x0 + t * (x1 - x0) 
Y(t) = y0 + t * (y1 - y0) 

を有しています。 t=0(x0, y0)に、t=1(x1, y1)に、t=0.5-は矩形の中心に対応します。したがって、必要なのはパラメータtを変更して位置を計算することだけです。

オブジェクトが一定の絶対速度で任意の方向に移動する場合、速度の水平および垂直成分を使用してください。vxおよびvy毎時座標はx_new = x_old + delta_time * vxとなります。垂直エッジからの反射は、速度 'vx = - vx'の水平成分を変化させるだけであることに注意してください。

関連する問題