0
public void generateObjectOnTerrain()
{
objectPool = new ObjectPool(objectToInstantiate, objectsToInstantiate);
float randX = 0f;
float randZ = 0f;
for (int i = 0; i < objectsToInstantiate; i++)
{
if (random == true)
{
//Generate random x,z,y position on the terrain
randX = UnityEngine.Random.Range(xTerrainPos, xTerrainPos + terrainWidth);
randZ = UnityEngine.Random.Range(zTerrainPos, zTerrainPos + terrainLength);
}
else
{
}
float yVal = Terrain.activeTerrain.SampleHeight(new Vector3(randX, 0, randZ));
var randScaleX = Random.Range(RandScaleMin.x, RandScaleMax.x);
var randScaleY = Random.Range(RandScaleMin.y, RandScaleMax.y);
var randScaleZ = Random.Range(RandScaleMin.z, RandScaleMax.z);
var randVector3 = new Vector3(randScaleX, randScaleY, randScaleZ);
//Apply Offset if needed
yVal = yVal + yOffset;
clonedObject = objectPool.GetInstance();
if (randomScale == true)
clonedObject.transform.localScale = randVector3;//new Vector3(randScaleX, randScaleY, randScaleZ);
if (parent)
clonedObject.transform.parent = this.transform;
clonedObject.tag = "ClonedObject";
clonedObject.transform.position = new Vector3(randX, yVal, randZ);
}
createdObjects = GameObject.FindGameObjectsWithTag(objname);
UpdateList(false, "ClonedObject");
}
這將在地形區域的隨機地方實例化對象。我如何實例化組中的對象?
我想在其他的時候,它不是隨機放置在一個組中的對象與兩個主要參數/變量,一個設置對象之間的空間第二個設置如何使它們在行中,例如如果在objectsToInstantiate有20個對象,我將變量設置爲4,將另一個變量設置爲10,然後對象將成爲4行,即5行,並且對象之間的間距爲10。
如果我有55個對象,我將它設置爲4行,那麼會有14行4最後一行將與3對象。
例如,在第4分的對象和5行中的空間10的塗料:
而且假如有例如然後23級的對象將看起來像:
如果圖像描述了你所拍攝的比代碼好,那麼這不是隨機的。爲什麼你甚至使用'隨機。範圍'這個如果他們應該是平等的間隔? – Programmer