RouteManager.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Linq;
  2. using Controller.Bicycle;
  3. using UnityEngine;
  4. namespace Routes
  5. {
  6. public class RouteManager : MonoBehaviour
  7. {
  8. public Route[] routes;
  9. public int selectedRoute;
  10. public int visibleLength = 3;
  11. public RbBicycleController bicycle;
  12. public Logging.Base.Logging logging;
  13. public GameObject showOnFinish;
  14. private GameObject bicycleGameObject;
  15. private void Start()
  16. {
  17. for (var i = 0; i < routes.Length; i++) routes[i].gameObject.SetActive(i == selectedRoute);
  18. routes[selectedRoute].OnStartEntered += OnStartEntered;
  19. routes[selectedRoute].OnFinishPassed += OnFinishPassed;
  20. PlaceBike();
  21. }
  22. private void PlaceBike()
  23. {
  24. var firstTurnPos = routes[selectedRoute].items.First().turn.transform.position;
  25. var startTransform = routes[selectedRoute].start.gameObject.transform;
  26. var difStartFirstTurn = firstTurnPos - startTransform.position;
  27. var bikeDirection = Vector3.zero;
  28. if (difStartFirstTurn.x > 1)
  29. bikeDirection = new Vector3(-1, 0, 0);
  30. else if (difStartFirstTurn.z > 1)
  31. bikeDirection = new Vector3(0, 0, -1);
  32. else if (difStartFirstTurn.x < -1)
  33. bikeDirection = new Vector3(1, 0, 0);
  34. else if (difStartFirstTurn.z < -1) bikeDirection = new Vector3(0, 0, 1);
  35. bicycleGameObject = bicycle.gameObject;
  36. bicycleGameObject.transform.position =
  37. startTransform.position + bikeDirection * 12;
  38. bicycleGameObject.transform.LookAt(startTransform);
  39. }
  40. private void OnFinishPassed()
  41. {
  42. //bicycle.enabled = false;
  43. Instantiate(showOnFinish, bicycle.transform);
  44. Destroy(logging.gameObject);
  45. }
  46. private void OnStartEntered()
  47. {
  48. logging.gameObject.SetActive(true);
  49. }
  50. }
  51. }