게임제작 17

UE4 생존게임 제작 - 7 (몬스터 공격 충돌 시스템 및 플레이어 상태 UI 제작)

1. 몬스터 공격 충돌 시스템 제작 UI를 제작하기 전에 플레이어의 피가 감소하는 모습을 보기 위해서 몬스터 공격 충돌 시스템을 먼저 제작하도록 하겠습니다. 몬스터 공격 충돌 시스템은 플레이어 충돌 시스템과 거의 유사합니다. protected: UPROPERTY(Category = Collision, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) UBoxComponent* AttackBox; 먼저 콜리전 세팅에서 AnimalAttack 채널과 프로파일을 만들었습니다. 그리고 나서 해당 프로파일을 적용할 박스 컴포넌트를 생성하였습니다. AttackBox->SetupAttachment(GetMesh(), TEXT("LION..

UE4 생존게임 제작 - 6 (PreyAnimal AI Controller 및 Data Table 제작)

1. 블랙보드와 비헤이비어 트리 생성 PredatorAnimal AI Controller를 제작할 때와 마찬가지로 블랙보드와 비헤이비어 트리를 생성하였습니다. 먼저 블랙보드를 생성하여 타겟을 찾을 수 있도록 오브젝트 타입으로 타겟 변수를 생성하였고 비헤이비어 트리에 생성한 블랙보드를 적용하였습니다. APreyAIController::APreyAIController() { static ConstructorHelpers::FObjectFinder BTAsset(TEXT("BehaviorTree'/Game/Animal/BTPrey.BTPrey'")); if (BTAsset.Succeeded()) m_pBTAsset = BTAsset.Object; static ConstructorHelpers::FObjectF..

UE4 생존게임 제작 - 5 (PredatorAnimal AI Controller 제작)

1. 블랙보드와 비헤이비어 트리 생성 먼저 블랙보드를 생성하여 타겟을 찾을 수 있도록 오브젝트 타입으로 타겟 변수를 생성하였습니다. 그리고 비헤이비어 트리에 블랙보드 에셋에 생성한 블랙보드를 적용하였습니다. APredatorAIController::APredatorAIController() { static ConstructorHelpers::FObjectFinder BTAsset(TEXT("BehaviorTree'/Game/Animal/BTPredator.BTPredator'")); if (BTAsset.Succeeded()) m_pBTAsset = BTAsset.Object; static ConstructorHelpers::FObjectFinder BBAsset(TEXT("BlackboardData'/..

UE4 생존게임 제작 - 4 (랜드스케이프 제작)

1. 매터리얼 제작 랜드스케이프에서 사용할 매터리얼을 생성합니다. Layer Blend를 이용해 다양한 매터리얼을 묶어서 사용할 수 있도록 하였습니다. 그리고 나서 해당 Layer Blend를 랜드스케이프 매터리얼의 베이스 컬러로 주었습니다. 같은 방식으로 Normal 정보도 Layer Blend로 묶어서 랜드스케이프 매터리얼의 Normal에 넣어주었습니다. Layer Blend로 엮은 매터리얼들과 Normal에 LandscapeCoords를 사용해서 좌표를 넣어주었습니다. 제작한 매터리얼의 전체 형태입니다. 중간에 이 부분은 메탈, 스페큘러, 러프니스에 대한 값들을 넣어준 것입니다. 메탈은 디폴트 값으로 0을, 스페큘러 또한 0을 주었고 러프니스 값만 1을 주었습니다. 좀 더 표면이 거칠거칠하게 보이게..

UE4 생존게임 제작 - 3 (충돌 시스템 제작)

1. 충돌 감지를 위한 박스 컴포넌트 생성 protected: // 충돌 감지를 위한 박스 컴포넌트 UPROPERTY(Category = Collision, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) UBoxComponent* CollisionBox; 먼저, 박스 컴포넌트를 protected 변수로 선언을 해주었습니다. // 박스 컴포넌트 생성 CollisionBox = CreateDefaultSubobject(TEXT("CollisionBox")); // 박스 컴포넌트를 메시의 소켓에 달아준다 CollisionBox->SetupAttachment(GetMesh(), TEXT("LION_-Spine_Socket"))..

UE4 생존게임 제작 - 2 (몬스터 제작)

1. 몬스터 6마리 메시 선정 및 제작 몬스터는 포식자와 먹이, 두 부류로 분류하였습니다. 포식자: 코뿔소, 늑대, 사자 먹이: 얼룩말, 사슴, 돼지 포식자와 먹이에 따라 AI 컨트롤러를 따로 만들어서 포식자는 플레이어를 공격하고 먹이는 플레이어를 만나면 도망치도록 만들 것입니다. 2. 몬스터 애니메이션 제작 몬스터도 플레이어의 애니메이션과 마찬가지로 블렌드 포즈를 이용해 애니메이션을 설정하였습니다. void UAnimalAnim::NativeUpdateAnimation(float DeltaSeconds) { Super::NativeUpdateAnimation(DeltaSeconds); // 자신이 가지고 있는 몬스터 객체를 가져온다 AAnimal* pOwner = Cast(TryGetPawnOwner(..

UE4 생존게임 제작 - 1 (캐릭터 제작)

1. 플레이어 메시 선정 및 제작 플레이어 메시를 선정하고 1인칭 카메라를 설치하였습니다. C++ 프로젝트를 이용해 플레이어 클래스를 만들고 블루프린트를 이용해 스켈레탈 메시를 적용하였습니다. 2. 플레이어의 움직임 조작을 위한 키 입력 매핑 제작 마우스 X, Y축에 따른 화면 회전과 키보드 WSDA로 캐릭터가 이동할 수 있도록 축매핑을 하였습니다. 또한, 액션매핑을 이용해 키보드 1, 2, 3 숫자 버튼을 통해 공격 상태를 변경할 수 있도록 하였습니다. (1: 일반, 2: 검, 3: 활) 그리고 마우스 왼쪽 버튼을 통한 공격과 스페이스바를 통한 점프 키를 생성하였습니다. 3. 플레이어 애니메이션 제작 플레이어 상태(1: 일반, 2: 검, 3: 활)에 따른 각기 다른 애니메이션을 적용하였습니다. 애님인스..