私はこの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;
}
}
}
}
}
たぶん私は、フロートのような加速を使用し、または速度の正規化ではありません別のベクトルで始まる必要があります。私の問題は、速度がより速くなったときに来る、それはそれが最後に絶えず動く奇妙な残りの速度を持っているようだ。
これをスムーズに実行するにはどうすればよいですか?