首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >让玩家的移动不那么漂浮

让玩家的移动不那么漂浮
EN

Stack Overflow用户
提问于 2019-06-02 11:44:03
回答 2查看 393关注 0票数 0

所以我的跑步游戏出了点问题。

现在这个动作感觉很冷,因为我有动力,我必须停止走一条路去走另一条路,它给了我这种我不想要的真正的冰的效果。

我试过增加摩擦力,但那导致我的立方体从轨道上滚下来。

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);
    }

我想要的动作是漂亮的,流畅的,敏捷的。

EN

回答 2

Stack Overflow用户

发布于 2019-06-03 01:15:00

所以,首先:我建议不要使用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
EN

Stack Overflow用户

发布于 2019-06-03 20:08:52

也许是这样的:

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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56412050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档