전체 글 (156)     블로그 내 검색 검색     글쓰기     관리자 썸네일형 리스트형 UE4 콜리전 GoldGiver 2022. 3. 6. 16:54 이득우님의 "이득우의 언리얼 C++ 게임 개발의 정석" 책을 따라가며 실습한 내용을 정리한 포스팅입니다. 실습에 필요한 자료들은 이 링크에서, 작업한 예제 소스 완성본은 여기에서 찾아보실 수 있습니다. (저는 언리얼 4.27.2 버전 기준으로 작업하였습니다) 콜리전 설정 콜리전은 물리적 충돌 영역을 의미하는데, 언리얼에서 콜리전은 크게 세 가지 방법으로 제작할 수 있다. 스태틱메시 에셋 : 스태틱메시 에셋에 콜리전 영역을 심는 방법이다. 스태틱메시 컴포넌트에서 비주얼과 충돌이라는 두 가지 기능을 설정할 수 있어 관리가 편리하다. 기본 도형(Primitive) 컴포넌트 : 구체, 박스, 캡슐 등의 기본 도형을 사용해 스태틱메시와 별도로 충돌 영역을 지정한다.. Unreal FMATH https://docs.unrealengine.com/5.3/en-US/API/Runtime/Core/Math/FMath/ FMath Structure for all math helper functions, inherits from platform math to pick up platform-specific implementations Check GenericPlatformMath.h for additional math functions docs.unrealengine.com 언리얼 반복자(Unreal Iterator) 언리얼에서는 언리얼 오브젝트(UObject)를 상속받은 파생 클래스들에 대한 선택적 클래스 스코프(Optional Class Scope)를 통한 빠른 검색을 지원하는 반복자 기능을 지원합니다. 이러한 기능을 수행하는 반복자는 크게 UObject들에 대한 순회를 지원하는 오브젝트 반복자와 AActor들에 대한 순회를 지원하는 객체 반복자입니다. 이러한 함수를 사용하여 모든 런타임 액터 및 오브젝트들을 검색하거나, 특정 클래스만을 검색할 수 있습니다. 이러한 기능의 제공은 사용자가 스스로 액터의 동적 배열을 유지하고 관리할 필요가 없으며, 단지 액터가 소멸(destroy)될 때 이 액터가 제거되는 것만 기억하면 됩니다. 액터 및 오브젝트 반복자는 항상 사용자의 게임 월드에 여전히 존재하는 모든 액터 및 오브.. 프로젝트세팅 설정하기 레벨저장하기 게임모드베이스만들기 프로젝트세팅에 레벨및 게임모드 설정 UE5 액터에 위젯 달기 삼인칭 시점의 프로젝트를 하나 만듭니다. 컨텐츠드로워에서 위젯블루프린트를 만듭니다. 그림과 텍스트를 간단히 배치합니다 블루프린트 액터를 하나 만듭니다. 다음과 같이 컴포넌트를 추가합니다. Widget에는 그림을 연결해 줍니다. 박스콜리전의 사이즈는 메시보다 넉넉하게 크게해줘 캐릭터가 근접하는 걸 체크하게 해줍니다. BoxCollision을 우클릭해서 AddOnComponent Begin Overlap, AddOnComponent EndOverlap을추가합니다. Set visibility를 2개 추가해 Wdiget을 target으로 연결해주고 한쪽을 New visibitiy를 체크해줍니다. ThirdPerson블루프린트를 열 Widget을 2개 추가해주고 하나는 180도 돌려 배치합니다. 캐릭터가 회전했을.. C++ 블루프린트연동 https://darkcatgame.tistory.com/61 UE4 C++와 블루프린트 연동 기본 -0. Reflection(리플렉션) 이번 포스팅은 언리얼4 C++과 블루프린트의 연동을 중점을 주제로 작성을 시작합니다, 변수, 함수, 클래스 등 C++데이터를 블루프린트로 연동하는 주제이며 총 3개 ~ 4개 시리즈로 포스팅이 작성될 darkcatgame.tistory.com https://darkcatgame.tistory.com/62 UE4 C++와 블루프린트 연동 기본 -1. UPROPERTY() UPROPERTY() UPROPERTY()는 변수에 붙는 리플렉션 메크로입니다, 위 코드 처럼 UPROPERTY() 메크로에 인자 값을 넣어서 용도에 맞게 활용 할 수 있습니다. 내부에 들어가는 인자 스타.. 나이아가라 참조사이트 https://darkcatgame.tistory.com/68 [Niagara Tutorial] 0. Niagara 개요 및 설치 세팅 튜토리얼에 앞서 본 튜토리얼은 언리얼4.23.1에서 공부한 내용으로 작성합니다, 나이아가라는 현재 베타상태입니다, 공부하면서도 많은 에러와 고난을 겪었으며 제가 작성한 튜토리얼이 잘못됬 darkcatgame.tistory.com https://darkcatgame.tistory.com/70 [Niagara Tutorial] 기초 1. 나이아가라 메커니즘 //! 해당 튜토리얼은 UE4.23.1 버전에서 작성되며 나이아가라는 아직 베타 상태이므로 추후에 내용이 다르거나 변경될 수 있습니다. 나이아가라 기본 구조 나이아가라 파일 생성 목록에 위 리스트 darkcatgame.t.. Delegate https://darkcatgame.tistory.com/66 UE4 C++ Delegate 정리 & 샘플 프로젝트 개인적으로 UE4 C++에서 Delegate를 사용할 때 처음에 굉장히 에러를 많이 겪었습니다, 그래서 이번 포스팅은 UE4 C++에서 Delegate를 사용하는 방법에 대해 정리하고 샘플프로젝트도 만들었습니다. https darkcatgame.tistory.com 개인적으로 UE4 C++에서 Delegate를 사용할 때 처음에 굉장히 에러를 많이 겪었습니다, 그래서 이번 포스팅은 UE4 C++에서 Delegate를 사용하는 방법에 대해 정리하고 샘플프로젝트도 만들었습니다. CatDarksDelegateExamplePrj.zip 7.72MB https://docs.unrealengine.c.. Kill Zone제작하기 총알과 적은 무한대로 직진하기 때문에 인스턴스들이 많아져서 게임성능이 저하됩니다. 따라서 적당한 위치에 보이지 않는 장벽을 만들어 충돌시 없애도록하는 Kill Zone을 만들어 보겠습니다. 타이머를 달아 일정시간 경과후 없애주는 방법도 가능합니다. 프로젝트 세팅의 Collision탭에서 Preset항목에 New버튼을 눌러 다음과 같이 프리셋을 추가합니다. Bullet과 Enemy는 WorldStatic(KillZone)과는 Overlay로하고 Player는 Block으로 하겠습니다. KillZone은 별도의 채널을 만들지 않고 WorldStatic채널을 사용하겠습니다. 에너미 총알의 프리셋도 WorldStatic오브젝트에 대한 응답을 Overlap으로 변경합니다. 플레이어도 WorldStatic채널에 대.. Visual Studio integration tools 에러 마켓에서 Visual Studio Integration Tools를 깔아도 에러가 없어지지 않는다. Unreal Editor에서 Plugins 메뉴로 이동해 Visual Studio Integrations Tools를 체크하고 리스타트 해준다. 충돌시 파티클효과 발생 Bullet과 충돌시 파티클효과를 발생하기 위해 public으로 파티클 포인트를 선언해 줍니다. Bullet.h UPROPERTY(EditAnywhere) class UParticleSystem* explosionFX; 폭발 이펙트는 에너미와 충돌이 발생했을때 발생되어야 하므로 OnBulletOverlap()함수에서 에너미를 제거하는 다음 줄에 이펙트 생성코드를 추가합니다. 파티클 파일을 월드에 생성할 때는 UGameplayStatics 클래스의 SpawnEmitterAtLocation()함수를 사용합니다 접근하려면 Kismet/GamePlayStatics.h를 포함시켜줘야 합니다. Bullet.cpp #include "Bullet.h" #include "Components/BoxComponent.h" .. UE5 충돌이벤트와 델리게이트 충돌 조건을 설정했으니 충돌이 일어나면 실행될 함수를 마련해야 합니다. 이벤트가 발생되었을때 미리 만들어 놓은 함수를 실행하면서 매개변수에 자동으로 값을 넘겨주는 기능을 델리게이트라고 합니다. 델리게이트로 연결된 함수의 매개변수에 값을 전달하기 위해서는 함수의 매개변수의 자료형과 개수가 델리게이트에서 설정한 것과 동일해야 합니다. 자세한건 이곳을 참조해주세요 2023.10.25 - [언리얼레퍼런스/언리얼 참조사이트] - Delegate 구현을 위해 Bullet.cpp의 BeginPlay()에 boxComp->OnComponentBeginOverlap을 추가하고 커서를 함수명에 올려놓고 F12를 눌러봅니다. void ABullet::BeginPlay() { Super::BeginPlay(); boxComp.. 이전 1 ··· 6 7 8 9 10 11 12 13 다음