Я порождаю сферы и хочу, чтобы они не пересекались.Сценарий в основном работает, но я всегда получаю несколько пересекающихся сфер - в парах или тройках близко друг к другу.
Я перепробовал все методы - CheckSphere
, OverlapSphere
, а также те же методы для box
и mesh
, пытался рандомизировать позицию на другой границе - ничто не помогает.
void CreateObject(Vector3 v)
{
_myObj = Instantiate(ballPrefab, _cloneParent);
_myObj.transform.localPosition = v;
_myObj.GetComponent<MeshRenderer>().enabled = false;
SpawnedObjects.Append(_myObj);
}
SpawnedObjects = new GameObject[_amountRandomized];
_cloneParent = GameObject.FindGameObjectWithTag("SurfaceFlag").transform;
const float objectSize = 105f;
for (var i = 0; i < _amountRandomized; i++)
{
var randomizedPos = new Vector3(Random.Range(-DistanceFromCenter, DistanceFromCenter), SpawnDepth, Random.Range(-DistanceFromCenter, DistanceFromCenter));
while (Physics.CheckSphere(_cloneParent.transform.TransformPoint(randomizedPos), objectSize, 10))
{
Debug.Log(Physics.CheckSphere(_cloneParent.transform.TransformPoint(randomizedPos), objectSize, 10));
randomizedPos = new Vector3(Random.Range(-DistanceFromCenter, DistanceFromCenter), SpawnDepth, Random.Range(-DistanceFromCenter, DistanceFromCenter));
}
CreateObject(randomizedPos);
}
private void OnTriggerEnter(Collider col)
{
if (col.gameObject.CompareTag("Collectible"))
{
Debug.Log("Moving sphere");
_transform.position = new Vector3(Random.Range(-_distanceFromCenter, _distanceFromCenter), Gameplay.SpawnDepth, Random.Range(-_distanceFromCenter, _distanceFromCenter));
}
_goDown = false; //trigger to move 6f downwards with Lerp
_goUp = true; //same but upwards
_startTime = Time.time;
}
Нет сообщений об ошибках.