본문 바로가기

전체 글

(331)          글쓰기    
yj59 이득우언리얼 깃허브 https://yj59.github.io/categories/unrealtuto Unreal Tutorials Study Logs yj59.github.io
AIController와 내비게이션 시스템 ​ ● 플레이어가 조종하지 않지만 레벨에 배치돼 스스로 행동하는 캐릭터를 'NPC(Non Player Character)'라고 한다. ​ ● 언리얼 엔진은 컴퓨터가 인공지능으로 NPC를 제어하도록 AI 컨트롤러를 제공한다. 폰은 플레이어 컨트롤러와 동일한 방식으로 AI 컨트롤러에 빙의될 수 있고, 빙의되면 AI가 시키는 대로 행동하게 된다. ​ ● AI 컨트롤러를 생성하여 캐릭터에게 빙의하기 위해서는 AI Controller를 부모 클래스로 하는 AI 컨트롤러를 만들어줘야 한다. ​ ● ABCharacter가 위에서 만든 ABAIController를 사용하도록 AIControllerClass(=AI 컨트롤러 클래스) 속성을 ABAIController의 클래스로 지정하고, AI 생성 옵션을 PlaceInW..
무기 무기상자 뺏기 Weapon ItemBox SetOwner 교재는 무기를 ItemBox로 부터 획득하지만 실제 들고다니다 다른 Chracter로 부딪치면 무기를 빼긴다. 이후 다시는 무기를 획득하지 못한다. 이 부분을 고쳐봤다. 그리고 itemBox뿐이 아니라 Weapon을 직접 획득할수도 있게 만들었다. 일단 ItemBox Class는 Collider를 담당하는 부분과 모양을 담당하는 Box부분, 효과부분이 있다. 무기는 WeponItemclass로 레벨에서 지정하고 spawn할때 사용한다. public: UPROPERTY(EditInstanceOnly, Category = Box) TSubclassOf WeaponItemClass; UPROPERTY(VisibleAnywhere, Category = Box) UBoxComponent* Trigger; UPRO..
Disipatch Deligation Design Pattern Oberver 총을 쏘면 적이 맞고 전 에너미의 개수가 Widget UI에서 줄어들고 1이되면 즉 자기만 남으면 문이 열리게 해보겠다. 일단 BP_ThirdPersonCharacter에 AddCustomerEvent를 한후 앞쪽 노드들은 Die의 입력은 위젯을 하나만들고 text_enemy라는 UI를 만들자. 이전에 만든거에 추가했는데 Enemy만 있으면됨 변수로 체크해주고 UI가 만들어질때 BP_ThirdPerson의 갯수를 세서 text_Enemy에 업데이트하고 모든 ThirdPersonCharacter의 OnDeath Dispatcher(Deligation)을 등록해준다 Call이 생기면 DecreaseEnemyCnt 이벤트가 실행된다. 이제 문을 하나 만들자. Frame과Door는 StaticMesh이고 기본 ..
게임데이터와 UI위젯 - 엑셀데이터의 활용 GameInstance를 부모로 ABGameInstance 클래스를 만들자 ABGameInstance.h #pragma once #include "../ArenaBattle.h" #include "Engine/GameInstance.h" #include "ABGameInstance.generated.h" /** * */ UCLASS() class ARENABATTLE_API UABGameInstance : public UGameInstance { GENERATED_BODY() public: UABGameInstance(); virtual void Init() override; }; ABGameInstance.cpp #include "ABGameInstance.h" UABGameInstance::UABGa..
콤보공격 입력추가 이렇게 좌클릭을 눌렀을 시 동작을 하게끔 만들어 줄 것임. static ConstructorHelpers::FObjectFinder INPUT_ATTACK(TEXT("'/Game/ThirdPerson/Input/Actions/IA_Attack.IA_Attack'")); if (INPUT_ATTACK.Object) { AttackAction = INPUT_ATTACK.Object; }; 일단은 다음과 같이 어택에 관한 InputAction을 받아주고 이에 상응하는 함수를 만들어 주었다. 그 이후에 바인딩을 해주는데, 문제는 지금 이 캐릭터만 해당 몽타주를 사용할 것이 아니라, 다른 캐릭터도 이를 사용하기 위해서 기본 플레이어 아래 (ABCharacterBase)에 생성을 진행해주기로 한다. 그래서..
아이템상자와 무기제작 캐릭터 소켓 설정 캐릭터 소켓 설정 캐릭터 무기 추가를 위해 마켓 플레이스에서 InfinityBlade: Weapons 를 프로젝트에 추가하자. 무기는 캐릭터에 트랜스폼으로 배치하는 것이 아니라 메시에 착용해야 캐릭터 애니메이션에 따라 무기가 같이 움직인다. 언리얼 엔진은 아이템을 캐릭터에 부착하기 위해 소켓 시스템을 제공한다. hand_rSocket 소켓에 검을 부착해보자. 그리고 위치값을 조정해서 자연스럽게 보이도록 하자. 코드를 통해무기 스켈레탈 메시 컴포넌트를 캐릭터 메시에 부착해보자. StaticMeshComponent* Weapon 변수를 선언하고 CreateDefaultSubObject()로 만들어서 원하는 Sword를 찾아 SK_WEAPON에 넣어서 Weapon->SetAttachment로..
콜리전 설정 물리 엔진은 게임 세계 내 액터들에게 영향을 준다. 캐릭터의 길을 막아주고, 중력이나 외부의 힘으로부터 작용한 힘을 받은 액터의 움직임을 표현해주고, 액터가 지정한 영역에 들어왔는지 감지도 하고,, 이러한 물리엔진을 활용하려면, 콜리전을 설정해야 한다 콜리전 설정 콜리전은 물리적 충돌 영역을 의미하는데, 언리얼에서 콜리전은 크게 세 가지 방법으로 제작할 수 있다. 스태틱메시 에셋 : 스태틱메시 에셋에 콜리전 영역을 심는 방법이다. 스태틱메시 컴포넌트에서 비주얼과 충돌이라는 두 가지 기능을 설정할 수 있어 관리가 편리하다. 기본 도형(Primitive) 컴포넌트 : 구체, 박스, 캡슐 등의 기본 도형을 사용해 스태틱메시와 별도로 충돌 영역을 지정한다. 스켈레탈 메시를 움직일 때 주로 사용한다. 피직스 애셋..
애니메이션 노티파이 애니메이션 노티파이 애니메이션 노티파이는 애니메이션을 재생하는 동안 특정 타이밍에 애님 인스턴스에게 신호를 보낼 수 있는 기능이다. 애니메이션 노티파이는 일반 애니메이션과 몽타주 모두 사용 가능한데, 여기서는 노티파이를 이용해 콤포 공격을 구현해 보자. 먼저, 위와 같이 NextAttackCheck 노티파이를 만든다. 공격 중, NextAttackCheck 노티파이가 있는 영역에서 공격 버튼이 눌릴 경우, 다음 섹션으로 넘어가 콤보 공격을 가능하도록 만드는 것이 목표이다. AttackHitCheck 노티파이는 그냥 노티파이가 작동했는지 로그를 찍어주는 기능으로 구현할 것이다. 컴파일후 플레이를 통해 공격을 해보면 몽타주 재생에 따라 네번의 노티파이가 발생함을 확인할 수 있다. 노티파이가 호출되면 언리얼은..
데미지 프레임워크 www.unrealengine.com/ko/blog/damage-in-ue4 blog.naver.com/destiny9720/220914505079 데미지 프레임워크에 대해서 유니티에는 데미지 프레임워크가 없어서 내 맘대로 구조체를 만들어서 사용했었다. ㅜㅜ 언리얼은 데미지를 주고받는 함수가 미리 구현되어있다. 엄청나게 편하다고 느꼈다. 데미지 프레임워크의 종류 데미지를 주는 함수의 종류 ApplyDamage : 기본적인 데미지 함수. ApplyPointDamage : 데미지를 주는 위치의 정보도 얻어올 수 있는 데미지 함수. (어디서 데미지를 주었는지.) ApplyRadialDamage : 범위 데미지를 줄 때 사용. (Origin으로부터 Radius만큼 데미지를 뿌린다.라는 느낌.) 데미지를 받는 함..
언리얼 엔진에서의 충돌 설정 게임은 엔진을 통해 가상의 물리 법칙을 받는 공간이다 오늘은 언리얼 엔진에서 제공하는 다양한 콜리전 설정과 그 방법에 대해 알아보겠다 콜리전 제작 방식 콜리전을 제작하는 방식으로는 크게 3가지가 있다 스태틱메시 애셋 방식 기본 도형 컴포넌트 방식 피직스 에셋 방식 스태틱메시 애셋 방식은 스태틱메시 에셋에 콜리전 영역을 심는 방식이다 보여지는것 그대로 충돌하게 되어 관리에 용이하다 기본 도형 컴포넌트 방식은 구체, 박스, 캡슐 등의 기본 도형을 사용해 충돌을 처리하는 방식이다 이 방식은 스켈레탈 메시를 사용할때 주로 이용된다 피직스 에셋 방식은 Ragdoll 효과를 구현할때 캐틱터에서 캡슐 컴포넌트 대신 사용한다 이 방식은 스켈레톤 메시에서만 사용할 수 있다 충돌영역을 설정했다면 활용방식을 지정할 수 있다..
언리얼 델리게이션 설명 보호되어 있는 글입니다.