Удаление или передублирование префабоф
Создаю аналог игры Дудл джамп. Если делать с однотипной платформой, все работает идеально(По другому коду). я решил заморочиться и сделать заменяемые платформы. сами платформы это пустышки с коллайдером, а к ним я пытаюсь подключить префабы самих платформ. при запуске, базовые платформы сразу же появляются, при игре, пустышки снизу переносятся на верх и рандомно располагаются по экрану, но сами префабы не получается удалять и переносить наверх.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeneratorPlats : MonoBehaviour
{
public GameObject[] objects;
public GameObject[] PtatfColl;
public float verh = 0.5f;
private int fig;
void Update()
{
}
public void OnCollisionEnter2D(Collision2D collision)
{
}
public void OnTriggerEnter2D(Collider2D collision)
{
//Destroy(objects[fig]);
if (collision.tag == "TGD" )
{
int plat = Random.Range(1, 90);
if (plat <= 30)
{
fig = 0;
}
if (plat > 30 && plat <= 60)
{
fig = 1;
}
if (plat > 60 && plat <= 90)
{
fig = 2;
}
StArTpLaTfOrMs();
}
}
public void StArTpLaTfOrMs()
{
int r = Random.Range(0, 39);
switch (r)
{
case 0:
transform.position = new Vector3(-1.8f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 1:
transform.position = new Vector3(-1f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 2:
transform.position = new Vector3(0.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 3:
transform.position = new Vector3(1.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 4:
transform.position = new Vector3(1.95f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 5:
transform.position = new Vector3(-1.8f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 6:
transform.position = new Vector3(-1f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 7:
transform.position = new Vector3(0.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 8:
transform.position = new Vector3(1.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 9:
transform.position = new Vector3(1.95f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 10:
transform.position = new Vector3(-1.8f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 11:
transform.position = new Vector3(-1f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 12:
transform.position = new Vector3(0.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 13:
transform.position = new Vector3(1.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 14:
transform.position = new Vector3(1.95f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 15:
transform.position = new Vector3(-1.8f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 16:
transform.position = new Vector3(-1f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 17:
transform.position = new Vector3(0.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 18:
transform.position = new Vector3(1.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 19:
transform.position = new Vector3(1.95f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 20:
transform.position = new Vector3(-1.8f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 21:
transform.position = new Vector3(-1f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 22:
transform.position = new Vector3(0.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 23:
transform.position = new Vector3(1.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 24:
transform.position = new Vector3(1.95f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 25:
transform.position = new Vector3(-1.8f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 26:
transform.position = new Vector3(-1f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 27:
transform.position = new Vector3(0.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 28:
transform.position = new Vector3(1.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 29:
transform.position = new Vector3(1.95f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 30:
transform.position = new Vector3(-1.8f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 31:
transform.position = new Vector3(-1f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 32:
transform.position = new Vector3(0.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 33:
transform.position = new Vector3(1.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 34:
transform.position = new Vector3(1.95f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 35:
transform.position = new Vector3(-1.8f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 36:
transform.position = new Vector3(-1f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 37:
transform.position = new Vector3(0.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 38:
transform.position = new Vector3(1.15f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
case 39:
transform.position = new Vector3(1.95f, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
break;
}
}
}
Может я описал данный вопрос не совсем корректно, но надеюсь весьма понятно, Что посоветуете господа программисты?
Ответы (1 шт):
Я не отвечу на сам вопрос ибо влом разбираться в чем его суть.... Но посмею оптимизировать ужас написанный в коде... Я на эту жесть без слез смотреть не могу
(оптимизации коснулись обоих методов)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GeneratorPlats : MonoBehaviour
{
public GameObject[] objects;
public GameObject[] PtatfColl;
public float verh = 0.5f;
private int fig;
private float[] positions = {-1.8f, -1f, 0.15f}; //здесь все 39 значений
public void OnTriggerEnter2D(Collider2D collision)
{
//Destroy(objects[fig]);
CreatePlatform(collision);
}
public void CreatePlatform(Collider2D collision)
{
if (collision.tag != "TGD" ) return;
int plat = Random.Range(1, 90);
if (plat > 60) {
fig = 2;
}
else if (plat > 30){
fig = 1;
}
else {
fig = 0;
}
InstantiatePlatform();
}
private void InstantiatePlatform()
{
int spawnPos = positions[ Random.Range(0, positions.length) ];
transform.position = new Vector3(spawnPos, transform.position.y +13f, 0);
Instantiate(objects[fig], PtatfColl[0].transform.position - new Vector3(0.156f, verh, 0), Quaternion.identity);
}
}
а сам вопрос переформулируй, а то не понятно ничего
