【问题标题】:Is it me or are unity's wheelcolliders a mess是我还是团结的车轮对撞机一团糟
【发布时间】:2021-10-02 13:59:29
【问题描述】:

我想在我的汽车的所有轮毂上添加一个车轮对撞机,并在车根上添加一个刚体。它带来了一些问题,例如对撞机相对于轮子旋转了 90 度,但经过一些调整后得到修复。所以我写了一个小脚本来增加“垂直”轴的力,但是当我进入播放模式时发生了这种情况:

  1. 加力效果不错,但在前进时加负力会使汽车加速更多。
  2. 重心搞砸了。

我的汽车脚本(也许不是最好的,但这只是一个测试):

using UnityEngine;

public class Car : MonoBehaviour
{

    public WheelCollider a, b, c, d;
    public float engineForce;

    private void Update()
    {
        foreach (WheelCollider collider in new WheelCollider[] {a, b, c, d})
        {
            collider.motorTorque = Input.GetAxis("Vertical") * engineForce;
        }
    }
}

我的问题是:我做错了还是车轮对撞机?

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: c# unity3d wheelcollider


【解决方案1】:
  1. 您收到警告,它实际上告诉您该怎么做 - 使用 WheelCollider 将刚体添加到您的对象。不要让它们运动或其他东西。让它们保持原样。 WheelCollider 不像 Box 或 Sphere 那样通常的对撞机,它是纯物理的,因此向对象本身添加物理是至关重要的。
  2. 另外,在计算扭矩时使用 Time.deltaTime,这样您的速度就不会依赖于 fps。
  3. 为相同的 4 个轮子阵列分配内存的每一帧。这会减慢代码的速度。而是创建一个新字段,然后每帧都使用它。

【讨论】:

  • 感谢您的帮助,但我已经解决了第一个问题,方法是卸下一个不是汽车的孩子的车轮(我将编辑帖子)以及关于您的第二和第三点:这是真的,但是我只是在测试它,所以它不会最终出现在游戏中。但感谢您的思考!
  • 但是你还没有将刚体连接到轮子上?这就是解决错误行为的方法
  • 我给他们的父母加了一个。在每个车轮上都这样做时,他们开始侧身离开汽车
  • 这只是一个错误的用法。车轮对撞机不需要“一些任何刚体”。它需要它自己的。最好位于同一个游戏对象中。可能你确实旋转了它们。查看教程youtube.com/watch?v=IlqcaNkjMRY
  • 我只是按照 imphenzia 的方式做的,所以我认为应该是对的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-06
  • 2017-04-14
  • 2015-07-22
  • 2023-03-26
  • 1970-01-01
  • 2012-05-13
  • 2017-10-21
相关资源
最近更新 更多