Rasagar/Library/PackageCache/com.unity.probuilder/Samples~/Runtime/Misc/CreatePolyShape.cs
2024-08-26 23:07:20 +03:00

44 lines
1.2 KiB
C#

using UnityEngine;
using UnityEngine.ProBuilder;
using UnityEngine.ProBuilder.MeshOperations;
namespace ProBuilder.Examples
{
public class CreatePolyShape : MonoBehaviour
{
public float m_RadiusMin = 1.5f;
public float m_RadiusMax = 2f;
public float m_Height = 1f;
public bool m_FlipNormals = false;
ProBuilderMesh m_Mesh;
void Start()
{
// Create a new GameObject
var go = new GameObject();
// Add a ProBuilderMesh component (ProBuilder mesh data is stored here)
m_Mesh = go.gameObject.AddComponent<ProBuilderMesh>();
InvokeRepeating("Rebuild", 0f, .1f);
}
void Rebuild()
{
// Create a circle of points with randomized distance from origin.
Vector3[] points = new Vector3[32];
for (int i = 0, c = points.Length; i < c; i++)
{
float angle = Mathf.Deg2Rad * ((i / (float)c) * 360f);
points[i] = new Vector3(Mathf.Cos(angle), 0f, Mathf.Sin(angle)) * Random.Range(m_RadiusMin, m_RadiusMax);
}
// CreateShapeFromPolygon is an extension method that sets the pb_Object mesh data with vertices and faces
// generated from a polygon path.
m_Mesh.CreateShapeFromPolygon(points, m_Height, m_FlipNormals);
}
}
}