Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Chunks : MonoBehaviour
- {
- public int block_width = 200;
- public int block_height = 10000;
- public int block_side = 200;
- public int chunk_size;
- public Vector3 chunk_V3;
- public Renderer renderer;
- public GameObject G_chunk = null;
- public GameObject block = null;
- public BoxCollider collider;
- public LayerMask mask;
- public List<Chunks> chunks = new List<Chunks>();
- void Start()
- {
- chunk_size = block_height * block_width * block_side;
- chunk_V3 = new Vector3(block_width, block_height, block_side);
- chunks.Add(Instantiate(G_chunk, new Vector3(0, 0, 0), Quaternion.identity).GetComponent<Chunks>());
- //generate block 0 for chunk 0
- foreach(Chunks chunk in chunks){
- if(chunk == chunks[0]){
- Instantiate(block, new Vector3(0, 0, 0), Quaternion.identity);
- continue;
- } else{
- renderer = chunk.GetComponent<Renderer>();
- collider = chunk.GetComponent<BoxCollider>();
- collider.size = new Vector3(block_width, block_height, block_side);
- //for x
- if(Physics.CheckSphere(new Vector3(chunk.transform.position.x + 10, chunk.transform.position.y, chunk.transform.position.z), chunk.transform.localScale.x, mask)){
- return;
- } else{
- chunks.Add(Instantiate(G_chunk, new Vector3(chunk.transform.position.x + 10, chunk.transform.position.y, chunk.transform.position.z), Quaternion.identity).GetComponent<Chunks>());
- }
- if(Physics.CheckSphere(new Vector3(chunk.transform.position.x - 10, chunk.transform.position.y, chunk.transform.position.z), chunk.transform.localScale.x, mask)){
- return;
- } else{
- chunks.Add(Instantiate(G_chunk, new Vector3(chunk.transform.position.x - 10, chunk.transform.position.y, chunk.transform.position.z), Quaternion.identity).GetComponent<Chunks>());
- }
- //we dont do it for y as a chunk extends to more blocks then needed
- //for z
- if(Physics.CheckSphere(new Vector3(chunk.transform.position.x, chunk.transform.position.y, chunk.transform.position.z + 10), chunk.transform.localScale.z, mask)){
- return;
- } else{
- chunks.Add(Instantiate(G_chunk, new Vector3(chunk.transform.position.x, chunk.transform.position.y, chunk.transform.position.z + 10), Quaternion.identity).GetComponent<Chunks>());
- }
- if(Physics.CheckSphere(new Vector3(chunk.transform.position.x, chunk.transform.position.y, chunk.transform.position.z - 10), chunk.transform.localScale.z, mask)){
- return;
- } else{
- chunks.Add(Instantiate(G_chunk, new Vector3(chunk.transform.position.x, chunk.transform.position.y, chunk.transform.position.z - 10), Quaternion.identity).GetComponent<Chunks>());
- }
- }
- }
- }
- void OnDrawGizmos(){
- Gizmos.color = Color.gray;
- Gizmos.DrawWireCube(renderer.bounds.center ,chunk_V3);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement