使玩家的动作更加流畅

时间:2019-06-02 03:44:03

标签: c#

所以我在跑步游戏中遇到冰上运动的问题,因为我有动力,我必须停止一种走另一种的方法,这给了我我不想要的冰冷效果。< / p>

我曾尝试增加摩擦力,但是这导致我的立方体跌落了轨道

void FixedUpdate()     {

    rb.AddForce(0, 0, forwardForce * Time.deltaTime);

    if (Input.GetKey("d"))
    {
        rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    }

    if (Input.GetKey("a"))
    {
        rb.AddForce(-sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);
    }

我希望运动平稳,流畅,生动。

2 个答案:

答案 0 :(得分:1)

因此,首先:我建议不要使用AddForce来移动播放器,您可以rb.velocity = sth; (这样可以消除结冰)。 但!如果您真的想要那样,我想您可以尝试:

rb.AddForce(-rb.velocity*(from 0 to 1 the less the less icy) + (the speed you want to change to));

我认为这可行。尝试一下,但是,如果它是胶囊对撞机,则可以选择使它看起来更好和更简单的角色控制器,或者刚性刚体控制器(不是组件,只是定义您要尝试的名称,但可以使用它) rb.velocity方法)。

希望它能起作用!

答案 1 :(得分:0)

也许是这样

Vector3 CalculatedForce = -rb.velocity;
CalculatedForce.z = forwardForce * Time.deltaTime;
if (Input.GetKey("d"))
    CalculatedForce.x += sidewaysForce * Time.deltaTime;
else if (Input.GetKey("a"))
    CalculatedForce.x += -sidewaysForce * Time.deltaTime;

rb.AddForce(CalculatedForce, ForceMode.VelocityChange);