Privvet1

Untitled

Nov 27th, 2021
925
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. [RequireComponent(typeof(MeshFilter))]
  6. public class Meshgen : MonoBehaviour
  7. {
  8.     Mesh mesh;
  9.  
  10.     Vector3[] vertices;
  11.     int[] triangles;
  12.  
  13.     public int xSize = 20;
  14.     public int zSize = 20;
  15.     // Start is called before the first frame update
  16.     void Start()
  17.     {
  18.         mesh = new Mesh();
  19.         GetComponent<MeshFilter>().mesh = mesh;
  20.  
  21.         CreateShape();
  22.         UpdateMesh();
  23.        
  24.     }
  25.  
  26.     void CreateShape()
  27.     {
  28.         vertices = new Vector3[(xSize + 1) * (zSize + 1)];
  29.  
  30.         int i = 0;
  31.         for (int z = 0; z <= zSize; z++)
  32.         {
  33.             for (int x = 0; x <= xSize; x++)
  34.             {
  35.                 float y = Mathf.PerlinNoise(x * .1f, z * .3f) * 2f;
  36.                 vertices[i] = new Vector3(x, y, z);
  37.                 i++;
  38.             }
  39.         }
  40.  
  41.         triangles = new int[xSize * zSize * 6];
  42.  
  43.         int vert = 0;
  44.         int tris = 0;
  45.  
  46.         for (int z = 0; z < zSize; z++)
  47.         {
  48.             for (int x = 0; x < xSize; x++)
  49.             {
  50.  
  51.                 triangles[tris + 0] = vert + 0;
  52.                 triangles[tris + 1] = vert + xSize + 1;
  53.                 triangles[tris + 2] = vert + 1;
  54.                 triangles[tris + 3] = vert + 1;
  55.                 triangles[tris + 4] = vert + xSize + 1;
  56.                 triangles[tris + 5] = vert + xSize + 2;
  57.  
  58.                 vert++;
  59.                 tris += 6;
  60.             }
  61.             vert++;
  62.         }
  63.        
  64.  
  65.        
  66.        
  67.     }
  68.  
  69.     void UpdateMesh()
  70.     {
  71.         mesh.Clear();
  72.  
  73.         mesh.vertices = vertices;
  74.         mesh.triangles = triangles;
  75.  
  76.         mesh.RecalculateNormals();
  77.     }
  78.  
  79.     private void OnDrawGizmos()
  80.     {
  81.         if (vertices == null)
  82.             return;
  83.  
  84.         for (int i = 0; i < vertices.Length; i++)
  85.         {
  86.             Gizmos.DrawSphere(vertices[i], .1f);
  87.         }
  88.     }
  89.  
  90.     // Update is called once per frame
  91.     void Update()
  92.     {
  93.        
  94.     }
  95. }
  96.  
RAW Paste Data