/// <summary> /// Always return a Rect[] of 2 length /// </summary> /// <returns></returns> private Rect[] GetDivideRoomSize() { int throwDice = UtilityMethod.RollDice(); Rect[] rooms = new Rect[2]; //Horizontal if (throwDice == 0) { if (rect.width / rect.height > AllowRatioDifference) { return(GetDivideRoomSize()); } float randomY = Random.Range(rect.height * 0.4f, rect.height * 0.6f); rooms[0] = new Rect(rect.x, rect.y, rect.width, randomY); rooms[1] = new Rect(rect.x, rect.y + randomY, rect.width, rect.height - randomY); //Vertical } else { if (rect.height / rect.width > AllowRatioDifference) { return(GetDivideRoomSize()); } float randomX = Random.Range(rect.width * 0.4f, rect.width * 0.6f); rooms[0] = new Rect(rect.x, rect.y, randomX, rect.height); rooms[1] = new Rect(rect.x + randomX, rect.y, rect.width - randomX, rect.height); } return(rooms); }
public override void GenerateObstacle(bool p_isPreBuild = false) { if (p_isPreBuild) { return; } vehicles.Clear(); Highway_STP hightway_stp = (Highway_STP)terrain_stp; AnimatedObject_STP animatedObject = hightway_stp.vehicles[Random.Range(0, hightway_stp.vehicles.Count)]; direction = (UtilityMethod.RollDice() == 0) ? -1 : 1; timePeriod = animatedObject._displayPeriod; vehicleSpeed = animatedObject.randomSpeed; for (int i = 0; i < hightway_stp.maxEnableNum; i++) { GameObject generatedVehicle = PoolManager.instance.ReuseObject(animatedObject._id); generatedVehicle.transform.SetParent(AnimatedObject.transform); vehicles.Add(generatedVehicle); } }