Я пытаюсь сделать мой маленький маленький двигатель, чтобы сделать таблицу Puck ползунок игры, как этот one:Как применить трение к этой модели физики?
Тогда у меня возникают проблемы, чтобы переместить шайбу хорошо, потому что я использую скорость нормального сделать aceleration быть противоположно вектору скорости:
velocity = ((Vector2) (initMousePosition - Input.mousePosition)).normalized*1.42f*Mathf.Min(1f,((Vector2) (initMousePosition - Input.mousePosition)).magnitude/Screen.height);
acceleration = - velocity.normalized;
...
Это наш полезный вары, чтобы решить мою проблему:
Board.COEFFICIENTE_OF_FRICTION = 0.1f;
общественная позиция Vector2;
общественная скорость Vector2;
общественный Вектор2 ускорение;
Код:
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;
}
}
}
}
}
Может быть, я буду должен использовать ускорение, как поплавок, или начиная с другим вектором, что это не нормированные скоростей. Моя проблема возникает, когда скорость становится более высокой, у нее, кажется, есть странная остаточная скорость, которая заставляет ее двигаться постоянно в конце.
Любая идея о том, как я должен делать это, хороший способ запустить его плаксиво?