2012-05-13 15 views
0

私はこのoneのようなテーブルパックスライダーゲームを作るために私の小さな小さなエンジンを作るしようとしている:この物理モデルに摩擦を適用する方法は?

私が作るために、通常の速度を使用しています原因次に、私は、うまくパックを移動するために問題を抱えていますacelerationは速度ベクトルと反対のこと:

 velocity = ((Vector2) (initMousePosition - Input.mousePosition)).normalized*1.42f*Mathf.Min(1f,((Vector2) (initMousePosition - Input.mousePosition)).magnitude/Screen.height); 
     acceleration = - velocity.normalized; 
... 

は、これが私たちの便利が私の問題を解決するために、varsは、次のとおりです。

Board.COEFFICIENTE_OF_FRICTION = 0.1F;

public Vector2 position;

public Vector2 velocity;

public Vector2 acceleration;

コード

private static void Move() 
{ 
    foreach(BoardObject obj in objects) 
    { 
     if (obj is Puck) 
     { 
      auxPuck = (Puck) obj; 
      if (auxPuck.velocity.magnitude > 0f) 
      { 
       auxPuck.acceleration += (-auxPuck.acceleration * 9.8f*auxPuck.mass*Board.COEFFICIENTE_OF_FRICTION*Time.deltaTime); 
       auxPuck.velocity += auxPuck.acceleration * Time.deltaTime; 
       auxPuck.position += auxPuck.velocity * Time.deltaTime; 

       if (VectorsChangeMagnitudeSign(auxPuck.velocity,auxPuck.velocity-auxPuck.acceleration*Time.deltaTime)) 
       { 
        auxPuck.acceleration = Vector2.zero; 
        auxPuck.velocity = Vector2.zero; 
       } 
      } 
     } 
    } 
} 

たぶん私は、フロートのような加速を使用し、または速度の正規化ではありません別のベクトルで始まる必要があります。私の問題は、速度がより速くなったときに来る、それはそれが最後に絶えず動く奇妙な残りの速度を持っているようだ。

これをスムーズに実行するにはどうすればよいですか?

答えて

0

申し訳ありません申し訳ありませんが、問題が見つかりました。先ほども言いました 。私は正規化されたベクトルを使用するようになった、私はパックを投げるとき、問題はパックが方向と壁を変更する原因となり、その後、加速力は摩擦力を減少させてconst速度を引き起こした。

ご迷惑をおかけして申し訳ありません。

関連する問題