Newer
Older
Dreamsturbia-Project-IADE-Unity3D / Assets / Scripts / TimeFlush.cs
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Events;
  5. public class TimeFlush : MonoBehaviour
  6. {
  7. [SerializeField]
  8. private List<ElevatorScript> elevators;
  9. [SerializeField]
  10. private List<Gate> gates;
  11. [SerializeField]
  12. private List<GameObject> objects;
  13. [SerializeField]
  14. private float range;
  15. private List<PositionRotation> pos;
  16. private GameObject player;
  17. public UnityEvent onPressed;
  18. private void Start()
  19. {
  20. player = GameObject.FindGameObjectWithTag("Player");
  21. pos = new List<PositionRotation>();
  22. foreach(GameObject o in objects)
  23. {
  24. Debug.Log(o);
  25. pos.Add(new PositionRotation(o.transform.position, o.transform.eulerAngles));
  26. }
  27. }
  28. void Update()
  29. {
  30. if (Input.GetKeyDown(KeyCode.F) && Vector3.Distance(transform.position, player.transform.position) < range)
  31. {
  32. TimeFlushAction();
  33. }
  34. }
  35. public void TimeFlushAction()
  36. {
  37. foreach(ElevatorScript l in elevators)
  38. {
  39. l.transform.position = l.startPos;
  40. l.currentPos = l.startPos;
  41. l.whereAmI = 1;
  42. }
  43. foreach(Gate g in gates)
  44. {
  45. g.isOpening = false;
  46. }
  47. for(int i = 0; i < pos.Count; i++)
  48. {
  49. objects[i].transform.position = pos[i].position;
  50. objects[i].transform.eulerAngles = pos[i].rotation;
  51. }
  52. onPressed.Invoke();
  53. }
  54. }