通过脚本更改PolygonCollider2D顶点

时间:2018-03-05 08:01:40

标签: c# unity3d

如何使用脚本更改PolygonCollider2D顶点的位置?

3 个答案:

答案 0 :(得分:1)

可以访问points成员。

PolygonCollider2D p; //Just a dummy declaration. You have to actually have a MonoBehaviour set up.
p.points[0] = new Vector2(0, 0);

答案 1 :(得分:0)

这里有效

pc2d.points = new[]{point1, point2, point3};
pc2d.SetPath (0, new[]{ point1, point2, point3 });

答案 2 :(得分:0)

看到其他答案,我认为这将是更完整的,因为另一个仅解决一部分问题,在这里,我将尝试收集另一个答案并做一个完整的答案:

如果您想更改自己的游戏对象的对撞点,则可以执行以下操作:

它像下一个示例一样提供了一组新点,这样,您将更改多边形所具有的所有点,至少在您只想更改点集合路径的一部分之前例如,SetPath (0, new[]{ point1, point2, point3 });可能仅更改对撞机的路径“ 0”,而不更改其他路径:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class destroy_out_screen : MonoBehaviour
{
     public GameObject cameraGO; 



     void adapt_collider(){

        Vector2 point1 = new Vector2(1,1);
        Vector2 point2 = new Vector2(0,1);
        Vector2 point3 = new Vector2(0,0);
        Vector2 point4 = new Vector2(1,0);

        gameObject.GetComponent<PolygonCollider2D>().points = new[]{point1,point2,point3,point4};
    }
    void Start()
    {
        adapt_collider();
    }
}

当然,您首先需要在游戏对象中使用该组件,如下所示:

enter image description here

以及有关此操作的信息:

p.points[0] = new Vector2(0, 0);

根据统一论坛,您无法执行此操作,here我在找到的位置给出了链接

最后,您将获得:

enter image description here

取决于您赋予对撞机的指示顺序。