unity learn 15

6단원 - 조사 및 문제 해결 : WheelCollider

WheelColliderUnity의 차량 물리 시스템에서 사용되는 전문적인 물리 컴포넌트로, 바퀴의 물리적 행동을 시뮬레이션합니다. 실제로 바퀴 모델처럼 보이지는 않지만, 물리 엔진에서 바퀴의 회전, 접지력, 서스펜션 등을 계산합니다. 주요 특징바퀴 물리 시뮬레이션: 차량의 바퀴와 지면 사이의 마찰, 회전 및 서스펜션을 처리합니다.Raycast 기반: 바퀴는 실제 메시 충돌이 아니라 Raycast를 사용하여 지면과의 상호 작용을 계산합니다.서스펜션 모델링: 바퀴의 수직 움직임을 시뮬레이션하여 충격 흡수 효과를 제공합니다.WheelCollider 주요 속성radius바퀴의 반지름.suspensionDistance서스펜션의 최대 이동 거리(바퀴의 위아래 이동 범위).spring서스펜션의 강성과 감쇠를 설정하..

6단원 - 조사 및 문제 해결 : centerOfMess

centerOfMess Rigidbody 컴포넌트와 관련된 속성입니다. Rigidbody의 질량 중심을 설정하거나 가져오는 속성입니다. Vector3 타입으로 반환됩니다.용도 객체의 회전이나 움직임을 더 현실감 있게 만들기 위해 사용됩니다. 예를 들어, 질량 중심을 변경하면 차량의 핸들링이나 물리 기반 캐릭터의 움직임이 달라질 수 있습니다.  사용 예시주의사항질량 중심을 너무 극단적으로 변경하면 예상치 못한 물리적 결과가 발생할 수 있습니다.Rigidbody의 질량 중심을 변경하면 객체의 회전 축이나 균형이 달라져서 움직임이 크게 변할 수 있습니다.

6단원 - 프로젝트 최적화 : 오브젝트 풀링

오브젝트 풀링반복적으로 생성하고 삭제해야 하는 객체(예: 적, 총알, 파티클 등)를 미리 일정량 생성해두고 재사용(Recycling)하는 방식입니다.객체를 동적으로 생성하거나 삭제하는 작업은 **성능 비용(메모리 할당 및 가비지 수집)**이 크기 때문에, 이를 줄이고 성능을 향상시키기 위해 사용됩니다.오브젝트 풀링의 주요 원리초기화 단계:게임 시작 시 일정 수의 객체를 미리 생성하여 풀에 저장합니다.사용 단계:필요할 때 풀에서 사용하지 않는 객체를 꺼내와 활성화하여 사용합니다.반환 단계:사용이 끝난 객체는 삭제하지 않고 풀로 반환하여 다시 사용할 수 있도록 비활성화 상태로 보관합니다. 오브젝트 풀링의 장점성능 개선:매번 객체를 생성/삭제하지 않아 메모리 할당과 해제 비용을 줄입니다.가비지 컬렉션(GC) ..

6단원 - 프로젝트 최적화 : LateUpdate()

LateUpdate()Unity에서 제공하는 MonoBehaviour의 메서드 중 하나로, Update() 메서드가 호출된 후, 매 프레임마다 호출되는 함수입니다. 주로 카메라 추적, 애니메이션 후처리 및 다른 컴포넌트와의 상호작용 후에 동작해야 하는 로직을 처리할 때 사용됩니다.LateUpdate의 특징LateUpdate()는 카메라 위치를 계산할 때 특히 유용하며 플레이어를 따라가는 카메라에는 보통 LateUpdate()를 쓰는 것이 좋습니다. 이 함수를 쓰면 카메라가 플레이어의 움직임에 대한 모든 계산이 끝났음을 인식하고 게임이 업데이트 될 때 어디로 이동해야 하는지 파악하게 됩니다.Update() 호출 후 실행:LateUpdate()는 매 프레임의 Update() 호출이 끝난 후에 실행됩니다.Up..

6단원 - 프로젝트 최적화 : FixedUpdate()

