2012-01-25 13 views
4

AndEngineを使って、壁をはね返して他の障害物に当たると思われる加速度計でスプライト(ボール)を移動しようとしています。AndEngine、Accelerometer&PhysicsWorldを使って円滑にスプライトを移動

これまでのところ、次の2つの方法がありました。

public void onAccelerometerChanged(final AccelerometerData myAccelerometerData) { 
    mySprite.setPosition(mySprite.getX() + myAccelerometerData.getX(), mySprite.getY() + myAccelerometerData.getY()); 

} 

非常にスムーズに動作しますが、非物理的な世界でのみ動作します。 (すなわち、壁や他の障害物が円滑に跳ね返ることはない)。

AndEngineが提供する例のこのメソッドを使用すると、ボールは良好な物理特性を持ちますが、円滑に動きません。

@Override 
    public void onAccelerometerChanged(final AccelerometerData pAccelerometerData) { 
      final Vector2 gravity = Vector2Pool.obtain(pAccelerometerData.getX(), pAccelerometerData.getY()); 
      this.mPhysicsWorld.setGravity(gravity); 
      Vector2Pool.recycle(gravity); 
    } 

私はまた、2や5などの特定の値でpAccelerometerDataを乗算しようとしました、はい、それはより敏感表示されますが、またボールがたくさんより速く、プレーすることは困難で移動します。

私の質問を明確にするために、迷路やリバウンドゲームのボールがAndroid用のものと同じくらい滑らかであるようにしたいと思います。それらのボールは、加速度計に対してより敏感です。たとえば、ラビリンスで突然動いているボールを止めたいのであれば、andEngineの例では次のコードを使うことができます。まるで摩擦のない世界のように動き続けます。

迷路ゲームのように応答性が高く滑らかにできますか? https://market.android.com/details?id=se.illusionlabs.labyrinth.lite&hl=en

答えて

3

pAccelerometerDataに(試したとおりに)乗算し、ダンピング項をボールに追加することができます。だから、ボールは反応が速くなり、速く止まり、合理的なスピードを保ちます。

ダンピングは、ボディーの特性です。だから、それは何かのようになります

body.setLinearDamping(1.5f); 
+1

私はそれを試してええ、スプライトは、より応答し、より良いコントロールを提供しました。ありがとうZoleas –

+0

私も同じ問題があります。このbody.setLinearDamping(1.5f)をどこで使うべきですか?これは非物理世界または物理世界にあるべきです。 –

+1

体の財産ですので、物理的な世界です。あなたの動く物体のボディ(ボール、キャラクター...)にダンピングを適用してください。 – Zoleas

関連する問題