2024-05-09 TIL

조창일·2024년 5월 9일

내배캠

목록 보기
18/51
post-thumbnail

쿼터니언 (Quqternion)

  • 수학적으로는 4차원 복소수를 이용한 회전 표현 방법이다. (x, t, z, w) 형태로 표현합니다.
    ※ 그렇다고 직접 x, y, z, w 값을 조정할 생각은 하지 말 것!! ※
  • 직접 값을 변경하거나 계산하는 대신, Unity의 내장 함수를 사용하는 것이 좋다.
    (e.g. Quaternion.Euler, Quaternion.LookRotation, Quaternion.Slerp 등)

삼각함수

삼각함수는 각도를 통해 삼각형들의 각 변의 비율을 알아낼 수 있는 함수
(삼각함수는 비율을 알기 위해 [각도 -> 비율]을 구하는 함수, 탄젠트(tan)는 그 중에서도 밑변과 높이의 비율)

아크탄젠트 (ArcTangent)

  • 삼각함수에서 아크(arc)-가 붙으면 삼각함수의 역함수인 역삼각함수를 말한다. [각도 -> 비율]이 [비율 -> 각도]가 되는 것이다.
    즉, 아크탄젠트 함수는 삼각함수인 탄젠트의 역함수다. 가로와 세로의 비에 따른 각도를 계산하는 데 사용된다.
  • 2D에서 점 또는 벡터에 대한 각도를 찾는 데 아크탄젠트 함수가 종종 사용된다.
    • 여기다가 개발자들이 편하게 쓸려고 한 가지를 더 추가한다.
      비율말고도 x, y 자체가 양수인지 음수인지를 360도를 다 구분해낼 수 있게 했다. (원래는 x, y와 같은 부호이지만 둘다 양수, 둘다 음수이거나 x, y가 다른 부호이지만 x가 음수이거나 y가 음수인 상황 때문에 아크탄젠트로는 180도 각도 범위에서만 알아낼 수 있다.)
      이러한 구현을 개발자들은 Atan2라고 이름 붙이고, 밑변 / 높이였던 탄젠트의 기본 개념을 적용해 y, x 순으로 인수를 넣는다.
  • 이를 통해 점 (x, y)에서, Math.Atan2(y, x) 함수를 사용하여 벡터가 x축과 이루는 각도를 [-π, π]까지의 값으로 얻을 수 있다.(π로 표현된 각도를 180도가 되도록 표현하는 방법을 호도법, 그리고 그 단위를 라디안이라고 부른다.)
  • Atan2를 활용해서 객체가 특정 방향을 향하도록 만들거나 두 점 사이의 각도를 계산할 때 유용하다.

SerializeField

직렬화는 개체의 상태를 나중에 저장, 전송 또는 재구성할 수 있는 형식으로 변환하는 프로세스다.
유니티에서는 스크립트의 Public 필드만 직렬화할 수 있다. 하지만 [SerializeField]를 사용하면 Private 필드도 직렬화할 수 있다.

열거형 (Enum)

열거형은 상수형 값에 의미를 부여하기 위해 사용한다.

비트 연산자, 레이어 마스크

비트 연산자는 레이어의 비트 필드를 조작하기 위해 사용된다. 주로 AND (&), OR (|), XOR (^), NOT (~)이 포함되어있다.

  • AND (&) : 두 비트 필드 모두에서 해당 비트가 설정되어 있을 때만 결과 비트를 설정한다. 이를 통해 특정 레이어의 존재 여부를 확인할 수 있다.
  • OR (|) : 두 비트 필드 중 하나라도 해당 비트가 설정되어 있으면 결과 비트를 설정한다. 이는 새로운 레이어를 추가할 때 유용하다.
  • XOR (^) : 두 비트 필드에서 해당 비트가 서로 다를 때만 결과 비트를 설정한다. 이는 두 레이어의 차이를 찾을 때 사용된다.
  • NOT (~) : 모든 비트를 반전시킨다. 이는 특정 레이어를 제외시킬 때 유용하다.

비트 시프트 연산 : 1 << n 은 1을 n번째 비트 위치로 시프트한다.

오브젝트 풀링

  • 오브젝트 풀링은 객체를 미리 생성해 두고 필요할 때 가져다 사용하고, 사용이 끝나면 다시 풀에 반납하는 방식을 말한다.
  • 오브젝트 풀링은 생성(Instantiate)과 소멸(Destroy)이라는 비용이 큰 작업을 최소화 함으로써 성능을 향상시키는 데 중요한 역할을 합니다.

StringToHash

  • 문자열 비교는 상대적으로 연산 비용이 큰 작업이다. "StringToHash"는 문자열을 고유한 정수 값인 해시 값으로 변환하여 이 연산 비용을 크게 줄일 수 있다.
  • 해시 값은 고유하기 때문에 다른 문자열이 동일한 해시 값을 갖는 확률이 매우 낮다.
    이를 활용해 문자열을 해시로 변환하면 효율적으로 문자열을 비교할 수 있다.
  • 또한 "StringToHash" 함수는 문자열을 해시 값으로 변환할 때 일방향으로 작동하기 때문에, 해시 값을 다시 원래의 문자열로 변환하는 것은 불가능하다.
profile
안녕하세요.

0개의 댓글