我制作了精灵并应用了刚体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++;
我想要做的是直升机左右上下移动(用户可以控制),但是当用户没有进行交互时,我希望重力作为默认工作,直升机会因重力而下降,如何实现?{{ 0}}
} 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 :(得分:0)
你正在覆盖每一帧的位置,因此它不会计算Unity在其物理上计算的内容,当你这样做时会覆盖:
transform.position = new Vector2 (posX * Time.deltaTime, posY * Time.deltaTime);
我不知道你想要达到什么目标,但是如果在此之后你使用物体质量和重力加速度重新施加traforme.AddForce()
的重力,它可能会起作用恒定。
答案 1 :(得分:0)
您应该使用AddForce而不是更改x和Y轴。 你可以在这里看到这个例子,