Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

Luna

[TIL Day42] 유니티 3D 공부시작! 본문

🎮 Unity_7 TIL WIL

[TIL Day42] 유니티 3D 공부시작!

fociend 2025. 3. 4. 15:15

이번 주차는 이것이다. . . 과묵한 네이비색. .

 

오늘의 학습 키워드

- 3D 강의 최대한 많이 듣기

- 개인과제 어떤식으로 짤지 구상해보기


공부한 내용 본인의 언어로 정리하기

✨ Unity 3D 강의 듣기 전 핵심 개념 정리


1. 스카이박스 (Skybox) 

Unity에서 게임 세계의 배경을 담당하는 환경 매핑 기술입니다.

주로 하늘, 구름, 산 등의 자연적인 배경을 표현하는 데 사용됩니다.

🔹 스카이박스의 특징

  • 큐브 맵(Cube Map): 6개의 텍스처로 구성된 정육면체 형태의 배경
  • 구체형 스카이박스(Sphere Map): 하나의 텍스처가 구체형으로 매핑된 배경
  • Unity의 씬(Background)을 확장하는 데 활용됨
  • 미리 만들어진 스카이박스를 적용하거나 직접 제작 가능
  • 시간대 변화(예: 낮 ↔️ 밤) 및 특정 이벤트 시 동적 변경 가능
  • 성능 최적화 필요 (과도한 텍스처 사용 주의!)

🔗 Unity 공식 문서: 스카이박스


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는 새로 배우는 개념들이 있어서 대충 넘겨보지말고 실습 같이 하면서 짚고 넘어가는 공부 방법을 택하기로했다. 물론 빠르게 개인 프로젝트를 들어가서 프로젝트를 만드는 것도 좋지만, 개념 이해하고 기초적인 부분을 잘 봐놔야 나중에 덧 붙여도 이해도 빠를 것 같다는 생각이 들어서,,


내일 공부할 것

강의를 마저 들을 생각. 

노트에 개념 정리하기