public void CreateSpecificRole(Role newRole) { if (transform.position.y > 0) { // Determine start and end positions for pedestrian float startY = 2.2f; float endY = -3f; // Create pedestrian Vector3 streetcarPosition = GameObject.FindGameObjectWithTag("Streetcar").transform.position; Vector3 spawnPosition = new Vector3(streetcarPosition.x + 3, startY, 0); GameObject newPedestrian = Instantiate(pedestrianPrefab, spawnPosition, Quaternion.identity) as GameObject; newPedestrian.transform.SetParent(pedestrianContainer); // Set Role Pedestrian pedestrianScript = newPedestrian.GetComponent <Pedestrian> (); pedestrianScript.SetRole(newRole); pedestrianScript.SetMoveSpeed(1f); pedestrianScript.SetMoveDelayTime(1f); // Set Sprite switch (newRole) { case Role.Coin: newPedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = pedestrianSprites [0]; break; case Role.Stink: newPedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = pedestrianSprites [Random.Range(0, pedestrianSprites.Length)]; break; case Role.Chunky: newPedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = chunkySprites [Random.Range(0, chunkySprites.Length)]; break; case Role.Inspector: newPedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = inspectorSprites [Random.Range(0, inspectorSprites.Length)]; break; case Role.Dazer: newPedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = dazerSprites [Random.Range(0, dazerSprites.Length)]; break; case Role.Officer: newPedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = officerSprites [Random.Range(0, officerSprites.Length)]; break; case Role.Raver: newPedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = pedestrianSprites [Random.Range(0, pedestrianSprites.Length)]; break; } // Set destination Vector3 newDestination = new Vector3(streetcarPosition.x + 3, endY, 0); pedestrianScript.SetDestination(newDestination); } }
void GetNewRole(GameObject pedestrian) { float randomValue = Random.Range(0, raverPercentage + officerPercentage + dazerPercentage + inspectorPercentage + chunkyPercentage + stinkPercentage + coinPercentage); Pedestrian pedestrianScript = pedestrian.GetComponent <Pedestrian>(); if (randomValue < coinPercentage) { pedestrianScript.SetRole(Role.Coin); pedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = pedestrianSprites [Random.Range(0, pedestrianSprites.Length)]; } else if (randomValue < stinkPercentage + coinPercentage) { pedestrianScript.SetRole(Role.Stink); pedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = pedestrianSprites [Random.Range(0, pedestrianSprites.Length)]; } else if (randomValue < chunkyPercentage + stinkPercentage + coinPercentage) { pedestrianScript.SetRole(Role.Chunky); pedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = chunkySprites [Random.Range(0, chunkySprites.Length)]; } else if (randomValue < inspectorPercentage + chunkyPercentage + stinkPercentage + coinPercentage) { pedestrianScript.SetRole(Role.Inspector); pedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = inspectorSprites [Random.Range(0, inspectorSprites.Length)]; } else if (randomValue < dazerPercentage + inspectorPercentage + chunkyPercentage + stinkPercentage + coinPercentage) { pedestrianScript.SetRole(Role.Dazer); pedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = dazerSprites [Random.Range(0, dazerSprites.Length)]; } else if (randomValue < officerPercentage + dazerPercentage + inspectorPercentage + chunkyPercentage + stinkPercentage + coinPercentage) { pedestrianScript.SetRole(Role.Officer); pedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = officerSprites [Random.Range(0, officerSprites.Length)]; } else if (randomValue < raverPercentage + officerPercentage + dazerPercentage + inspectorPercentage + chunkyPercentage + stinkPercentage + coinPercentage) { pedestrianScript.SetRole(Role.Raver); } else { pedestrianScript.SetRole(Role.Norm); pedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = pedestrianSprites [Random.Range(0, pedestrianSprites.Length)]; } if (pedestrianScript.GetRole() != Role.Norm) { pedestrianScript.SetMoveSpeed(2); } }
void SetDestination(GameObject pedestrian) { Pedestrian pedestrianScript = pedestrian.GetComponent <Pedestrian>(); pedestrianScript.SetMoveDelayTime(1f); if (pedestrianScript.GetRole() == Role.Norm) { Vector3 newDestination = (Random.value < 0.5f) ? leftEnd : rightEnd; pedestrianScript.SetDestination(newDestination); pedestrian.transform.SetParent(pedestrianContainer); } else if (pedestrianScript.GetRole() == Role.Coin) { // Either spawn to walk sidewalk or spawn in stop if (Random.value < 0.75) { Vector3 newDestination = (Random.value < 0.5f) ? leftEnd : rightEnd; pedestrianScript.SetDestination(newDestination); pedestrian.transform.SetParent(pedestrianContainer); } else { GameObject streetcarStop; //Find a stop that the streetcar is not currently stopped at. do { streetcarStop = streetcarStops[Random.Range(0, streetcarStops.Length)]; } while(streetcarStop.GetComponent <StreetcarStop>().StreetcarStopped()); pedestrian.transform.SetParent(streetcarStop.transform); Vector3 pedestrianPosition = streetcarStop.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(-0.3f, 0.3f), 0); pedestrian.transform.position = pedestrianPosition; chunkyPercentage *= (streetcarStop.transform.childCount - 1); streetcarStop.GetComponent <StreetcarStop>().UpdateMinimap(); pedestrian.GetComponent <Pedestrian>().CheckIfBusStopPedestrian(); } } else if (pedestrianScript.GetRole() == Role.Inspector || pedestrianScript.GetRole() == Role.Officer || pedestrianScript.GetRole() == Role.Raver) { GameObject streetcarStop; do { streetcarStop = streetcarStops[Random.Range(0, streetcarStops.Length)]; } while(streetcarStop.GetComponent <StreetcarStop>().StreetcarStopped()); // If stop already has role, change new person to a coin if (streetcarStop.GetComponent <StreetcarStop>().HasRole(pedestrianScript.GetRole())) { pedestrianScript.SetRole(Role.Coin); pedestrian.GetComponentInChildren <SpriteRenderer> ().sprite = pedestrianSprites [Random.Range(0, pedestrianSprites.Length)]; } pedestrian.transform.SetParent(streetcarStop.transform); Vector3 pedestrianPosition = streetcarStop.transform.position + new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(-0.5f, 0.5f), 0); pedestrian.transform.position = pedestrianPosition; streetcarStop.GetComponent <StreetcarStop>().UpdateMinimap(); } else { Vector3 newDestination = new Vector3(pedestrian.transform.position.x, opposingSpawnerTransform.position.y, 0); pedestrianScript.SetDestination(newDestination); pedestrian.transform.SetParent(pedestrianContainer); } }