2014-11-06 3 views
0

Как я могу выполнить OverlapSphere для параллельных массивов, которые обнаруживают, когда есть перекрытие файлов prefab gameObjects? Вот мой код, который генерирует эти сборные блоки в случайных позициях и размерах.OverlapSphere для параллельных массивов

void Platform_Position_Scale_Generator(int i) { 

    posX[i] = Random.Range(minPosRange, maxPosRange + 1); 
    posY[i] = Random.Range(minPosRange, maxPosRange + 1); 
    posZ[i] = 0; 

    scaleX[i] = Random.Range(minScaleRange, maxScaleRange + 1); 
    scaleY[i] = 1; 
    scaleZ[i] = 1; 

} 

void Platform_Generator(int i) { 

    platformPrefabPosition[i].x = posX[i]; 
    platformPrefabPosition[i].y = posY[i]; 
    platformPrefabPosition[i].z = posZ[i]; 

    Instantiate(platformPrefab, platformPrefabPosition[i], Quaternion.identity); 
    platformPrefab.transform.localScale = new Vector3(scaleX[i], 1, 1); 


} 
+0

Просьба уточнить, что вы хотите, выполнение «OverlapSphere» не имеет для меня никакого смысла. – Hobbyist

+0

Разве это не ясно? Извините. Так что, я генерирую эти случайные платформы. И так как они будут перекрываться, потому что они генерируются случайным образом. Как я могу это сделать, чтобы они не перекрывали друг друга? Вам не нужно делать что-то подобное? http://docs.unity3d.com/ScriptReference/Renderer-bounds.html – JekasG

+0

Итак, в основном вам нужно проверить, есть ли уже объект, где он пытается создать экземпляр нового объекта, а затем вернуться, если там уже есть, правильно ? В этом случае вам нужно создать экземпляр List <> объектов, которые были созданы, тогда вы можете либо установить коллайдеры, либо выполнить проверки коллайдера, либо выполнить математические проверки с помощью сценария Renderer-bounds, на который вы ссылаетесь. – Hobbyist

ответ

0

Вы можете просто просто создать скрипт на вашей реализованным платформе, которая использует следующее:

using UnityEngine; 
using System; 

public class Example : MonoBehaviour 
{ 
    void OnTriggerEnter(Collider collider) 
    { 
     if(collider.gameObject.tag == "platform") 
     { 
      Destroy(gameObject); 
     } 
    } 
} 

Пожалуйста, обратите внимание, вы должны установить платформы игра-тег объекта на «платформе» и изменить OnTriggerEnter к OnCollisionEnter соответственно, если ваш игровой объект не настроен на триггер.

Что этот сценарий будет делать, это вызвать OnTriggerEnter/OnCollisionEnter, когда он сталкивается с другой платформой, а затем удаляет себя.

+0

Можно ли так не делать этого? – JekasG

+0

Другим способом будет математика, основанная на центральном положении игрового объекта, который становится намного более сложным. – Hobbyist

+0

Да, пожалуйста, я хотел бы знать этот путь. Но почему вы не можете использовать OverlapsSphere? – JekasG

Смежные вопросы