C# 如何将摩擦力应用于此物理模型?

C# 如何将摩擦力应用于此物理模型?,c#,unity3d,game-physics,C#,Unity3d,Game Physics,我正在尝试制作我的小型引擎,以便制作一个桌面冰球滑块游戏,如下所示: 然后,我很难移动冰球,因为我使用的是速度法线,使加速度与速度向量相反: velocity = ((Vector2) (initMousePosition - Input.mousePosition)).normalized*1.42f*Mathf.Min(1f,((Vector2) (initMousePosition - Input.mousePosition)).magnitude/Screen.heigh

我正在尝试制作我的小型引擎,以便制作一个桌面冰球滑块游戏,如下所示:

然后,我很难移动冰球,因为我使用的是速度法线,使加速度与速度向量相反:

        velocity = ((Vector2) (initMousePosition - Input.mousePosition)).normalized*1.42f*Mathf.Min(1f,((Vector2) (initMousePosition - Input.mousePosition)).magnitude/Screen.height);
        acceleration = - velocity.normalized;
 ...
以下是解决我的问题的有用VAR:

Board.COEFFICIENTE_OF_摩擦=0.1f

公共向量2位置

公共矢量2速度

公共矢量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;
                }
            }
        }
    }
}
也许我必须使用像浮子一样的加速度,或者从另一个不是标准化速度的向量开始。我的问题是当速度变得更大时,它似乎有一个奇怪的剩余速度,使得它在最后不断地移动


你知道我必须如何以良好的方式顺利运行它吗?

很抱歉,我发现了这个问题。我告诉过你。我开始使用标准化向量,当我投掷冰球时,问题来了,因为冰球改变了方向与墙壁,然后加速支架减小摩擦力,导致恒定速度

很抱歉耽误了你的时间,不过还是要谢谢你