Hi
As in topic-I’d like to create a small Plane fully programatically.How to do that?
I think I have to create a new GameObject then add MeshFilter and MeshRenderer components to it.But what’s next?
Hi
As in topic-I’d like to create a small Plane fully programatically.How to do that?
I think I have to create a new GameObject then add MeshFilter and MeshRenderer components to it.But what’s next?
you could use gameObject.CreatePrimitive(PrimitiveType.Plane);
, but that will give you the ten by ten vertice plane we get from the gameObject Menu. I reccomend trying the below code. It will give you a four vertice and two tri plane.
var size : float;
function Awake()
{
var m : Mesh = new Mesh();
m.name = "Scripted_Plane_New_Mesh";
m.vertices = [Vector3(-size, -size, 0.01), Vector3(size, -size, 0.01), Vector3(size, size, 0.01), Vector3(-size, size, 0.01) ];
m.uv = [Vector2 (0, 0), Vector2 (0, 1), Vector2(1, 1), Vector2 (1, 0)];
m.triangles = [0, 1, 2, 0, 2, 3];
m.RecalculateNormals();
var obj : GameObject = new GameObject("New_Plane_Fom_Script", MeshRenderer, MeshFilter, MeshCollider);
obj.GetComponent(MeshFilter).mesh = m;
}
The documentation on the Mesh functions is pretty thorough. Point 1 has a code example to build a mesh from scratch:
1. Building a mesh from scratch: should always be done in the following order: 1) assign vertices 2) assign triangles
var newVertices : Vector3[];
var newUV : Vector2[];
var newTriangles : int[];
function Start () {
var mesh : Mesh = new Mesh ();
GetComponent(MeshFilter).mesh = mesh;
mesh.vertices = newVertices;
mesh.uv = newUV;
mesh.triangles = newTriangles;
}
GameObject plane = GameObject.CreatePrimitive(PrimitiveType.Plane);
// Position and rotation plane
plane.transform.position = new Vector3(1f, 2f, 3f);