Luna
[TIL Day42] 유니티 3D 공부시작! 본문
오늘의 학습 키워드
- 3D 강의 최대한 많이 듣기
- 개인과제 어떤식으로 짤지 구상해보기
공부한 내용 본인의 언어로 정리하기
✨ Unity 3D 강의 듣기 전 핵심 개념 정리
1. 스카이박스 (Skybox)
Unity에서 게임 세계의 배경을 담당하는 환경 매핑 기술입니다.
주로 하늘, 구름, 산 등의 자연적인 배경을 표현하는 데 사용됩니다.
🔹 스카이박스의 특징
- 큐브 맵(Cube Map): 6개의 텍스처로 구성된 정육면체 형태의 배경
- 구체형 스카이박스(Sphere Map): 하나의 텍스처가 구체형으로 매핑된 배경
- Unity의 씬(Background)을 확장하는 데 활용됨
- 미리 만들어진 스카이박스를 적용하거나 직접 제작 가능
- 시간대 변화(예: 낮 ↔️ 밤) 및 특정 이벤트 시 동적 변경 가능
- 성능 최적화 필요 (과도한 텍스처 사용 주의!)
2. Rigidbody - ForceMode 💨
Rigidbody를 이용해 오브젝트에 힘을 적용할 때, ForceMode를 설정하여 다양한 물리 효과를 줄 수 있습니다.
🔹 ForceMode 종류
1️⃣ Force: 지속적인 힘을 가함 (프레임마다 영향 받음)
Rigidbody.AddForce(Vector3 force, ForceMode.Force);
2️⃣ Acceleration: 힘이 아닌 가속도를 적용 (질량에 영향 받지 않음)
Rigidbody.AddForce(Vector3 force, ForceMode.Acceleration);
3️⃣ Impulse: 순간적인 힘을 적용 (한 번의 프레임에서만 적용)
Rigidbody.AddForce(Vector3 force, ForceMode.Impulse);
4️⃣ VelocityChange: 현재 속도를 변경하여 이동 (질량 영향 없음)
Rigidbody.AddForce(Vector3 force, ForceMode.VelocityChange);
✔️ 게임 오브젝트의 움직임을 조절할 때 ForceMode를 적절히 활용하자!
3. Raycast
Raycast는 눈에 보이지 않는 광선을 발사하여 특정 오브젝트와 충돌했는지 판단하는 기능입니다.
🔹 Ray 생성 방식
1️⃣ 오브젝트에서 Ray 생성
Ray ray = new Ray(transform.position, transform.forward);
2️⃣ 카메라 중심에서 Ray 생성
Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));
3️⃣ 마우스 클릭 위치에서 Ray 생성
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
🔹 RaycastHit 활용
RaycastHit는 Ray가 충돌한 오브젝트의 정보를 담고 있습니다.
- RaycastHit.point → 충돌한 위치
- RaycastHit.distance → Ray의 원점에서 충돌 지점까지의 거리
- RaycastHit.transform → 충돌한 오브젝트의 Transform 정보
4. Input System - SendMessage vs InvokeEvent 🎮
Unity의 입력 시스템에서 특정 액션을 호출하는 방식은 크게 두 가지입니다.
🔹 1. SendMessage 방식
- "On + Action name" 형식의 함수를 찾아서 자동 호출
- 예: OnMovement() 함수가 존재하면 자동 실행
🔹 2. Invoke Event 방식
- Inspector에서 직접 함수를 설정 후 키 입력이 들어오면 실행
- 유연한 이벤트 시스템 구성 가능
🔹 3. Invoke C# Events
- C# 스크립트 내부에서 직접 이벤트를 호출하는 방식
- 키 입력 전/후, 입력 해제 등 세부적인 제어 가능
✔️ SendMessage는 직관적이지만, InvokeEvent가 더 최적화된 방식이므로 추천!
에러사항
오늘의 회고
- 3D는 2D보다 신경쓸 것도 많고 뭐가 더 많아서 잘 해낼 수 있을지 의문이 든다... 필수 구현을 꼭 먼저 최대한 끝내놓고 도전 기능을 추가해보던지 해야겠다.
- 3D는 새로 배우는 개념들이 있어서 대충 넘겨보지말고 실습 같이 하면서 짚고 넘어가는 공부 방법을 택하기로했다. 물론 빠르게 개인 프로젝트를 들어가서 프로젝트를 만드는 것도 좋지만, 개념 이해하고 기초적인 부분을 잘 봐놔야 나중에 덧 붙여도 이해도 빠를 것 같다는 생각이 들어서,,
내일 공부할 것
강의를 마저 들을 생각.
노트에 개념 정리하기
'🎮 Unity_7 TIL WIL' 카테고리의 다른 글
[TIL Day44] Unity 3D 강의 ~ing (2) (0) | 2025.03.06 |
---|---|
[TIL Day43] Unity 3D 강의 ~ing (0) | 2025.03.05 |
[TIL Day38] 팀 프로젝트 마무리 (0) | 2025.02.28 |
[TIL Day34] 팀 프로젝트 - 플레이어 구현 (0) | 2025.02.24 |
[TIL Day31] Unity 팀 프로젝트 시작 (0) | 2025.02.21 |