Unity 生成多边形最简单的方法
按照正常的思维,先将多边形进行三角剖分,生成网格,再添加碰撞器,去实现业务逻辑
多边形三角化是件麻烦事,还需要考虑多边形的凹凸性,有没有洞等
其实可以反其道而行,先添加碰撞器,通过碰撞器生成mesh,代码比较简单,直接上代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CreateMesh : MonoBehaviour
{
public Vector2[] points;
void Start()
{
//EdgeColliderTest();
PolygonColliderTest();
}
void PolygonColliderTest()
{
PolygonCollider2D poly = gameObject.AddComponent<PolygonCollider2D>();
poly.points = points;
Mesh mesh = poly.CreateMesh(true, true);
MeshFilter mf = gameObject.AddComponent<MeshFilter>();
mf.mesh = mesh;
MeshRenderer mr = gameObject.AddComponent<MeshRenderer>();
mr.material = new Material(Shader.Find("Standard"));
}
void EdgeColliderTest()
{
EdgeCollider2D edge = gameObject.AddComponent<EdgeCollider2D>();
edge.points = points;
edge.edgeRadius = 0.1f;
Mesh mesh = edge.CreateMesh(true, true);
MeshFilter mf = gameObject.AddComponent<MeshFilter>();
mf.mesh = mesh;
MeshRenderer mr = gameObject.AddComponent<MeshRenderer>();
mr.material = new Material(Shader.Find("Standard"));
}
}
多边形效果:


线段效果:


关于多边形三角化可以参考我的另一篇文章:https://www.cnblogs.com/Jason-c/p/18220916
如果对你有帮助,支持一下原创,点个赞吧
博客园Jason_c微信打赏码
如果本篇文档对你有帮助,打赏Jason_c根华子吧,他的私房钱被老婆没收了,呜呜!
浙公网安备 33010602011771号