FixedUpdate() 함수Unity에서 제공하는 MonoBehaviour의 메서드 중 하나로, 주로 물리 엔진(Physics)과 관련된 작업을 처리할 때 사용됩니다. Unity의 프레임 업데이트 주기와는 독립적으로 고정된 시간 간격으로 호출되므로, 물리적 연산이 일관되게 동작하도록 보장합니다. FixedUpdate의 특징움직임이나 물리를 구현할 때 유용합니다. FixedUpdate()는 Update()가 호출되기 전에 호출되며 게임 플레이 시 발생하는 물리를 계산하려고 할 때 작동합니다.고정된 호출 주기:FixedUpdate는 Unity의 물리 업데이트 주기에 따라 호출됩니다.기본 호출 간격은 Unity 설정에서 Time.fixedDeltaTime(기본값 0.02초)으로 정의됩니다.즉, 초당 50회(..

6단원 - 프로젝트 최적화 : 접근 제한자

접근 제한자 클래스, 필드, 메서드, 속성 등 멤버들의 접근 범위를 제어하는 데 사용됩니다. 이를 통해 코드의 캡슐화를 구현하고, 외부에서의 불필요한 접근을 방지하며, 코드의 안정성과 보안성을 높일 수 있습니다. 값 변경 제약 변수, 필드, 속성 등에 대해 값이 변경될 수 있는 범위와 조건을 제한하는 데 사용됩니다. 이를 통해 데이터의 일관성을 유지하고, 불필요하거나 잘못된 변경을 방지할 수 있습니다. Unity에서도 이러한 제약은 코드 안정성을 높이는 데 중요하게 사용됩니다. 접근 제한자public모두 접근 가능: Unity 인스펙터와 외부 클래스에서 접근 가능.private현재 클래스에서만 접근 가능: 기본 접근 수준이며, 외부 접근 불가.protected현재 클래스와 파생 클래스에서만 접근 가능...

6단원 - 프로젝트 최적화 : 직렬화

어트리뷰트클래스, 메서드, 필드, 속성, 매개변수 등에 추가 정보를 제공하기 위해 사용하는 **메타데이터(metadata)**입니다. 어트리뷰트는 코드의 동작을 변경하거나 특정 기능을 활성화하는 데 도움을 줍니다.어트리뷰트의 기본 개념정의: 어트리뷰트는 [ ] 안에 작성되며 클래스나 멤버 위에 적용됩니다.용도:코드 실행 중에 특정 동작을 수행하거나컴파일러나 런타임 환경에 정보를 전달[SerializeField]Unity에서 사용되는 **C# 어트리뷰트(attribute)**로, 비공개(Private) 필드를 인스펙터(Inspector) 창에 노출시키는 데 사용됩니다.기본 개념Unity에서 필드를 인스펙터 창에 노출시키려면 보통 public으로 선언해야 하지만, 모든 필드를 public으로 만드는 것은 캡..

5단원 - 사용자 인터페이스 : AddListner()

AddListener() UnityEvent에 이벤트 핸들러(또는 콜백 함수)를 등록할 때 사용하는 메서드입니다. 주로 UI 버튼 같은 상호작용 요소에 특정 동작을 연결할 때 사용됩니다. onClick 같은 Unity의 이벤트(UnityEvent)에서 사용할 수 있는 함수입니다.  리스너**이벤트(Event)**가 발생했을 때 특정 동작을 수행하도록 설계된 함수 또는 메서드를 의미합니다. 쉽게 말해, "어떤 일이 생기면 내가 대신 반응할게!"라고 준비된 코드입니다.리스너의 기본 개념이벤트(Event): 특정 상황이나 조건이 발생했음을 알리는 신호입니다. (예: 버튼 클릭, 키보드 입력, 충돌 등)리스너(Listener): 이벤트가 발생했을 때 호출되는 함수 또는 메서드입니다.AddListener() 사용..

5단원 - 사용자 인터페이스 : 프로젝트 최종 완성

Unity Learn, 주니어 프로그래머의 5단원 - 주니어 프로그래머 프로젝트를 완성했습니다. 기본 조작마우스 클릭으로 물체를 파괴할 수 있습니다.기본 규칙폭탄을 파괴하면 점수가 10점 내려갑니다.폭탄을 제외한 다른 객체를 파괴하면 점수가 5점 오릅니다폭탄을 제외한 다른 객체를 하나라도 놓치면 실패입니다.난이도에 따라 객체의 생성 빈도가 달라집니다.게임의 완성도를 위해서 Unity Learn에서 안내한 규칙에서 좀 더 보완했습니다. 보완된 점폭탄이 더 이상 자신을 포함한 어떠한 객체와도 충돌을 일으키지 않습니다. (해당 프로젝트는 Unity Technologies에서 제공하는 공식 학습 플랫폼인 'Unity Learn'에서 따라서 만들었으며, 수익을 창출하지 않고 단순히 공유의 목적을 가지고 있습니다...

5단원 - 사용자 인터페이스 : Button

Button UI버튼으로 동작하도록 설정된 UI 요소 Button 게임 오브젝트하이어라키 창에서 **Create > UI > Button - TextMeshPro**를 통해 만들어지는 게임 오브젝트입니다. UI에서 클릭 가능한 버튼 역할을 하며 여러 컴포넌트와 자식 오브젝트를 포함하여 버튼으로서의 기능을 수행하도록 설계되어 있습니다. Button 게임 오브젝트의 기본적인 역할클릭 이벤트 처리: 사용자가 버튼을 클릭했을 때 특정 동작을 수행할 수 있도록 이벤트를 처리합니다.UI 인터랙션: 게임 내 메뉴, 옵션, 대화 상자 등 UI 인터페이스에서 주로 사용됩니다.시각적 상태 변경: 클릭, 호버, 비활성화 등 상태에 따라 버튼의 외형을 자동으로 변경할 수 있습니다. Button 게임 오브젝트의 구성Button..