벡터 정규화 ( Normalization )
·
🧊Unity Basic/벡터 ( Vector )
벡터 정규화 ( Vector Normalization )어떤 벡터의 방향만 유지하고 길이는 1로 맞추는 것을 말한다.방향 벡터 ( Direction Vector ) 를 만드는 과정이다. 벡터 정규화를 사용하는 이유Unity 같은 게임 엔진에서는 움직임 , 시선 , 충돌 방향 , 빛의 방향 등을 계산할 때 벡터의 방향만 사용하고 싶을 때가 많다.그런데 일반 벡터에는 거리 ( 크기 ) 정보도 함께 들어있어 정규화해서 거리 영향을 없애고 , 순수한 방향 정보만 추출한다.정규화를 하지 않으면 target 과 가까울수록 느려지고 , 멀수록 빨라지는 문제가 쉽게 발생한다. ( 방향 벡터의 길이가 거리이기 때문이다 )정규화를 하면 크기 ( 거리 ) 에 상관없이 항상 길이 1짜리 벡터가 된다.그래서 속도 같은 다른 ..
트랜스폼 ( Transform )
·
🧊Unity Basic/트랜스폼
트랜스폼 ( Transform )모든 오브젝트는 반드시 Transform 컴포넌트를 가지고 있고 , 위치 이동은 이 컴포넌트에서 지원하는 기능을 통해 구현된다.Transform Component 는 GameObject가 좌표계 상에 위치하기 위해서 꼭 필요한 컴포넌트이다.그렇기 때문에 모든 GameObject가 기본적으로 가지고 있다.Transform 을 적절히 사용하기 위해선 게임 수학을 알아야 한다. 캐릭터의 이동과 점프 등 게임 수학이 들어있지 않는 게임은 없다.그 중 게임 수학의 기본인 벡터와 행렬이 Transform 과 아주 밀접하기 때문에 병행하며 공부해야한다.유니티에서 Transform 은 모든 게임 오브젝트가 반드시 가지고 있는 기본 컴포넌트그 오브젝트의 위치 , 회전 , 크기의 정보를 담..
World Space & Local Space
·
🧊Unity Basic/트랜스폼
월드 ( World ) 와 로컬 ( Local )게임 내에서 모든 오브젝트는 Transform 컴포넌트를 가진다.형체가 없는 오브젝트라고 할 지라도 , 위치를 지나고 있다는 의미이다.게임 환경 내에 절대 좌표와 상속 관계에서의 상대 좌표를 사용할 수 있다.이것을 월드 스페이스 ( World Space ) 와 로컬 스페이스 ( Local Space ) 라고 부른다.월드 스페이스 ( World Space ) 와 로컬 스페이스 ( Local Space )좌표계 ( Coordinate Space ) 개념이다즉, 기준점이 어디냐의 차이로 이해하면 된다 1. 월드 스페이스 ( World Space )월드 스페이스는 게임 환경 내의 고정된 글로벌 좌표계를 의미한다. 절대 좌표라고 표현할 수 있다.이 좌표계는 게임의..
짐벌락 ( Gimbal Lock )
·
🧊Unity Basic/트랜스폼
짐벌락 ( Gimbal Lock )짐벌락은 3D 회전 ( 특히 오일러 각 Euler angles ) 을 사용할 때 발생하는 회전 축 손신 문제이다.3D 공간에서 회전은 보통 3개의 축 ( X , Y , Z ) 을 중심으로 순서대로 회전시켜 표현한다.Unity 에서는 transform.rotation = Quaternion ( x , y , z ) 형태로 오일러 각을 사용한다. 하지만 이 방식에는 문제가 있다.어떤 특정한 회전 상태에 도달하면 , 두 개의 회전 축이 서로 겹쳐버리는 상황이 생긴다.그 순간 한 축의 자유도가 사라져서 , 원하는 방향으로 회전이 불가능해진다.이게 바로 짐벌락 ( Gimbal Lock ) 현상이다. ▼카메라 짐벌을 예시로 든다.카메라 짐벌에는 Pitch ( 상하 ) , Yaw (..
유니티 작업중 발생한 문제와 해결
·
📖TIL/🤔발생한 문제와 해결
1. Tank 에서 Bullet 발사시 포구에서 나오지 않는 문제▲하찮다..! 해결 :SpawnPoint 를 따로 만들어 포구 앞에 배치 2. Bullet 발사시 반동 / 포물선이거나 바닥에 내리꽂는 문제 해결 : 포구가 포신에 너무 가깝게 배치되어 Instantiate 할때 Bullet 이 포신을 때리면서 나아감그 영향으로 Tank 가 움찔거리게 되었고 , 포신에 맞고 날아간 Bullet 은 땅에 쳐박히게 되었다.SpawnPoint 를 조금 더 위쪽에 배치하여 해결 3. Bullet 이 일직선으로 나아가지 않고 자유분방하게 날아가는 현상▲의도한건 아니지만 뭔가 멋있기는 하다. 그런데 왜 이런 현상이 ? 해결 :Bullet 이 중력 영향을 받는 것 같아 처음에는 Is Kinematic 을 체크..
251016
·
📖TIL
물리 / 충돌Rigidbody / ColliderMass, Drag, Angular Drag, Use Gravity, Is Kinmatic , Interpolate , Collision Detection , Constraints Collider주의할 점
251015
·
📖TIL
트랜스폼모든 게임 오브젝트가 가지고 있는 기본 컴포넌트 Vector크기와 방향을 모두 가지는 물리적 / 수학적 개념 Vector3 ( x , y , z ) 쿼터니언 Quaternion 인스펙터 창에서 변경하는건 오일러인데 내부에서는 쿼터니언으로 변환 Position// Position을 직접적으로 변경하는 방법Transform.position = new Vector3(x, y, z);// Translate 함수를 이용한 축(x, y, z) 기준의 위치이동 방법Transform.Translate(Direction * Speed);// 선형 보간을 이용해 거리에 따라 빠르게 이동하며 천천히 감속하는 방법Transform.position = Vector3.Lerp(StartPosition, EndPositio..
라이프사이클 한줄 요약
·
🧊Unity Basic/라이프사이클
라이프사이클 ( Life Cycle )게임 오브젝트와 스크립트가 실행되는 순서와 흐름Awake : 오브젝트가 생성될 때 자기 자신 준비 ( 컴포넌트 캐싱 , 싱글톤 설정 )OnEnable : 오브젝트가 활성화될 때 이벤트 구독 / 초기 상태 세팅Start : 첫 프레임 전에 한 번 , 다른 오브젝트까지 모두 준비된 뒤 초기화Update : 매 프레임마다 입력 , 로직 , 타이머 등 일반 실행FixedUpdate : 고정 시간마다 물리 연산 / 이동 처리LateUpdate : 모든 Update 이후 카메라 추적 , 위치 보정 등 후처리OnDisable : 오브젝트가 비활성화될 때 이벤트 해제 , 코루틴 정리OnDestroy : 오브젝트가 파괴될 때 최종 정리 및 리소스 해제
메모리 사용량 체크
·
🧊Unity Basic/오브젝트풀링
메모리 사용량 체크유니티에서 메모리 사용량 ( 메모리 Alloc , GC 발생 , 텍스처 오브젝트 점유 등 ) 을 확인하려면Profiler 창을 사용해야 한다. Profiler 창을 여는 방법상단 메뉴에서 Window 클릭 → Analysis 클릭 → Profiler 클릭( 단축키 Ctrl + 7 ) Profiler 창 구성Profiler 창은 게임 실행 중 ( Play 모드 ) 실시간으로 CPU , GPU , Memory , GC 등의 정보를 보여준다.탭 이름기능CPU Usage어떤 스크립트나 함수가 CPU 를 얼마나 쓰는지 표시Memory전체 메모리 사용량 , 텍스처 / 오브젝터별 점유량 , GC Alloc 등RenderingDraw Call , Batching , GPU 부하Audio사운드 ..