【问题标题】:how to make a line renderer use colliders?如何使线渲染器使用碰撞器?
【发布时间】:2021-12-25 18:31:34
【问题描述】:

我一直在试图弄清楚如何将碰撞器添加到线条渲染器中,因为在我的游戏中我试图让它在敌人与线条碰撞时消失,但我不知道如何将碰撞器添加到该行。如果我遗漏了什么,请告诉我!非常感谢! (全部在 2d 中)

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    你可以试试LineRenderer.BakeMesh

    像这样使用它:

    public yourLineRendererComponent;
    public MeshCollider meshCollider; //attached to the lineRenderer gameobject or child
    private Mesh mesh = new Mesh();
    
    void setLrCollider() {
        LineRenderer lineRenderer = yourLineRendererComponent;
        lineRenderer.startWidth = 1; //optional
        lineRenderer.endWidth = 1; //optional
    
        /*****optional to set the points with code*****/
        // canbe done in the inspector but points needs to be set for bakemesh towork 
        Vector3 lineRendererPathVector3Array = new Vector3[];
        lineRendererPathVector3Array [0] = new Vector3(0.0f,0.0f,0.0f);            
        lineRendererPathVector3Array [1] = new Vector3(0.1f,0.1f,0.1f);
        lineRendererPathVector3Array [2] = new Vector3(0.2f,0.3f,0.4f);
        lineRendererPathVector3Array [3] = new Vector3(0.5f,0.5f,0.5f);
        lineRenderer.positionCount = lineRendererPathVector3Array.Length;
        lineRenderer.SetPositions(lineRendererPathVector3Array);
        /*****optional to set the points with code finish*****/
    
        //below lines create a mesh collider with the line renderer's shape
        lineRenderer.BakeMesh(mesh, Camera.main);
        meshCollider.sharedMesh = mesh;
    }
    

    【讨论】:

    • 线是不断变化的,这会不会总是改变对撞机?非常感谢
    • 如果你打电话给setLrCollider,它会的。您需要为每次更新安排您的 Vector3[] 数组
    • 我试过了,但是那个脚本是 3d 的,我的是 2d 的。我也有很多错误。建议?谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多