0

我制作了精灵并应用了刚体 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); } }
我想要做的是上下左右移动直升机(用户可以控制)但是当用户不交互时,我希望重力作为默认工作并且直升机会由于重力而下降,如何实现?在此处输入图像描述

4

2 回答 2

0

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

AddFource 示例

于 2014-09-11T12:06:50.020 回答
0

您正在覆盖每一帧的位置,因此它不会测量 Unity 在其物理上计算的内容,当您执行此操作时会覆盖:

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

我不知道你想要实现什么,但如果在此之后你重新应用重力traforme.AddForce(),使用物体的质量和重力加速度常数,它可能会起作用。

于 2014-04-26T22:32:08.773 回答