En este momento estás viendo generando un asset grupo cerca de assets

 – Unity

generando un asset grupo cerca de assets – Unity

generando un asset grupo cerca de assets

– UnityAssets3Free

bienvenido , me llamo jorge y hoy os traigo
esta nueva pregunta

Estoy generando un montón de assets aleatoriamente en mi mapa y luego generando 4 posiciones aleatorias en el mapa que usaré para calcular la más cercana assets a estas cuatro posiciones aleatorias para «agrupar» o «agrupar» el assets. Mi objetivo es hacer que cada grupo/clúster contenga al menos 1 de cada asset. Aquí es donde parece que me estoy equivocando y no puedo entender cómo podría agregar un asset para un grupo/clúster generándolo junto al resto del assets se agrupa

Se agregó una secuencia de comandos de generación y agrupación completa a pastebin que puede ayudar a construir una mejor comprensión.

SpawningAssets y ClusteringScript.cs

generando todo assets método

SpawnAssets = new List<GameObject>()  Tree, Coin, HealthPot, Enemy, Weapon, Trap1 ;
//...
public void SpawnEveryAsset()


int TotalAmountToSpawn = 30;
int TotalAmountOfAssets = 6;
int TotalAmountToSpawnOfEach = TotalAmountToSpawn / TotalAmountOfAssets;

for(int i = 0; i < SpawnAssets.Count; i++)

    SpawnAnAsset(SpawnAssets[i], TotalAmountToSpawnOfEach);



// Instantiate the asset
void SpawnAnAsset(GameObject AssetToSpawn, int amount)

    for (int i = 0; i < amount; i++)
    
        var pos = RandomPositionOnTerrain();
        var spawned = Instantiate(AssetToSpawn, pos, Quaternion.identity);
        SpawnedAssetsInLevel.Add(new Asset(spawned, pos));
    
 

Posición aleatoria en el terreno que es válida para generar un asset

Vector3 RandomPositionOnTerrain()
 NodePosition.terrainType == TerrainType.Sand)
    
        if(!GridData.IsCellOccupied(NodePosition))
        
            Vector3 LocationToSpawn = new Vector3(NodePosition.Position.x, (NodePosition.Position.y), NodePosition.Position.z);
            
            assetSpawnLocations.Add(LocationToSpawn);

            GridData.Obstacles.Add(NodePosition);

            return LocationToSpawn;
         else
        
            var pos = RandomPositionOnTerrain();
            var NodePos = GridData.grid[(int)pos.x, (int)pos.y];

            assetSpawnLocations.Add(pos);
            GridData.Obstacles.Add(NodePos);
            return pos;
        
     else
    
        var pos = RandomPositionOnTerrain();
        var NodePos = GridData.grid[(int)pos.x, (int)pos.y];

        assetSpawnLocations.Add(pos);
        GridData.Obstacles.Add(NodePos);
        return pos;
    

Resultado de ejemplo: el árbol y la trampa son 0 en este grupo/clúster, por lo que me gustaría generar un árbol y una trampa cerca de estos otros assets.

Cluster1:
TreeAmount: 0
HealthPotAmount: 1
EnemyAmount: 2
Trap1Amount: 0
CoinAmount: 1

0

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

sin mas,espero que te halla servido

Deja una respuesta