轮胎碰撞器与轮胎游戏对象的旋转不同

3
我想在我的汽车轮子上添加一个轮胎碰撞器,但它带有90度的旋转。
这是图片:

problem image

如何调整碰撞器以适应汽车轮子?

1
我能想到的最简单的解决方案是:添加一个空的gameObject。将轮子碰撞器附加到该空gameObject上。并将该空gameObject作为您的汽车轮子的子对象。 - Thalthanas
@EmreE 你应该把它作为一个答案。它们都需要在一个子对象下手动旋转。这里有更多相关信息。 - Programmer
无法工作。image - Md Shoeb hawlader
将附有Wheel Collider的空GameObject绕y轴旋转。这很难吗? - PassetCronUs
1
@MdShoebhawlader:您能分享一下您是如何解决这个问题的吗? - Soorej P
显示剩余2条评论
4个回答

3
为了进一步参考,我将我的评论作为答案写下来。
我能想到的最简单的解决方案是:添加一个空的gameObject。将车轮碰撞器附加到该空的gameObject上。并使空的gameObject成为你汽车的车轮子对象。这样,您就可以旋转空的gameObject,以便您的碰撞器被旋转。@Programmer还分享了一个有关WheelCollider教程的链接。可以在这里找到。

1

在导入游戏对象之前,最好的做法之一是确保游戏对象是Y正向。您可以在导出时在blender中更改它。


1

我曾经遇到过同样的问题。然而,在现代版本的Unity(2019.4)中,简单地旋转一个空的父对象是行不通的。你必须旋转一个具有WheelColliders附加的rigidbody的对象。

假设你的汽车有一个rigidbody,解决方案是确保汽车的rigidbody的X轴方向与车轮碰撞体所需的X轴方向相匹配。

基于这篇文章:

https://forum.unity.com/threads/unity-5-wheelcollider-wrong-rotation.349596/#post-2264801

WheelColliders总是指向刚体的“前”和“下”方向。steerAngle值是相对于刚体的前向方向而言的。

请注意,您的汽车模型(显示汽车车身的外观)可能与包含轮胎碰撞器的刚体对象具有不同的方向。

在我的情况下,层次结构如下:

  • MainScene
    • CarRoot
      • CarModel
      • WheelColliders
        • Wheel_FR
        • Wheel_FL
        • Wheel_RR
        • Wheel_RL

CarRoot上有一个刚体。当我旋转它时,它会连同轮胎碰撞器一起旋转。这也会旋转汽车模型。这不好。所以我必须:

  1. 将CarModel和WheelColliders从父物体中剥离(使它们成为MainScene的子物体)
  2. Y轴上将CarRoot旋转90度(使其X轴与WheelColliders的X轴对齐)
  3. 再次将CarModel和WheelColliders设置为CarRoot的子物体。

这对我很有帮助。

P.S. 如果这有点像“僵尸贴”的话,我很抱歉。但是这个问题还没有答案。


1

我在这个问题上遇到了很多麻烦,因为在Blender中没有任何导出设置或旋转能够解决我的问题。但最终我找到了一个解决方案。创建一个空的gameObject,并将rigidbody、mesh filter和mesh collider附加到它上面。然后将模型作为子对象与空的gameObject相关联,再尝试添加轮子碰撞器。轮子是相对于刚体的transform.up和transform.forward的,所以将刚体放在默认的物体上可以解决所有问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接