본문 바로가기

전체 글111

Rigidbody 를 사용하면서, transform 코드가 제대로 동작을 안할 때 Rigidbody 를 추가하고 물체를 움직이다 보면, 내가 작성한 코드랑 별개로 움직이는 느낌을 받게 됩니다. 이것은 유니티가 렌더링용 Transform과 물리 엔진이 다루는 Transform 을 별도로 관리하기 때문입니다. 이번 글에서는 이 둘의 관계와 내부 동작 원리에 대해 설명하고, 직접 이동, 회전시키고 싶을 때 어떻게 처리해야 하는지를 예제와 함께 다뤄보겠습니다. 우리가 흔히 쓰고 있는 Transform (렌더링용)transform.Translate(Vector3.forward * Time.deltaTime);transform.Rotate(Vector3.up * 90f * Time.deltaTime); 이 코드는 일반적으로 잘 동작합니다. 하지만 Rigidbody가 붙어 있으면 다음과 같은 어색.. 2025. 7. 16.
Cinemachine 카메라를 붙였더니 카메라가 말을 안 들어요 Unity 에서 Cinemachin 카메라를 처음 접하신 분들이라면, Main Camera 에 Cinemachine Camera 를 연결하면, main 카메라의 position이나 rotation 값이 변경되지 않아 당황스러울 때가 있습니다. 이번 글에서는 Cinemachine 카메라의 동작 원리와 올바른 설정 순서에 대해 알아보겠습니다. Main 카메라에서 Cinemachine 카메라로 제어권이 넘어감먼저, Main 카메라에 Cinemachine 카메라를 연결하면, 제어권을 Cinemachine 카메라에 넘기기 때문에, 그 때부터는 카메라의 위치나 회전 등은 Cinemachine 카메라에서 조정해 주어야 합니다.Cinemachine 에는 Procedural Components 라는 시스템이 있어서, 카.. 2025. 7. 16.
foreach() 가 내부적으로 동작하는 방식 C#에서 foreach() 문은 아주 간편하게 컬렉션을 순회할 수 있도록 도와주는 문법입니다. 하지만 이 문법 뒤에는 실제로 어떤 일이 일어나는지, 내부적으로 어떤 코드가 실행되는지를 이해하면 C#의 컬렉션 처리 방식에 대해 훨씬 깊은 통찰을 얻을 수 있습니다. foreach 구문의 일반적인 형태string[] fruits = { "apple", "banana", "cherry" };foreach (string fruit in fruits){ Console.WriteLine(fruit);} 위 코드는 fruits 배열의 각 요소를 순회하며 출력합니다. 매우 간단하지만, 내부에서는 꽤 복잡한 일들이 벌어지고 있습니다. foreach의 내부 동작 (while문으로 변환) string[] fruits .. 2025. 7. 15.
물리 공간과 오브젝트 공간에서의 물체 이동 물체의 이동을 처리할 때, 힘 (Force) 은 물리 공간에서 발생하는 사건이기 때문에 월드 좌표계를 기준으로 계산되며, 이동이나 회전은 (transform) 은 물체 자신의 움직임 이므로, 로컬 좌표계를 기준으로 계산됩니다. 이러한 개념을 이해하면 코드를 작성할 때, 한결 자연스러워질 것입니다. AddForce 는 월드 공간 기준이다 AddForce()는 "물리 엔진이 계산하는 힘(force)" 을 오브젝트에 적용하는 함수입니다.그리고 이 힘은 항상 월드 좌표계 기준으로 작동합니다. rb.AddForce(Vector3.up * 10f); 이 코드는 "월드에서 위쪽 (0,1,0) 방향으로 힘을 준다" 는 뜻입니다.즉, 오브젝트가 아무리 회전해 있어도, 항상 똑바로 위로 날아갑니다. 로컬 방향으로 힘을 .. 2025. 7. 14.
Input Sytem : InputAction 사용법 정리 InputAction 의 세 가지 이벤트Unity의 새로운 Input System에서 InputAction은 아래 세 가지 주요 이벤트를 제공합니다 • started : 키를 누르기 시작한 순간 호출됨. 키가 눌렸다는 의지를 감지한 시점으로, 실제 입력값이 0일 수도 있음 • performed : 입력이 의미 있는 값으로 들어왔을 때 호출됨. 보통 키가 완전히 눌렸을 때, 혹은 스틱이 어느 정도 이상 움직였을 때 발생 • canceled : 입력이 취소되었을 때 호출됨 (예: 키를 뗀 순간, 스틱을 원점으로 되돌린 경우 등) 일반 키보드에서는 started 이후 거의 동시에 performed 로 이어지지만, 스틱처럼 아날로그 장치에서는 미묘한 차이가 발생합니다. 따라서 만약 키보드만 다룬다면.. 2025. 7. 14.
Player Input 컴포넌트를 꼭 써야할까? Unity의 Input System은 기존의 Input Manager를 대체하기 위해 도입된 Unity의 새로운 입력 시스템입니다. 그리고 대부분은 아마 이렇게 시작할 것입니다. Player Input 컴포넌트를 추가하고, Input Action Asset을 연결하는 방식왜냐하면 Unity의 공식 문서나 각종 튜토리얼 영상들이 “Player Input 컴포넌트” 를 기본 사용법처럼 소개하기 때문입니다. 하지만 실제로는… Player Input 컴포넌트를 붙이지 않아도 Input System을 사용할 수 있습니다. Player Input 컴포넌트는 필수가 아닙니다.먼저, Player Input 컴포넌트를 추가하는 과정을 간단히 살펴보겠습니다.• Add Component > Player Input 컴포.. 2025. 7. 13.