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