统一:上下移动精灵
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 值,导致对角线移动。
虽然我熟悉 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 值,导致对角线移动。