【发布时间】:2019-11-12 16:19:59
【问题描述】:
【问题讨论】:
【问题讨论】:
假设你的意思是 PolygonCollider2D 并且它总是以正确的顺序得到 3 分,我猜你可以做类似的事情
using System.Linq;
...
[RequireComponent(typeof(MeshRenderer), typeof(MeshFilter), typeof(PolygonCollider2D))]
public class MeshCreator : MonoBehaviour
{
void Awake ()
{
var points = GetComponent<PolygonCollider2D>().points;
var meshFilter = GetComponent<MeshFilter>();
var mesh = new Mesh();
// Just a shorthand for something like
//var list = new List<Vector3>();
//foreach(var p in points)
//{
// list.Add(p);
//}
//mesh.vertices = list.ToArray();
mesh.vertices = points.Select(p -> (Vector3) p).ToArray();
// Here create two triangles (each 3 vertices)
// just because I don't know if you have the points in the correct order
mesh.triangles = new int[]{0,1,2,0,2,1};
meshFilter.mesh = mesh;
}
}
并将这个组件放在PolygonCollider2D 旁边。然后它将用三角形替换这个对象的网格。
MeshRenderer中已经可以设置的素材。
要获得此重叠区域,最简单的解决方案是半透明材料。否则你可能需要一个特殊的着色器。
【讨论】:
mesh.triangles = new int[0,1,2,0,2,1] 行无法编译,triangle 属性似乎期待int[] 而不是int[,,,,,]。