Vector3 GetPosition(spawnType type, int wallCount) { var position = new Vector3(); switch (type) { case spawnType.Torchlight: { position = centersTorchSorted[wallCount]; break; } case spawnType.WallObstacle: { position = centersWallSorted[wallCount]; break; } default: position = GetRandomPointOnMesh(floor.sharedMesh); break; } return(position); }
// Use this for initialization void Start() { int randomNum = Random.Range(1, 10); if (randomNum % 2 == 0) { flag = spawnType.obsHI; } else { flag = spawnType.obsLO; } player = GameObject.FindWithTag("Player"); speedFactor = 10.0f; if (flag == spawnType.obsHI) { startPos = GameObject.Find("ObsStart").transform.position; endPos = GameObject.Find("ObsEnd").transform.position; } else { startPos = GameObject.Find("Obs Lo Start").transform.position; endPos = GameObject.Find("Obs Lo End").transform.position; } transform.position = startPos; //Creates temporary primitive and sets it as a child of this GameObject tempObj = GameObject.CreatePrimitive(PrimitiveType.Cube); tempObj.transform.position = transform.position; tempObj.transform.parent = transform; //spawnObj(); }
void Spawn(GameObject parent, spawnType type, float objectDensity, int wallObstacleCount = 0) { switch (type) { case spawnType.Torchlight: { obstacle = torchlight; obstacle.hideFlags = HideFlags.HideInHierarchy; break; } case spawnType.WallObstacle: { obstacle = spawnableWallObjects[random.Next(0, spawnableWallObjects.Length - 1)]; break; } case spawnType.CenterObstacle: { obstacle = spawnableCenterObjects[random.Next(0, spawnableCenterObjects.Length)]; break; } case spawnType.Waypoint: { obstacle = new GameObject("Waypoint"); obstacle.hideFlags = HideFlags.HideInHierarchy; break; } case spawnType.Platform: { obstacle = platform; obstacle.hideFlags = HideFlags.HideInHierarchy; break; } case spawnType.Enemy: { obstacle = enemy; break; } default: break; } if (obstacle == null) { Destroy(obstacle); } Vector3 position = GetPosition(type, wallObstacleCount); bool validPosition = false; if (type == spawnType.CenterObstacle || type == spawnType.Waypoint || type == spawnType.Platform || type == spawnType.Enemy) { while (!validPosition) { position = GetPosition(type, wallObstacleCount); validPosition = true; int i = parent.transform.childCount; Collider[] colliders = Physics.OverlapSphere(position, objectDensity); foreach (Collider col in colliders) { if (col.tag == "Obstacle" || col.tag == "BoxCollective" || col.tag == "Wall") { validPosition = false; break; } } } } else { validPosition = true; } if (validPosition) { switch (type) { case spawnType.Torchlight: { var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.identity); obs.transform.parent = parent.transform; var newHeigh = new Vector3(obs.transform.position.x, 2f, obs.transform.position.z); obs.transform.position = newHeigh; obs.transform.LookAt((centersTorchSorted[wallObstacleCount] + normalsTorchSorted[wallObstacleCount])); break; } case spawnType.WallObstacle: { var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.Euler(0, 0, 0)); obs.transform.parent = parent.transform; var newHeigh = new Vector3(obs.transform.position.x, 0f, obs.transform.position.z); obs.transform.position = newHeigh; break; } case spawnType.CenterObstacle: { var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.identity); obs.transform.parent = parent.transform; break; } case spawnType.Waypoint: { var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.identity); obs.transform.parent = parent.transform; obs.gameObject.tag = "Waypoint"; break; } case spawnType.Platform: { var obs = Instantiate(obstacle, position + obstacle.transform.position, Quaternion.identity); obs.transform.parent = parent.transform; obs.GetComponent <Platform>().ReloadMapUI = ReloadMapUI; GetComponent <PlayerSpawner>().CreatePlayer(obs); break; } case spawnType.Enemy: { var obs = Instantiate(obstacle, waypointList[random.Next(0, waypointList.Count)], Quaternion.identity); obs.transform.parent = parent.transform; var stats = SkeletorStats(); obs.GetComponent <EnemyBehaviour>().enemyDefinition = stats; obs.GetComponent <EnemyStats>().enemyDefinition = stats; obs.GetComponent <EnemyAI>().patrolTargets = waypointList.ToArray(); break; } default: break; } } }