被推后移动时给玩家一些摩擦

时间:2018-06-30 12:37:53

标签: c# unity3d physics

不太确定该如何措辞,但可以说您是个球,正在蹦蹦跳跳地走动。它的表面很平整,所以一切都很好。

现在引入一些45度的坡道。您跌倒了一条直线并从其反弹。此刻,无论您多快击中它,以多大角度或多快的速度行驶,都可以立即向后移,因为按一定角度它会比按动的动力更难。就像是一个小的渐进动量,直到达到0速度,然后您才能正常移动。

    if (playerLeft)
    {
        float xVelocity = (playerBody.velocity.x > 0) ? playerBody.velocity.x - playerSpeed : -playerSpeed;
        playerBody.velocity = new Vector3(xVelocity, playerBody.velocity.y, 0);
    }

    if (playerRight)
    {
        float xVelocity = (playerBody.velocity.x < 0) ? playerBody.velocity.x + playerSpeed : playerSpeed;
        playerBody.velocity = new Vector3(xVelocity, playerBody.velocity.y, 0);
    }

最初,每个速度我只有1行,无论速度是-1还是-50,我都会将x速度设置为等于播放器速度。您可以想象它看起来多么不现实。

我尝试添加上面的速度。但是因为它的最小值仅比0低6左右。它将在2或3帧内达到其最大速度,而这是不够渐进的。

1 个答案:

答案 0 :(得分:2)

这是通过Physic Material完成的。

1 。首先,通过转到资产--->创建--->物理材料来创建物理材料。

2 。将物理材质拖到对象对撞机的“材质”插槽中。

enter image description here

3 。下面是选中的“物理材料”的样子:

enter image description here

您可以选择物理材料并在编辑器中修改其设置,也可以通过脚本进行设置:

SphereCollider yourCollider = ...;
yourCollider.material.dynamicFriction = 0.6f;
yourCollider.material.staticFriction = 0.6f;
yourCollider.material.bounciness = 0.0f;

这使您可以在运行时修改对象的弹性和摩擦力。建议您观看this视频以了解基本设置。