Advertisement
LisekPL

Generowanie Terenu

Feb 21st, 2017
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 19.10 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4.  
  5. public class Blok
  6. {
  7.     public int id;
  8.  
  9.     public Blok(int t)
  10.     {
  11.         id = t;
  12.     }
  13. }
  14.  
  15. public class GenerowanieTerenu : MonoBehaviour
  16. {
  17.     public float skalaSzumu, skalaSzumu2, skalaSzumu3;
  18.     public int maksymalnaWysokosc, maksymalnaWysokosc2, maksymalnaWysokosc3, seed, obnizenieTerenu;
  19.  
  20.     bool wygenerowano = false;
  21.     Vector3 pozycja;
  22.     Mesh mesh;
  23.     Thread generowanie;
  24.  
  25.     List<Vector3> wierzcholki = new List<Vector3> ();
  26.     List<int> trojkaty = new List<int> ();
  27.  
  28.     Blok [,,] blok = new Blok[33, 33, 33];
  29.  
  30.     void Start ()
  31.     {
  32.         seed = (int) Network.time - (int) Time.realtimeSinceStartup;
  33.  
  34.         pozycja = transform.position;
  35.  
  36.         generowanie = new Thread (Generuj);
  37.         generowanie.Start ();
  38.     }
  39.  
  40.     void Generuj ()
  41.     {
  42.         for (int x = 0; x < 33; x++)
  43.             for (int z = 0; z < 33; z++)
  44.                 for
  45.                 (
  46.                     int y = Mathf.RoundToInt
  47.                     (
  48.                         Mathf.PerlinNoise ((x + seed + pozycja.x) / skalaSzumu, (z + seed + pozycja.z) / skalaSzumu) * maksymalnaWysokosc +
  49.                         Mathf.PerlinNoise ((x + seed + pozycja.x) / skalaSzumu2, (z + seed + pozycja.z) / skalaSzumu2) * maksymalnaWysokosc2 +
  50.                         Mathf.PerlinNoise ((x + seed + pozycja.x) / skalaSzumu3, (z + seed + pozycja.z) / skalaSzumu3) * maksymalnaWysokosc3 -
  51.                         (int) pozycja.y -
  52.                         obnizenieTerenu
  53.                     );
  54.                     y >= 0;
  55.                     y--
  56.                 )
  57.                 {
  58.                     if (y >= 33)
  59.                         y = 32;
  60.                    
  61.                     blok [x, y, z] = new Blok(1);
  62.                 }
  63.  
  64.         Wczytaj ();
  65.     }
  66.     void Wczytaj()
  67.     {
  68.         if (wygenerowano)
  69.             wygenerowano = false;
  70.  
  71.         for (int x = 0; x < 32; x++)
  72.         {
  73.             for (int y = 0; y < 32; y++)
  74.             {
  75.                 for (int z = 0; z < 32; z++)
  76.                 {
  77.                     int idKsztaltu = 0;
  78.  
  79.                     if (blok [x, y, z + 1] != null)
  80.                         idKsztaltu += 1;
  81.  
  82.                     if (blok [x + 1, y, z + 1] != null)
  83.                         idKsztaltu += 2;
  84.  
  85.                     if (blok [x + 1, y, z] != null)
  86.                         idKsztaltu += 4;
  87.  
  88.                     if (blok [x, y, z] != null)
  89.                         idKsztaltu += 8;
  90.  
  91.                     if (blok [x, y + 1, z + 1] != null)
  92.                         idKsztaltu += 16;
  93.  
  94.                     if (blok [x + 1, y + 1, z + 1] != null)
  95.                         idKsztaltu += 32;
  96.  
  97.                     if (blok [x + 1, y + 1, z] != null)
  98.                         idKsztaltu += 64;
  99.  
  100.                     if (blok [x, y + 1, z] != null)
  101.                         idKsztaltu += 128;
  102.  
  103.                     //Debug.Log (x + " " + y + " " + z + " : " + idKsztaltu);
  104.  
  105.                     //List<int> numeryWierzcholkow = new List<int> ();
  106. //Debug.Log ("Usuwanie: " + x + " " + y + " " + z);
  107.  
  108.         generowanie = new Thread (Wczytaj);
  109.         generowanie.Start ();
  110.     }
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement