ObstacleDoor.cs 868 B

123456789101112131415161718192021222324252627282930313233343536
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class ObstacleDoor : MonoBehaviour
  5. {
  6. private Vector3 startPosition;
  7. public Vector3 OpenOffset;
  8. public bool isOpen;
  9. public float speed = 0.01f;
  10. void Start()
  11. {
  12. startPosition = transform.position;
  13. if(isOpen){
  14. Open();
  15. }
  16. }
  17. public void Open(){
  18. isOpen=true;
  19. StartCoroutine(MoveTo(startPosition + OpenOffset));
  20. }
  21. public void Close(){
  22. isOpen = false;
  23. StartCoroutine(MoveTo(startPosition));
  24. }
  25. IEnumerator MoveTo(Vector3 newPosition){
  26. while(Vector3.Distance(transform.position, newPosition) > 0.1f){
  27. transform.position = Vector3.Lerp(transform.position, newPosition, speed);
  28. yield return new WaitForFixedUpdate();
  29. }
  30. }
  31. }