C# unity2d中的WASD运动

C# unity2d中的WASD运动,c#,unity3d,rigid-bodies,C#,Unity3d,Rigid Bodies,我是unity的新手,想知道如何设置A和D键,以便使用Rigidbody2D将我移动到右侧和左侧。我在论坛上找到了这个脚本,但它似乎不起作用: public float speed = 5f; private float movement = 0f; private Rigidbody2D rigidBody; // Use this for initialization void Start() { rigidBody = GetComponent<Rigidbody2D>

我是unity的新手,想知道如何设置A和D键,以便使用
Rigidbody2D
将我移动到
右侧
左侧
。我在论坛上找到了这个脚本,但它似乎不起作用:

public float speed = 5f;
private float movement = 0f;
private Rigidbody2D rigidBody;
// Use this for initialization
void Start()
{
    rigidBody = GetComponent<Rigidbody2D>();
}

// Update is called once per frame
void Update()
{
    movement = Input.GetAxis("Horizontal");
    if (movement > 0f)
    {
        rigidBody.velocity = new Vector2(movement * speed, rigidBody.velocity.y);
    }
    else if (movement < 0f)
    {
        rigidBody.velocity = new Vector2(movement * speed, rigidBody.velocity.y);
    }
    else
    {
        rigidBody.velocity = new Vector2(0, rigidBody.velocity.y);
    }
}
公共浮动速度=5f;
私人浮动移动=0f;
私有刚体2d刚体;
//用于初始化
void Start()
{
刚体=GetComponent();
}
//每帧调用一次更新
无效更新()
{
移动=输入。GetAxis(“水平”);
如果(移动>0f)
{
rigidBody.velocity=新矢量2(运动*速度,rigidBody.velocity.y);
}
否则如果(移动<0f)
{
rigidBody.velocity=新矢量2(运动*速度,rigidBody.velocity.y);
}
其他的
{
rigidBody.velocity=新矢量2(0,rigidBody.velocity.y);
}
}

是否抛出错误?
首先要检查的是,您将此脚本附加到的任何对象实际上都有一个
Rigidbody2D

物理,即设置刚体速度,应该在
FixedUpdate
中完成,而不是
Update
,如果你查到它,现在看起来太混乱了,别担心,你现在可以摆脱它

也许您应该尝试使用
rb.AddForce(movement*speed,ForceMode2D.Impluse)

由于var
移动
实际上是正的还是负的取决于您按下的键,因此if语句的前两位没有任何用处


尝试查看有关移动播放机的单个教程。

-改进按键演示-删除代码中的空白-添加更多标签以供更多人访问和查看查看查看
输入。GetKeyDown()
方法应该满足您的需要。什么不起作用?是否有错误,玩家根本不移动,或者玩家移动不正确?