Advertisement
Haydot

Untitled

Jul 2nd, 2021
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.30 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Chunks : MonoBehaviour
  6. {
  7.     public int block_width = 200;
  8.     public int block_height = 10000;
  9.     public int block_side = 200;
  10.     public int chunk_size;
  11.     public Vector3 chunk_V3;
  12.     public Renderer renderer;
  13.     public GameObject G_chunk = null;
  14.  
  15.     public GameObject block = null;
  16.     public BoxCollider collider;
  17.  
  18.     public LayerMask mask;
  19.  
  20.     public List<Chunks> chunks = new List<Chunks>();
  21.    
  22.     void Start()
  23.     {
  24.         chunk_size = block_height * block_width * block_side;
  25.         chunk_V3 = new Vector3(block_width, block_height, block_side);
  26.         chunks.Add(Instantiate(G_chunk, new Vector3(0, 0, 0), Quaternion.identity).GetComponent<Chunks>());
  27.  
  28.         //generate block 0 for chunk 0
  29.         foreach(Chunks chunk in chunks){
  30.             if(chunk == chunks[0]){
  31.                 Instantiate(block, new Vector3(0, 0, 0), Quaternion.identity);
  32.                 continue;
  33.             } else{
  34.                 renderer = chunk.GetComponent<Renderer>();
  35.                 collider = chunk.GetComponent<BoxCollider>();
  36.                 collider.size = new Vector3(block_width, block_height, block_side);
  37.  
  38.                 //for x
  39.                 if(Physics.CheckSphere(new Vector3(chunk.transform.position.x + 10, chunk.transform.position.y, chunk.transform.position.z), chunk.transform.localScale.x, mask)){
  40.                     return;
  41.                 } else{
  42.                     chunks.Add(Instantiate(G_chunk, new Vector3(chunk.transform.position.x + 10, chunk.transform.position.y, chunk.transform.position.z), Quaternion.identity).GetComponent<Chunks>());
  43.                 }
  44.                 if(Physics.CheckSphere(new Vector3(chunk.transform.position.x - 10, chunk.transform.position.y, chunk.transform.position.z), chunk.transform.localScale.x, mask)){
  45.                     return;
  46.                 } else{
  47.                     chunks.Add(Instantiate(G_chunk, new Vector3(chunk.transform.position.x - 10, chunk.transform.position.y, chunk.transform.position.z), Quaternion.identity).GetComponent<Chunks>());
  48.                 }
  49.                 //we dont do it for y as a chunk extends to more blocks then needed
  50.  
  51.                 //for z
  52.                 if(Physics.CheckSphere(new Vector3(chunk.transform.position.x, chunk.transform.position.y, chunk.transform.position.z + 10), chunk.transform.localScale.z, mask)){
  53.                     return;
  54.                 } else{
  55.                     chunks.Add(Instantiate(G_chunk, new Vector3(chunk.transform.position.x, chunk.transform.position.y, chunk.transform.position.z + 10), Quaternion.identity).GetComponent<Chunks>());
  56.                 }
  57.                 if(Physics.CheckSphere(new Vector3(chunk.transform.position.x, chunk.transform.position.y, chunk.transform.position.z - 10), chunk.transform.localScale.z, mask)){
  58.                     return;
  59.                 } else{
  60.                     chunks.Add(Instantiate(G_chunk, new Vector3(chunk.transform.position.x, chunk.transform.position.y, chunk.transform.position.z - 10), Quaternion.identity).GetComponent<Chunks>());
  61.                 }
  62.  
  63.  
  64.             }
  65.         }
  66.     }
  67.  
  68.  
  69.     void OnDrawGizmos(){
  70.         Gizmos.color = Color.gray;
  71.         Gizmos.DrawWireCube(renderer.bounds.center ,chunk_V3);
  72.     }
  73. }
  74.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement