2016-05-23 1 views
0

アクセラレーションと速度に基づいてプレーヤを移動させようとしています。ここでは速度が発見され、プレイヤーが移動する方法です。Javaでアクセラレーションをプログラミングする

vel.x += acceleration.x; 
coordinates.x += vel.x; 

プレーヤーはcoordinatesコントロールが。ここでは、加速の計算方法です。

if(moveRight && !(acceleration.x >= .1f)){ 
    acceleration.x += .1f * Gdx.graphics.getDeltaTime(); 
} 

最初の質問:私は、プレイヤーを移動するために質量と力を使用するつもりならばこれは、プレイヤーを移動するための良い方法です。

私もここで、加速をオフに基づいて、停止に来るためにプレーヤーを取得しようとしていますが、私はこれをしようと、上記のコードの拡張版である:

if(moveRight && !(acceleration.x >= .1f)){ 
    acceleration.x += .1f * Gdx.graphics.getDeltaTime(); 
}else if(!moveRight && (vel.x > 0)){ 
    acceleration.x -= .1f * Gdx.graphics.getDeltaTime(); 
} 

しかし、これは」doesnの仕事。私が前進すると前進が加速し、次に離れると止まり、後退します。

第2質問:上記のコードを私が望むように動作させるにはどうすればよいですか?

これらのいくつかの質問に関するお手伝いをありがとうございます。

+2

私はちょうどこれを最初に言うつもりです: '!(acceleration.x> = .1f)'は単に 'acceler.x <.1f' IMHOよりも読みにくい_lotです。第二に、あなたは「働かない」よりも具体的になりますか?どのように出力が期待どおりに違いますか? – Arc676

+0

@ Arc676質問を編集しました – Luke

+0

'movementSpeed'とは何ですか? – Arc676

答えて

0

このquestion about frictionをご覧ください。摩擦係数で遊ぶことで、徐々に減速していくことができます。このすべてのことをもっと簡単にする可能性のあるJava用の物理エンジンを知っているかどうか聞いてみる価値はあります。JBox2dは2D用、JBulletは3D Bulletエンジンのポートです。

関連する問題