ground destroy, instantiate

This commit is contained in:
2023-01-31 15:32:49 +01:00
parent 87008baf62
commit 2837b80902
35 changed files with 269 additions and 102 deletions

View File

@@ -5,10 +5,13 @@ using UnityEngine;
public class GroundController : MonoBehaviour
{
private GameObject[] ground;
public GameObject[] loadFrom;
private float groundMoveSpeed = 10f;
private void Awake() {
LoadPrefabs("Prefabs/Modulok");
Debug.Log(loadFrom.Length);
//getting all of the ground objects by the tag
ground = GameObject.FindGameObjectsWithTag("Ground");
if(ground.Length == 0){
@@ -19,17 +22,58 @@ public class GroundController : MonoBehaviour
}
private void Update() {
for (int i = 0; i < ground.Length; i++)
{
ground = GameObject.FindGameObjectsWithTag("Ground"); //torles miatt ujra le kell kerni a ground objecteket
OrderGroundArrayByZ(); //rendezzuk z szerint hogy sorba legyenek
for (int i = 0; i < ground.Length; i++){ //ground objecteket mozgatja
ground[i].transform.position = ground[i].transform.position + new Vector3(0,0, -groundMoveSpeed * Time.deltaTime);
}
//uj ground letrehozas
if(ground[ground.Length-1].transform.position.z <= 80){
CreateNewGround();
}
//ellenorzi hogy torolheto e az object
foreach (var item in ground){
if(CheckGroundToDestroy(item)){
Destroy(item);
}
}
}
private void CheckGroundToDestroy(){
private void LoadPrefabs(string path){ //toltese be a palya objecteket a resources mappabol pl: "Prefabs/Modulok"
loadFrom = Resources.LoadAll<GameObject>(path);
}
private bool CheckGroundToDestroy(GameObject toCheck){
//z = -80 -nal lehet torolni
if(ground[0].transform.position.z == 0){
if(toCheck.transform.position.z <= -80){
Debug.Log("elerte " + toCheck.name);
return true; //torolheto
}
return false; //nem torolheto
}
private void OrderGroundArrayByZ(){
GameObject csere;
for (int i = 0; i < ground.Length; i++){
for(int j = 0; j < i; j++){
if(ground[j].transform.position.z > ground[j+1].transform.position.z){
csere = ground[j];
ground[j] = ground[j+1];
ground[j+1] = csere;
}
}
}
}
private void CreateNewGround(){
int random = UnityEngine.Random.Range(0, loadFrom.Length);
//ketto modullal elobb tolt be, annak az iranyanak megfeleloen, +80 a ket modull hossza
Instantiate(loadFrom[random], new Vector3(0,0, ground[ground.Length-2].transform.position.z + 80), ground[ground.Length-2].transform.rotation);
}
}