如何阻止我的 2D 角色在运动后滑行

How can I Stop my 2D Character from Gliding After Movement

我目前正在制作一款 2D 自上而下的生存游戏。我已经对播放器控制器进行了编码,它工作得很好,除了一个让我烦恼的问题!每当我停止按下移动键时,我的角色都不会停止移动(或非常缓慢地减速)。如果不是几乎立即,我怎样才能让它立即停止?任何提示帮助谢谢! 这是我正在使用的代码!

using UnityEngine;
using System.Collections;

public class CharacterMovement : MonoBehaviour{
public float speed;
private Rigidbody2D rb2d;

void Start () 
{
rb2d = GetComponent<Rigidbody2D> ();
}

void FixedUpdate()
{ 
float moveHorizontal = Input.GetAxisRaw ("Horizontal");
float moveVertical = Input.GetAxisRaw ("Vertical");

Vector2 movement = new Vector2 (moveHorizontal, moveVertical);

rb2d.AddForce (movement * speed);
}
}

我找到了增加减速的方法。我废弃了我的代码并更改了机制,以便角色跟随鼠标并使用 "W" 键或向上箭头向前移动。这平滑了方向变化并使游戏玩法更加愉快,至于减速,我通过使 rigidbody2D 检查器中的 Linear Drag 多于一个并提高速度来弥补速度损失来解决这个问题。 这是我为未来的答案寻求者编写的代码!

using UnityEngine;
using System.Collections;

public class CharacterMovement : MonoBehaviour{
public float speed;
private Rigidbody2D rbtd;

void Start () 
{
    rbtd = GetComponent<Rigidbody2D> ();
}

void FixedUpdate()
{
    var mousePosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);
    Quaternion rot = Quaternion.LookRotation(transform.position - mousePosition,
                                            Vector3.forward);

    transform.rotation = rot;
    transform.eulerAngles = new Vector3 (0, 0, transform.eulerAngles.z);
    rbtd.angularVelocity = 0;

    float input = Input.GetAxis ("Vertical");
    rbtd.AddForce (gameObject.transform.up * speed * input);
}
}