首页 > 解决方案 > unity2d 中的 WASD 运动

问题描述

我是 unity 新手,想知道如何设置AD键来移动我rightleftwith 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);
    }
}

标签: c#unity3drigid-bodies

解决方案


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

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

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

由于 varmovement实际上是正数还是负数取决于您按下的键,所以 if 语句的前两位没有任何用处。

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


推荐阅读