То, чего я пытаюсь достичь, - это когда мои префабы создаются в моей зоне возрождения, когда они сталкиваются, тогда один либо перемещается от другого, либо уничтожается, а другой возрождается заменяет его. Я пытался использовать теги, чтобы другие прикосновения были готовы. Я пытался получить префабы имен. Я не знаю, что я делаю не так. Я просто перетащил свой игровой объект в папку prefabs, чтобы получить prefabs. Вот мой код:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpawnArea : MonoBehaviour
{
int counter = 0;
public int max;
//public GameObject objects;
public GameObject[] objects;
public GameObject[] objectsPrefabs;
public Vector3 size;
public Vector3 center;
int xRotation = 0;
// Start is called before the first frame update
void Start()
{
Spawn();
}
// Update is called once per frame
void Update()
{
if (counter < max)
{
Spawn();
}
}
//void Spawn()
//{
// Vector3 pos = center + new Vector3(Random.Range(-size.x / 2, size.x / 2), Random.Range(-size.y / 2, size.y / 2), Random.Range(-size.z / 2, size.z / 2));
// Instantiate(objects, pos, Quaternion.Euler(0, xRotation, 0));
// xRotation += 45;
// counter++;
//}
void Spawn()
{
objects = new GameObject[objectsPrefabs.Length];
Vector3 pos = center + new Vector3(Random.Range(-size.x / 2, size.x / 2), Random.Range(-size.y / 2, size.y / 2), Random.Range(-size.z / 2, size.z / 2));
for (int i = 0; i < objectsPrefabs.Length; i++)
{
objects[i] = Instantiate(objectsPrefabs[i], pos, Quaternion.Euler(0, xRotation, 0)) as GameObject;
}
xRotation += 45;
counter++;
}
void OnCollisionEnter(Collision collision)
{
for (int i = 0; i < objectsPrefabs.Length; i++)
{
if (collision.transform.CompareTag("spawnwall"))
{
//if (objects[i].gameObject)
//{
Destroy(objectsPrefabs[i]);
counter--;
Spawn();
//}
}
}
}
private void OnDrawGizmosSelected()
{
Gizmos.color = new Color(1, 0, 0, 0.5f);
Gizmos.DrawCube(center, size);
}
}