c# - 如何在 Wheelcollider 位置 Unity 制作 Wheel Mesh Renderer

标签 c# unity3d

我在弄清楚如何使车轮网格渲染器对象与 Wheelcollider 对象匹配时遇到了一些麻烦。我在互联网上进行了搜索,找到了一些针对不同版本的 unity 的简短答案。

这是我当前的代码:

使用UnityEngine; 使用系统集合;

public class Position : MonoBehaviour {

    public WheelCollider wc;
    public Transform tf;

    // Use this for initialization
    void Start () {

        wc = GetComponent<WheelCollider> ();
        tf = GetComponent<Transform> ();

    }

    // Update is called once per frame
    void Update () {

        transform.position = new Vector3 (tf.transform.position.x + (wc.suspensionDistance * 100), tf.transform.position.y);

我知道如何完成这项工作,请帮忙!

最佳答案

OP 的代码和接受的答案都不正确。

OP 的代码很糟糕,因为它把轮子放在了错误的位置(有时是对的,但通常是错的);并且接受的答案是错误的,因为它说你不需要代码来实现这个。

根据 Official Unity Tutorial for Wheel Colliders需要调用GetWorldPose 来获取轮子的姿态,然后您需要将该姿态传输到每帧渲染轮子的对象。 (这意味着 MeshRenderer 和 Collider do 需要在不同的对象上。) -- 层次结构本身是行不通的,因为父级的变换不会被轮子碰撞器修改(即它将永远保持在 0,0,0,即使轮子在四处弹跳和旋转等)

不过,我确实建议使用与已接受答案中建议的相同的层次结构,因为它使事情更易于管理:

  • 车辆
    • WheelCollider1
      • WheelMeshRenderer1
    • WheelCollider2
      • WheelMeshRenderer2
    • 等...

这是一个示例 MonoBehavior 脚本,如果您将它附加到每个 WheelMeshRenderer# 对象(根据上面的层次结构),它将起作用:

private WheelCollider wheelCollider;
private void Start()
{
    // Once, at startup, search up the tree for the nearest wheel collider,
    // and grab a reference to it.
    wheelCollider = GetComponentInParent<WheelCollider>();
}

private void FixedUpdate()
{
    // Each physics update, get the pose of the wheel in World space coordinates.
    wheelCollider.GetWorldPose(out var pos, out var rot);

    // Apply that pose to this object's transform.
    transform.position = pos;
    transform.rotation = rot;
}

关于c# - 如何在 Wheelcollider 位置 Unity 制作 Wheel Mesh Renderer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36023549/

相关文章:

c# - Visual Studio 自定义语言服务

c# - Serilog 不会在 MongoDB 上写入,也不会抛出任何错误

c# - 团结一致的 promise

c# - .NET Entity Framework 核心

c# - 在集合中找不到参数 "created_on"

unity3d - Wwise,共鸣音频和Unity集成。配置Wwise Resonance音频插件

ios - Unity 5.1.1错误: dll is not allowed to be included or could not be found

c# - 使用 ToString 构建文件路径列表

c# - WPF 设计器无法加载 VS2015

c# - 减速刚体