12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System.Linq;
- using Controller.Bicycle;
- using UnityEngine;
- namespace Routes
- {
- public class RouteManager : MonoBehaviour
- {
- public Route[] routes;
- public int selectedRoute;
- public int visibleLength = 3;
- public RbBicycleController bicycle;
- public Logging.Base.Logging logging;
- public GameObject showOnFinish;
- private GameObject bicycleGameObject;
- private void Start()
- {
- for (var i = 0; i < routes.Length; i++)
- {
- routes[i].gameObject.SetActive(i == selectedRoute);
- }
- routes[selectedRoute].OnStartEntered += OnOnStartEntered;
- routes[selectedRoute].OnFinishPassed += OnOnFinishPassed;
- PlaceBike();
- }
- private void PlaceBike()
- {
- var firstTurnPos = routes[selectedRoute].items.First().turn.transform.position;
- var startTransform = routes[selectedRoute].start.gameObject.transform;
- var startRotationEuler = startTransform.rotation.eulerAngles;
- var difStartFirstTurn = firstTurnPos - startTransform.position;
- Vector3 bikeDirection = Vector3.zero;
- Vector3 bikeRotation = Vector3.zero;
- if (difStartFirstTurn.x > 1 || difStartFirstTurn.z > 1)
- {
- bikeDirection = startTransform.right;
- bikeRotation = new Vector3(0, -90, 0);
- }
- /*else if (difStartFirstTurn.z > 1)
- {
- bikeDirection = startTransform.forward;
- bikeRotation = new Vector3(0, -180, 0);
- }*/
- else if (difStartFirstTurn.x < -1 || difStartFirstTurn.z < -1)
- {
- bikeDirection = -startTransform.right;
- bikeRotation = new Vector3(0, 90, 0);
- }
- /*else if (difStartFirstTurn.z < -1)
- {
- bikeDirection = -startTransform.forward;
- bikeRotation = new Vector3(0, 180, 0);
- }*/
- bicycleGameObject = bicycle.gameObject;
- bicycleGameObject.transform.SetPositionAndRotation(
- startTransform.position + bikeDirection * 12,
- Quaternion.Euler(startRotationEuler + bikeRotation));
- }
- private void OnOnFinishPassed()
- {
- //bicycle.enabled = false;
- Instantiate(showOnFinish, bicycle.transform);
- Destroy(logging.gameObject);
- }
- private void OnOnStartEntered()
- {
- logging.gameObject.SetActive(true);
- }
- }
- }
|