在Unity

时间:2015-12-20 14:23:57

标签: unity3d

我试图在Unity游戏引擎中使用HingeJoint(或可配置的关节)模拟汽车转弯。

我有4个轮子连接在主体上,接头效果很好。现在我需要用控制器脚本更改关节轴(相对于主体)以使轮子转动。如果我在检查器中更改轴的Z值(相对于主体旋转轴),它会执行我需要的操作,但是当我尝试在脚本中更改Z轴时,事情变得疯狂。在你运行游戏之前,我觉得轴是相对于父体的,但是当你运行它时,轴可能是绝对的或者其他东西。

我试图在很长一段时间内找到答案,但我找不到与轴有关的任何内容。

我发现只有TargetRotation(在可配置的关节上),实际上并不是我想要的东西,因为我相信你需要在另一个轴上设置一些限制才能使它工作,从而使已经有弹性的关节更加晃动。显然,我需要尽可能严格的结果。 如果您对TargetRotation如何做到这一点仍然有所了解请告诉我,因为我甚至还无法识别它是如何工作的。

我相信这个问题很简单,但是如果你觉得这个问题不够清楚,请告诉我,所以我会添加一些图片以便更好地解释。

编辑: 好了,建议添加更多信息,所以我们开始:

这就是我所拥有的 enter image description here

正如你所看到的那个带有4个气缸的简单盒子,盒子上有可配置的接头。所有元素都在相同的根级别并且附加了刚体。

在红色圆圈中,您可以通过在检查员中更改轴Z值(从-1到1)来看到不同的轴旋转,这正是我需要通过脚本来操纵车辆。

当我在脚本中添加轴Z控制器时,不幸的是:

        float steering = Input.GetAxis("Horizontal");
        configurableJoint.axis = new Vector3(configurableJoint.axis.x, configurableJoint.axis.y, steering);

它像这样打破: enter image description here

所以我想知道如何实现这样的功能,以及能够解释我的关节轴如何工作的人会很好。

提前感谢您的任何努力

1 个答案:

答案 0 :(得分:0)

我猜你需要将轮子固定在车身上,然后在你的剧本中相对于车身旋转车轮。

如果你能提供一个简单的Unity项目,可以下载,试验和调整,以便复制问题并修复它,这将有所帮助。如果您想发送问题的简单演示,我很乐意提供帮助,以便我可以尝试修复它。