统一:上下移动精灵

Unity: Move Sprite Up and Down

虽然我熟悉 C#,但我对在游戏开发和 Unity 中使用它还很陌生。我想让一个球上下弹跳。我可以很容易地让球左右移动,但是当我将代码从 'roll' 更改为 'bounce' 时,我得到以下结果:(球沿对角线方向移动,而不是上下移动)

但我想要的是:

// Update is called once per frame
    void Update () {

        if (moveDown) {
            transform.localScale = new Vector3 (-1f, 1f, 1f);
            GetComponent<Rigidbody2D> ().velocity = new Vector2 (speed, GetComponent<Rigidbody2D> ().velocity.x);
        } else {
            transform.localScale = new Vector3 (1f, 1f, 1f);
            GetComponent<Rigidbody2D> ().velocity = new Vector2 (-speed, GetComponent<Rigidbody2D> ().velocity.x);
        }
    }

我确定答案一定很简单,但经过漫长的一天后,我的大脑已经变得糊涂了。谁能建议?

Ps 从左到右的工作代码是这样的:

transform.localScale = new Vector3 (-1f, 1f, 1f);
            GetComponent<Rigidbody2D> ().velocity = new Vector2 (speed, GetComponent<Rigidbody2D> ().velocity.y);

如果有帮助,您可以冻结 x 位置。

Vector2 有两个分量; X 和 Y。速度的 "X" 分量表示对象的水平速度 (left/right)。速度的 "Y" 分量表示对象的垂直速度 (up/down)。

直线上下移动,速度的"X"分量必须是'Zero'(0),否则物体会继续运动水平和垂直,导致对角线。

调用Vector2的构造函数时,传入两个参数;第一个参数是 "X" 值,第二个参数是 "Y" 值。在您的示例代码中,您在第一个 (X) 参数中传递了一个 non-zero 值,导致对角线移动。