Unity 내배캠 TIL

Unity게임 개발 입문 (4주차 1일)

오늘도즐겨 2024. 10. 7. 23:50

🔥 10/7 월요일 목표 🔥

 

🔎 10강까지 듣기📝  

🔎 개인프로젝트 확인하고 시작준비하기!

 

10:00 발제 및 이번주차 OT

 

 

📝 Study  📝

 

⭐️ 로컬좌표계 = 부모에 대한 위치

                      스크립트에서 localPosition, localRotation,localScale

⭐️ 월드좌표계 = 전체 게임세계에서의 위치

                      스크립트에서 position,rotation,lossyScale

 

⭐️ Input.GetAxis : 기본입력시스템

      GetAxis : -1부터1사이의 값을 반환

      - Input.GetAxis("Horizontal") 괄호 내부에 정확한 스펠링작성이 필요!

 

⭐️ Time.deltaTime : 이전프레임부터 현재프레임까지의 경과시간

      ex) transform.Translate(Vetoer3.forward * speed * Time.deltaTime)

           = 프레임속도에 관계없이 Speed만큼 일정속도보장

 

⭐️ 입력처리와 실제 로직 실행 주체를 분리 (단일 책임 원칙_Single Responsibility Principle)

 

⭐️ New Input System

      Input Action : 입력행동정의

      Input Action Asset : 여러개의 입력행동을 그룹화

      Player Input Component : Unity 의 New Input System에 추가된 새로운 컴포넌트로,

                                               자동으로 입력행동을 처리하고 해당 게임 오브젝트에 메세지를보냄.

 

⭐️ Input Component 

      Send Messages : 같은 게임 오브젝트의 모든 컴포넌트에 뿌려지는 메세지를 날림.

      Broadcast Messages : 같은 게임 오브젝트와 그 자식 게임오브젝트의 모든 컴포넌트에 뿌려지는 메세지를 날림.
      Invoke Unity Event : OnClick 처럼 UnityEvent형태로 관리됨.

      Invoke C Sharp Events : PlayerInput, OnActionTriggered 에 호출하고 등록해서 어떤 이벤트인지 확인해서 쓸 수 있음.

 

⭐️Quaternion

    유니티 내장함수 Quaternion.Euler, Quaternion.LookRotation, Quaternion.Slerp, Quaternion.Identity

    Quaternion.Euler : 오일러각을 쿼터니언으로 변경할 수 있음.

    Quaternion.LookRotation : 머리를 회전하는것 처럼, 앞과 위를 특정한 방향으로 하는 회전 쿼터니언을 만듬.

    Quaternion.Slerp : 쿼터니언과 다른 쿼터니언 사이에 내분점을 알 수 있음.

Quaternion.Slerp(Quaternion a, Quaternion b, float t);
// a: 시작 쿼터니언
// b: 끝 쿼터니언
// t: 보간 계수로 0과 1 사이의 값을 가집니다.
// 0은 시작 쿼터니언과 동일한 회전
// 1은 끝 쿼터니언과 동일한 회전을 의미합니다.

 

 

 

💡 삼각함수의 기초 와 ArcTangent 💡

    

삼각함수는 각도를 통해 삼각형들의 각 변의 비율을 알아낼 수 있는 함수

sin = 높이/빗변, cos = 밑변/빗변, tan = 높이/밑변

12분 다시보기😥

아크탄젠트(ArcTangent)역삼각함수 비율 → 각도가로와 세로의 비에 따른 각도를 계산하는데 사용360도를 다 구분해낼 수 있음.밑변/높이 탄젠트의 기본개녕을 적용해 Y,X순으로 인수를 넣어줌.

라디안 = 180˚ = π

Mathf.Rad2Deg = 180˚ / 3.14 가 Default값 // Atan2 [- π , π ] 범위에서 나온다.

 

 

 

 

👀 사용예제

private void RotateArm(Vector2 direction)
    {
        float rotZ = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;

        characterRenderer.flipX = Mathf.Abs(rotZ) > 90f;// 절대값이 90도 보다 크면 Flip

        armPivot.rotation = Quaternion.Euler(0, 0, rotZ);
    }

 

 

 

 

🔥 10/8일 화요일 목표 🔥 

🔎  16강 까지 듣기📝

🔎  이전 학습 복습하기