C# 在对象的局部Y轴上添加力

C# 在对象的局部Y轴上添加力,c#,unity3d,gravity,C#,Unity3d,Gravity,我有一个长方体,当我旋转长方体时,Y轴总是指向同一侧,无论我旋转长方体的方向如何。这很好,我需要这个,但我需要在局部刚性body.addforce()-Y,这样玩家就有重力,不管盒子的那一边朝哪个方向 我试过的一种方法是将盒子上的-Y射线设置为addforce,但它什么也没做 我已经尝试了我所知道的一切来做这件事,但我似乎无法让它起作用,任何提示都将不胜感激。 将添加一个相对于刚体方向的力 你会想用 void FixedUpdate() { rigidbody.AddRelativeFo

我有一个长方体,当我旋转长方体时,Y轴总是指向同一侧,无论我旋转长方体的方向如何。这很好,我需要这个,但我需要在局部刚性body.addforce()-Y,这样玩家就有重力,不管盒子的那一边朝哪个方向

我试过的一种方法是将盒子上的-Y射线设置为addforce,但它什么也没做

我已经尝试了我所知道的一切来做这件事,但我似乎无法让它起作用,任何提示都将不胜感激。

将添加一个相对于刚体方向的力

你会想用

void FixedUpdate() {
    rigidbody.AddRelativeForce(Vector3.down * someGravityMultiplier);
}

这将使角色沿其-y(局部向下向量)移动。而不是世界的向下矢量。您应该在每次修复更新时应用此强制。

一个小示例代码会很有帮助。如果您有一个局部空间向量,您可以通过调用变换组件将其转换为世界空间。例如,您可以在框中调用
transform.InverseTransformDirection(-Vector3.up)
。你的问题并不清楚你实际拥有或需要什么向量。你能改进一下这个答案吗?添加文档链接会很有帮助/