私は物理シミュレーションをコード化しようとしています。私は自由落下をシミュレートして小さなものから始めます。私はJava JframeとJavaのawtライブラリからいくつかのメソッドを使用しています。しかし、私が直面している問題は、私のシミュレーションをもっと生き生きとさせるようにパラメータを調整することです。私のゲームwhileループは一定の60 FPSで動作します。つまり、各ループは16 msを要します。物理シミュレーション、ピクセルをメーターに調整しますか?
this.velX = this.velX + (accX)*delta;
this.velY = this.velY + (accY) * delta ;
this.velY = this.velY * 0.9;
this.x = this.x + (int) ((this.velX) * delta);
this.y = this.y + (int) ((this.velY)* delta);
しかし、私はintに変換しているので、値は常に小さいので、値は常に0に戻ります。そして、シェイプの描画方法はintを受け入れるだけです(これは私が理解できると思いますが、それは解決策があるのだろうか)。ボールが動かなくなり、動きが目立たない(動いている場合)。
デルタを1にしてみましたが、うまくいきましたが、速すぎますが、現実的ではないと思います。したがって、誰かが私にそのような問題についての一般的なアイデアを与えることができれば非常に役に立ちます。
「16ml秒」 - 16ミリリットル秒?私はそれが "ms" =ミリ秒であると思いますか? – Fildor
レンダリングしている同じ場所から座標を読み取っているように聞こえます。これがまさに私の目の問題の原因です。座標を実際に必要な形式(つまり 'double'など)で受け入れ、それらをレンダリングするときにのみ' int'に変換するいくつかの専用オブジェクトに座標を格納してみてください。 –
はい、申し訳ありません、私はそれを編集しました。 – Robot0110