【问题标题】:Unity3D: Adding Sphere Collider to Cloth Component at Runtime Isn't Doing AnythingUnity3D:在运行时将球体对撞机添加到布料组件没有任何作用
【发布时间】:2018-10-11 20:24:49
【问题描述】:

我试图让玩家穿过布帘。

在我的第一人称相机上附加了一个球体对撞机,在一个 prim 平面上附加了一个布料脚本。我试图在运行时将 FPS cam collider 附加到布料对象上。

我写了一个脚本,看起来它应该可以工作,但它没有。没有错误或什么都没有。该脚本编译并运行,但球体对撞机只是没有连接到布料组件。什么给了?

    public class ClothTest : MonoBehaviour {

          private void Start() {

    Cloth a = GetComponent<Cloth>();

    var ClothColliders = new ClothSphereColliderPair[1];
    ClothColliders[0] = new ClothSphereColliderPair(GameObject.Find("First Person Camera").GetComponent<SphereCollider>());

    ClothColliders[0] = a.sphereColliders[0];

}

这是检查器中布料组件的截图:

【问题讨论】:

    标签: c# unity3d cloth-simulation


    【解决方案1】:

    您正试图将相机中的 SphereCollider 放到您的 Cloth 但是

    ClothColliders[0] = a.sphereColliders[0]; 
    

    正在做相反的事情。它试图将SphereCollider 从您的Cloth 放入您相机中的那个。改变它并从每一侧删除[0]

    最后一行代码应该是:

    a.sphereColliders = ClothColliders;
    

    完整的新功能:

    void Start()
    {
        Cloth a = GetComponent<Cloth>();
        var ClothColliders = new ClothSphereColliderPair[1];
        ClothColliders[0] = new ClothSphereColliderPair(GameObject.Find("First Person Camera").GetComponent<SphereCollider>());
    
        a.sphereColliders = ClothColliders;
    }
    

    【讨论】:

    • 感谢您的帮助!这绝对是朝着正确方向迈出的一步,现在我正在写正确的信息。但这似乎仍然没有做到 - 也许我的问题与我分配的每个数组中的数字有关?我应该使用 [1] 而不是 [0] 吗?
    • 此答案中的内容应填充 Cloth 中的第一个索引 SphereCollider。请参阅this 了解它的外观。这不是你想要做的吗?请注意,第一个已填充。如果您没有得到类似的东西,请直接从我的答案中复制并粘贴代码,因为您没有输入正确
    • 是的,成功了!当我第一次实施您的解决方案时,我一定输入了错误的内容。非常感谢!!!
    • 如果这解决了你的问题,别忘了accept这个答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2022-11-20
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多