【发布时间】:2022-01-08 06:26:05
【问题描述】:
我有 2 个脚本 一个检查一个区域是否空闲的 如果该区域是空闲的,则生成一个对象 这是为了防止重叠 检查脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SpaceCheck : MonoBehaviour
{
public bool isFree = true;
public GameObject RoomParent;
void OnCollisionEnter(Collision col)
{
isFree = false;
}
void Start()
{
if(isFree == true)
{
RoomParent.SetActive(true);
}
}
void Update()
{
}
}
生成器脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RoomSpawner : MonoBehaviour
{
public List<Transform> Spawners;
public List<GameObject> Rooms;
int choosenSpawner = 0;
public GameObject SpaceCheck;
void Start()
{
choosenSpawner = Random.Range(0, Spawners.Count);
GameObject manager = GameObject.Find("RoomsManager");
RoomsManager managerProperty = manager.GetComponent<RoomsManager>();
GameObject Space = SpaceCheck;
SpaceCheck spaceProperty = Space.GetComponent<SpaceCheck>();
if (managerProperty.maxRoom > managerProperty.RoomCount && spaceProperty.isFree == true)
{
Instantiate(Rooms[Random.Range(0, Rooms.Count)], Spawners[choosenSpawner].position, Spawners[choosenSpawner].rotation);
RoomsManager.instance.AddRoomCount();
}
}
void Update()
{
}
}
问题是它们仍然重叠
【问题讨论】:
-
所以基本上你是在问如何选择没有重复的随机位置?
标签: c# unity3d procedural-generation