본문 바로가기

언리얼엔진

(49)         글쓰기    
PBullet 발사체 만들기 발사체를 만들어보자. 충돌체와 메시 그리고 움직임을 담당할 ProjectileMovementComponent를 컴포넌트로 추가하는 코드다 PBullet.h // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "PBullet.generated.h" UCLASS() class P231113_API APBullet : public AActor { GENERATED_BODY() public: // Sets default values for this actor's properties ..
프로젝트 만들기 - TPSPlayer P231112이라는 제목으로 C++타입빈프로젝트를 하나 만든다 . 프로젝트명Build.cs에 "EnhancedInput","Niagara" 를 추가하고 언리얼에디터, VS를 끄고 프로젝트실행파일 위를 우클릭후 VS솔루션을 다시만든후 리빌드해준다. PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput","Niagara" }); EnhancedInput방식이므로 InputAction과 InputContextMapping파일을 만든다. 만드는 법은 이곳을 참조하세요 2023.10.17 - [언리얼레퍼런스/게임플레이프레임워크] - UE5 Enhanced Input ..
Player Attack - Animation Montage만들기 유한머신에서 Attack를 만들려면 안되는거 아닌데 공격키를 입력 받아야 한다. 실험해보니 방법은 있을텐데 Animation에서 Fire이벤트를 받는게 쉽지 않았다. 결국 뒤지다 보니 AnimationMontage()라는 애니메이션 시퀀스를 만들어 좋고 BP_Player 에서 PlayMontage()를 해준다 AnimGraph에는 DefaultSlot을 사이에 추가해 주면 된다. Animation Montage를 만든다. 이름을 BP_PlayerAttackMontage로 한다. 에디터가 열리면 에셋에서 애니메이션들을 끌어다 타임라인에 놓으면 기본적으로 자동플레이된다. BP_Player 이벤트그래프에 Fire()단추가 눌리면 PlayAnimMontage를 연결해준다. 마지막으로 AnimGraph에 Defa..
적에너미 만들기 BP_Enemy 블루프린트를 Actor로 만듬. Capsule과 SekeletalMesh를 추가해주고 메시 교체 애니메이션 블루프린트를 생성하고 BP_WarrioAnimRun로 이름 바꿈 State Machine을 추가하고 이름을 LocoMotion을 하고 Attack와 Run을 순환하는 유한머신을 만듬 이동 조건은 이전 스테이트가 끝나는 걸 체크 Animation Montage로 이렇게 하는것 같은데 그냥 아는 방법으로 구현. BP_Enemy에 방금만든 Anim Class를 지정
ThirdPerson Blueprint Child만들기 ThirdPerson Blueprints폴더의 BP_ThirdPersonCharacter를 선택후 우클릭후 Create Child Blueprint Class 이미 다 구현되어 있음. Skeletal Mesh Asset을 다운 받은 Mesh로 교환, ReTargeting보다 훨 쉬움. Animation Blueprint를 생성 State Machine 노드 를 LocoMotion으로 이름 바꾸고 LocoMotion을 더블 클릭해 State를 Idle과 Run을 2개 추가해 Idle을 정의 Run을 정의 My Blueprint에서 변수 moveSpeed생성 블루프린트에서 moveSpeed를 얻어옴 Character의 Get Velocity를 이용해서 Scala값으로 변환후 설정 Idle->Run으로 이동 ..
프로젝트세팅 설정하기 레벨저장하기 게임모드베이스만들기 프로젝트세팅에 레벨및 게임모드 설정
UE5 액터에 위젯 달기 삼인칭 시점의 프로젝트를 하나 만듭니다. 컨텐츠드로워에서 위젯블루프린트를 만듭니다. 그림과 텍스트를 간단히 배치합니다 블루프린트 액터를 하나 만듭니다. 다음과 같이 컴포넌트를 추가합니다. Widget에는 그림을 연결해 줍니다. 박스콜리전의 사이즈는 메시보다 넉넉하게 크게해줘 캐릭터가 근접하는 걸 체크하게 해줍니다. BoxCollision을 우클릭해서 AddOnComponent Begin Overlap, AddOnComponent EndOverlap을추가합니다. Set visibility를 2개 추가해 Wdiget을 target으로 연결해주고 한쪽을 New visibitiy를 체크해줍니다. ThirdPerson블루프린트를 열 Widget을 2개 추가해주고 하나는 180도 돌려 배치합니다. 캐릭터가 회전했을..
Kill Zone제작하기 총알과 적은 무한대로 직진하기 때문에 인스턴스들이 많아져서 게임성능이 저하됩니다. 따라서 적당한 위치에 보이지 않는 장벽을 만들어 충돌시 없애도록하는 Kill Zone을 만들어 보겠습니다. 타이머를 달아 일정시간 경과후 없애주는 방법도 가능합니다. 프로젝트 세팅의 Collision탭에서 Preset항목에 New버튼을 눌러 다음과 같이 프리셋을 추가합니다. Bullet과 Enemy는 WorldStatic(KillZone)과는 Overlay로하고 Player는 Block으로 하겠습니다. KillZone은 별도의 채널을 만들지 않고 WorldStatic채널을 사용하겠습니다. 에너미 총알의 프리셋도 WorldStatic오브젝트에 대한 응답을 Overlap으로 변경합니다. 플레이어도 WorldStatic채널에 대..
충돌시 파티클효과 발생 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..
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..