Unity에서 문을 만들고 싶습니다 (C#에서 골고루)

6272 단어 Unity3DC#Unity
나는 Unity의 Animation을 전혀 다루지 않기 때문에 C#을 사용합니다.

만들고 싶은 문


  • 어느 정도 문에 접근하고 F 키를 누르면 문이 열립니다.
  • 다시 F 키를 누르면 문이 닫힙니다.
  • 문을 떠나면 F 키를 눌러도 아무 것도 반응하지 않습니다

  • 1. GUI로 문 만들기



    Cube를 도어의 형태로 하고, 단지 그것을 돌리면 중심을 축으로 돌려 버리므로, 빈 요소 안에 도어를 넣고, 빈 요소의 축을 도어의 가장자리로 설정해 빈 요소를 돌린다 Unity 특정 Pivot 위치 변경할 수없는 문제를 해결합니다.


    2. C#으로 돌리기



    이번에는 미닫이 문을 만듭니다.
    using System.Collections;
    using UnityEngine;
    
    public class Door_Controller : MonoBehaviour {
        public bool isOpened = false;
        public bool isEnter = false;
    
        void Update () {
            if (Input.GetKeyDown (KeyCode.F)) {
                if (isEnter && !isOpened) {
                    transform.Rotate (0, 90, 0);
                    isOpened = true;
                } else if (isEnter && isOpened) {
                    transform.Rotate (0, -90, 0);
                    isOpened = false;
                }
            }
        }
    
        private void OnTriggerStay (Collider collider) {
            if (collider.gameObject.tag == "Player") {
                isEnter = true;
            }
        }
        private void OnTriggerExit (Collider collider) {
            if (collider.gameObject.tag == "Player") {
                isEnter = false;
            }
        }
    }
    

    내가 쓴 코드이므로 어려운 일은 없습니다.

    3. 구성 요소 추가 및 완료 ...



    방금 빈 요소에 위의 코드를 추가하고 ...


    실행하면 제대로 움직일 것이다.


    실행!!


    ! ! ! ! ! . . . . ? ?



    단지 Y축을 회전시켰을 뿐인데 왠지 사이즈가 이상하게도...

    4. 빈 요소를 한 번 루트 디렉토리로 되돌립니다.



    반나절에 걸쳐 원인을 추구했는데, 아무래도 최초로 문을 만드는 작업을 중첩 속에서 실시하면, 사이즈가 부모 요소 비교의 값이므로 회전하는 것만으로 버그라고 이상하게 되는 것 같습니다.

    이렇게 된 것을

    이렇게 하면...

    부탁...


    움직였다!

    이 중첩 문제는 구구라고 해도 전혀 나오지 않았던 것이 1번의 함정이었으므로 참고가 되면 다행입니다.

    좋은 웹페이지 즐겨찾기