전체 글 (144) 썸네일형 리스트형 언리얼C++ 9일차(게임 흐름 로직(게임 루프), Game Instance) 저번에 만든 GameStateBase를 적용시킨 후 실행을 하니 로그로 경고메세지가 떴는데 이유는 GameMode는 Base가 아니고 GameMode인데 GameState는 Base로 만들어서 적용을 하니 경고 메세지가 떴다.그래서 GameState를 상속받는 클래스를 새로 만들어서 GameStateBase에 있는 코드를 모두 옮기고 Base는 삭제했다. 스폰 함수의 반환형이 void였는데 스폰된 아이템의 정보(코인아이템인지, 다른아이템인지)를 GameState에서 카운팅을 하려면 스폰 함수가 스폰된 AActor*를 반환하도록 수정한다.// SpawnVolume.cppAActor* ASpawnVolume::SpawnRandomItem(){ if (FItemSpawnRow* SelectedRow = Get.. 언리얼C++ 8일차(TakeDamage와 ApplyDamage, GameState) 지금까지 아이템들을 구현했고 이제 아이템이 어떤 기능을 하는지 실제로 구현을 해야한다.캐릭터캐릭터에 체력 관련 변수와 함수를 추가하고 데미지를 받는 함수 TakeDamage를 추가한다.// JinCharacter.hpublic: UFUNCTION(BlueprintPure, Category = "Health") float GetHealth() const; // 현재 체력을 가져오는 함수 UFUNCTION(BlueprintCallable, Category = "Health") void AddHealth(float Amount); // 체력 회복 함수 protected: UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Health") float MaxH.. 언리얼C++ 8일차(스폰, 데이터 테이블, 확률) 스폰 만든 아이템들을 레벨 상에서 자연스럽게 랜덤 배치하기콜리전 컴포넌트로 스폰 영역 지정하기콜리전 컴포넌트 내부의 임의 좌표를 뽑아서 아이템을 스폰한다.// SpawnVolume.h UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Spawning") USceneComponent* Scene; UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Spawning") UBoxComponent* SpawningBox; // 스폰 영역을 담당할 박스 컴포넌트 // 스폰 볼륨 내부에서 무작위 좌표를 얻어오는 함수 FVector GetRandomPointInVolume() const; //.. 언리얼C++ 8일차(Collision, 이벤트 바인딩, 타이머 핸들) 충돌(Collision)아이템 액터 주변에 Collision 컴포넌트를 붙여서 Overlap 또는 Hit이벤트를 활용해서 다양한 아이템 로직을 실행할 수 있다.Overlap 이벤트 : 물리적으로 부딪히는 것 없이 액터들이 서로 겹치기 시작 했을 때 이벤트 발생Hit 이벤트 : 물리적으로 충돌이 일어날 때 이벤트 발생기본 아이템 클래스(BaseItem)에 충돌 컴포넌트와 메시 컴포넌트 추가하기BaseItem 클래스는 모든 아이템(코인, 포션, 무기 등)에 공통으로 필요한 기능을 담는 부모 클래스이므로 여기에 충돌 컴포넌트와 메시 컴포넌트를 추가하면 모든 아이템에 추가가 된다.// BaseItem.hclass USphereComponent; // 전방 선언 // 루트 컴포넌트 (씬) UPR.. 언리얼C++ 7일차(인터페이스) 인터페이스인터페이스 (Interface)란 클래스 (또는 오브젝트)가 반드시 구현해야 할 함수 목록만을 미리 정의해 두고, 실제 함수의 동작(구현 내용)은 해당 클래스를 상속받거나 구현하는 쪽에서 자유롭게 작성할 수 있도록 하는 것이다.C++에서는 UInterface를 상속받아 IItemInterface 같은 인터페이스를 만들 수 있으며, 언리얼 블루프린트에서도 “블루프린트 인터페이스”를 통해 비슷한 개념을 구현할 수 있습니다.인터페이스의 장점결합도 (Coupling) 감소클래스 간 구체적인 구현 내용을 공유하지 않고, 필요한 함수 목록만 약속하므로 클래스 간 의존도가 낮아집니다.즉, 다른 클래스 내부가 어떻게 돌아가는지 몰라도, “이 함수를 이렇게 호출하면 된다” 정도만 알면 됩니다.확장성 (Exten.. 7번 과제(Pawn 클래스로 3D 캐릭터 만들기) 도전 과제 도전 과제 (선택 요구 사항)도전 과제 1번 - 6자유도 (6 DOF) 드론/비행체 구현 (난이도 상)6축 이동 및 회전 액션 구현이동전/후 (W/S) - 로컬 X축 이동좌/우 (A/D) - 로컬 Y축 이동상/하 (Space/Shift) - 로컬 Z축 이동회전Yaw - 좌우 회전, 마우스 X축 이동Pitch - 상하 회전, 마우스 Y축 이동Roll - 기울기 회전, 마우스 휠 또는 별도 키Orientation 기반 이동 구현현재 Pawn의 회전 상태에 따라 이동 방향이 결정되는 비행체 움직임을 구현합니다.단순 월드 좌표계 이동이 아닌, Pawn의 로컬 좌표계 기준 이동을 구현합니다.도전 과제 2번 - 중력 및 낙하 구현 (난이도 최상)인공 중력 구현Tick 함수를 통해 매 프레임 중력 가속도를 직접 계산.. 7번 과제(Pawn 클래스로 3D 캐릭터 만들기) 필수 과제 과제 소개Pawn 클래스 구조 이해언리얼 엔진에서 Pawn은 PlayerController가 조종할 수 있는 최소 단위입니다.CharacterMovementComponent 없이 직접 이동 로직을 구현해봅시다.Enhanced Input & 3인칭 카메라Enhanced Input 액션을 생성하여 키보드와 마우스 입력을 처리합니다.SpringArmComponent 및 CameraComponent를 사용해 3인칭 시점을 구현하며, 마우스 움직임으로 카메라를 회전시킵니다.직접 이동 로직 구현AddActorLocalOffset, AddActorLocalRotation 등을 활용하여 WASD와 마우스 입력에 따라 Pawn을 움직이도록 만듭니다. 필수 과제 (기본 요구 사항)필수 과제 1번 - C++ Pawn 클래스.. 언리얼C++ 6일차(애니메이션 블루프린트, 스테이트 머신, Control Rig) 애니메이션 블루프린트 언리얼 엔진에서 캐릭터의 골격(스켈레톤) 기반 애니메이션을 시각적으로 설계하는 데 특화된 전용 Blueprint다. 보통은 스켈레탈 메시, 애니메이션 시퀀스, State Machine 등을 연결하는 “중간 다리” 역할을 한다. 애니메이션 블루프린트에는 Anim 그래프와 Event 그래프가 있다. Anim Graph (애니메이션 그래프) 입력 노드 → 블렌딩 (Blend) → 출력 노드 (Output Pose) 순으로, 최종적으로 캐릭터가 어떤 포즈와 애니메이션을 취할지 결정합니다.예: 캐릭터가 걷기 (Walk)에서 달리기 (Run)로 전환할 때, 얼마나 부드럽게 (Blend Time) 섞어줄지, 또 속도에 따라 Walk 애니메이션과 Run 애니메이션의 비율을 어떻게 조절할지를 정의합.. 이전 1 2 3 4 5 6 7 8 ··· 18 다음