전체 글 (156)     블로그 내 검색 검색     글쓰기     관리자 썸네일형 리스트형 UE5 충돌처리하기 - 콜리전 채널, 프리셋 설정하기 Project Settings의 Collision탭의 Object Channes의 New Object Channel 버튼을 클릭해 Player, Enemy, Bullet을 Ignore로 만든다. 개별 Collision Response 설정하기 PlayerPawn블루프린트로 가서 디테일의 콜리전탭을 보면 Collision Presets가 OverlapAllDynamic으로 되어 있습니다. 이걸 Custom으로 변경하고 변경해도 되지만 이번에는 C++에서 변경해 보겠습니다. APlayerPawn() 생성자에 밑의 3줄을 추가합니다. ECC_GameTraceChannel1은 우리가 Collision에서 만든 첫번째 ObjectChannel입니다. 두번째는 끝에 2를 세번째는 끝에3을 붙이면 됩니다. APlay.. 메타휴먼 만들기 https://metahuman.unrealengine.com/ MetaHuman Creator metahuman.unrealengine.com 에서 메타휴먼을 만든다. 가입을 해야한다. 자신에게 맞는 버전을 선택하고 로그인 한다. 맘에드는 캐릭터를 하나 선택하고 생성해준다. 마음 드는 모양으로 바꿔준다. 나의 메타휴먼탭을 눌러보면 자신이 만든 캐릭터가 보인다. 저장메뉴는 따로 없는 것같다. 언리얼에서 퀴셀브리지에 로그인하면 방금만든 메타휴먼이 보인다. 메타휴먼에 로그인해야할지도 모른다. 저장하고 + 해준다 엄청 오래 걸린다. 저장한 인물의 이름으로 폴더가 생긴다. BP_이름을 더블클릭해 놓는다 컴포넌트의 Body를 선택하고 메시의 폴더를 선택하면 컨텐트드로워에 해당 스켈리탈 메시가 보인다. 우클릭후 A.. Enemy Factory 에너미 생성 액터 제작 이제 적을 생성할 Factory가 필요합니다. C++클래스를 만들고 부모를 액터로 이름을 EnemyFactory로 합니다. VisualStudio로 이동해서 모두 다시로드를 클릭하고 편집을 시작합니다. EnemyFactory를 에너미만 Spawn하면 되므로 BoxCollider나 형태는 필요없습니다. EnemyFactory.h에 적을 만들 간격에 사용할 delayTime을 만들고 currentTime은 private로 합니다. 그리고 Spawn할때 사용할 적을 담을 enemy를 TSubclassof로 선언합니다. public: // Called every frame virtual void Tick(float DeltaTime) override; UPROPERTY(EditAnywhere) float del.. 적 방향 결정 우선 EnemyActor.h에 추첨확율을 저장할 traceRate와 dir을 선언합니다. public: // Called every frame virtual void Tick(float DeltaTime) override; UPROPERTY(EditAnywhere) class UBoxComponent* boxComp; UPROPERTY(EditAnywhere) class UStaticMeshComponent* meshComp; UPROPERTY(EditAnywhere) int32 traceRate = 50; private: FVector dir; 방향추첨 기능은 블루프린트 생성시 결정해야 하므로 BeginPlay()함수에 구현해 줍니다. void AEnemyActor::BeginPlay() { Super.. 적 제작하기 적 액터는 이전의 클래스와 제작방법이 비슷합니다. 에너미가 특정 타깃을 향하는 방향을 계산하는 부분이 추가됩니다. C++클래스를 추가합니다. 부모는 Actor이고 이름은 EnemyActor라고 합니다. 충돌을 위한 BoxComponent와 외형처리를 위한 StaticMeshComponent를 추가합니다. Visual Studio로 모두 다시로드를 누르고 편집을 시작합니다. EnemyActor.h public: // Called every frame virtual void Tick(float DeltaTime) override; UPROPERTY(EditAnywhere) class UBoxComponent* boxComp; UPROPERTY(EditAnywhere) class UStaticMeshCompo.. 총알 발사 효과음 구현 총알발사음 넣기 언생언리얼교과서 공식 깃허브 자료실/2장으로가서 start-wars-blaster.WAV파일을 누르고 https://github.com/araxrlab/lifeunreal GitHub - araxrlab/lifeunreal: 인생 언리얼 교과서 공식 예제 인생 언리얼 교과서 공식 예제. Contribute to araxrlab/lifeunreal development by creating an account on GitHub. github.com 다운받아 Contets드로워에 Audio폴더를 만들고 끌어다 놓습니다. 파일을 열어 소리를 0.2로 줄입니다. 총알을 발사하는 Fire()는 playerPawn.cpp에 있으므로 playerPawn.h에 소리를 연결할 fireSound를 선언합니.. 마우스버튼입력액션 테스트를 위해 뷰포트에 놓왔던 BP_Bullet는 제거합니다. 총알 발사를 위해 프로젝트 Input탭의 바인딩에 Action을 추가합니다. 총알 발사 위치를 설정하기 위해 PlayerPawn헤더파일에 UArrowComponent 포인터변수를 추가합니다. 총알블루프린트는 레벨에 배치되지 않았지만 실시간으로 생성되므로 TSubclassOf라는 자료형으로 선언해야 합니다. UPROPERTY(EditAnywhere) class UArrowComponent* firePosition; UPROPERTY(EditAnywhere) TSubclassOf bulletFactory; 생성자에 firePosition객체를 얻어오는 코드를 추가하고 boxComp에 붙여줍니다. ABullet::ABullet() { // Set .. C++ Bullet 클래스 생성하기 void ABullet::Tick(float DeltaTime) { Super::Tick(DeltaTime); FVector newLocation = GetActorLocation() + GetActorForwardVector() * moveSpeed * DeltaTime; SetActorLocation(newLocation); } 총알은 키입력을 받을 필요가 없으니 Actor클래스로 만듭니다. 이름은 Bullet으로 합니다. 충돌체와 모양이 필요하므로 C++클래스를 만든후 playerPawn과 마찬가지고 UBoxComponent와 UStaticMeshComponent를 추가해줍니다. Bullet.h public: // Called every frame virtual void Tick(float Delt.. UE5 플레이어 키입력 바인딩하기 프로젝트세팅 엔진 입력바인딩에서 다음과 같이 WASD를 설정해 줍니다. 바인딩된 키입력을 담을 변수 h,v와 처리함수를 playerPawn.h에 private로 선언해줍니다. private: float h; float v; void MoveHorizontal(float value); void MoveVertical(float value); 선언한 함수를 playerPawn.cpp에 구현해줍니다. void APlayerPawn::MoveHorizontal(float value) { h = value; } void APlayerPawn::MoveVertical(float value) { v = value; } 이 처리함수를 바인딩해줍니다. SetupPlayerInputComponent()는 playerPaw.. UE5 Visual Studio Integration Tool 재설치 혹시 intellisence가 작동안하면 Epic Games Laucher 라이브러리에서 엔진 버전밑 설치된 플러그인을 클릭후 Visual Studio Integration Tool을 제거후 다시 설치합니다. 마켓플레이스에서 검색후 설치해줍니다. 설치 완료후 다시 비쥬얼스튜디어 프로젝트 파일을 열면 새로운 위치를 찾았다고 확인하라고 하고 에디터 좌측아래 준비를 누르면 설치를 하고 있으니 완료때까지 잠시 기다려 줍니다. 언리얼과 Visual Studio의 관계가 생각보다 느립니다. 항상 준비가 완료되었는지 메세지를 확인하면서 작업해야 합니다. 플레이어 제작하기 플레이어 클래스 제작하기 C++ 폴더에 C++클래스를 만듭니다. 부모클래스는 Pawn으로 하고 Public 이름을 PlayerPawn으로 합니다. Visual Studio로 가서 리로딩하고 언리얼로 돌아와 라이브코딩을 합니다. 혹시 리컴파일 하라는 메세지가 나타나면 언리얼에디터를 끄고 오른쪽 화살표를 눌러 리빌드 해줍니다. 잘되었으면 언리얼에디터가 다시 로딩 됩니다. 앞으로도 C++클래스의 생성자가 새로 생성되거가 변경되면 이 과정을 반복합니다. playerPawn을 생성했으니 박스충돌체를 추가해 봅시다. playerPawn.h에 맨아래 다음코드를 추가해서 boxComp의 포인터를 준비합니다. public: // Called every frame virtual void Tick(float DeltaTim.. 슈팅프로젝트 환경 구성 블루프린트로 만들었던 슈팅프로젝트를 블루프린트대신 C++코드를 이용해서 비행슈팅 게임을 다시 만들어 보겠습니다. 인생 언리얼 이라는 책을 참조했습니다. 우연히 저자인 이영호 선생님한테 하루 배울시간이 있었는데 재미있었습니다. New Level만들기 New Level을 선택후 Empty Level을 선택합니다. Maps폴더에 ShootingMap이라는 이름으로 저장합니다. 기본맵 설정하기 프로젝트파일을 열어 Mpas&Modes탭 우측에 Editor Startup Map항목과 Game Default Map항목을 앞서 만든 ShootingMap으로 지정합니다. GameModeBase클래스 만들기 콘텐츠브라우저 C++Classes폴더에 +Add-NewC++Class로 새 C++클래스를 만듭니다. 부모클래스로 G.. 이전 1 ··· 7 8 9 10 11 12 13 다음