我怎样才能减少我的角色滑动?

How can I reduce my character from sliding?

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
public float speed;
public float jump;

private Rigidbody2D rb;

private void Start()
{
    rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
    rb.position += new Vector2(Input.GetAxis("Horizontal"), 0) * Time.deltaTime * speed;
    if(Mathf.Abs(rb.velocity.y) < 0.001f && Input.GetKeyDown(KeyCode.W))
    {
        rb.AddForce(new Vector2(0, jump), ForceMode2D.Impulse);
    }
}

所以我有这个代码用于我的玩家移动。我想知道我怎样才能减少我的性格滑动那么多。我不想在松开钥匙后立即停止。

在输入管理器里面,Edit->Project Settings->Input Manager,有一个叫做gravity的属性。

Gravity: Speed in units per second that the axis falls toward neutral when no input is present.

减小此值会导致输入下降得更快,从而导致 less/no 滑动。

您可以调试您的输入值来确认这一点。当您第一次按住水平输入时,您应该注意到从 0 到 1/-1 的斜坡。松开输入后,您应该会看到值回落到 0。

var inputHorz = Input.GetAxis("Horizontal");

Debug.Log(inputHorz);

降低值直到感觉正确为止。这可以在玩游戏时更改,但您需要在按下停止后将该值粘贴回去。

您可以添加 counter-movement 以使运动感觉更灵敏,或者您可以通过添加物理 material 来改变摩擦力。 Counter-movement 通过向 相反 的移动方向添加一个力使玩家停止。它会阻止玩家滑动太多。另一种方法是添加物理 material 并稍微增加摩擦力。这将使玩家停止得更快。希望对您有所帮助!