重力不能在单位RigidBody 2D变换中工作

时间:2014-04-26 19:39:05

标签: c# unity3d rigid-bodies

我制作了精灵并应用了刚体2d组件,它工作得很好,现在我写了这段代码,但是,当我开始玩游戏时它工作了一段时间但是之后,重力似乎是空的,意味着当我离开钥匙时我的刚体不会下来

// Update is called once per frame void Update () { if (Input.GetKey (KeyCode.LeftArrow)) { posX--; } else if (Input.GetKey (KeyCode.RightArrow)) { posX++; } if (Input.GetKey (KeyCode.UpArrow)) { posY++;
} else if (Input.GetKey (KeyCode.DownArrow)) { posY--; } angle -= Input.GetAxis ("Horizontal"); angle = Mathf.Clamp (angle, -10, 10); } void FixedUpdate() { transform.eulerAngles = new Vector3 (0,0,angle); transform.position = new Vector2 (posX * Time.deltaTime, posY * Time.deltaTime); } }
我想要做的是直升机左右上下移动(用户可以控制),但是当用户没有进行交互时,我希望重力作为默认工作,直升机会因重力而下降,如何实现?{{ 0}}

2 个答案:

答案 0 :(得分:0)

你正在覆盖每一帧的位置,因此它不会计算Unity在其物理上计算的内容,当你这样做时会覆盖:

transform.position = new Vector2 (posX * Time.deltaTime, posY * Time.deltaTime);

我不知道你想要达到什么目标,但是如果在此之后你使用物体质量和重力加速度重新施加traforme.AddForce()的重力,它可能会起作用恒定。

答案 1 :(得分:0)

您应该使用AddForce而不是更改x和Y轴。 你可以在这里看到这个例子,

AddFource Example