언리얼 엔진/25.01.23 2차프로젝트 기술 8

타이틀 UI 만들기

게임이 처음 실행됐을 때 타이틀 화면이 나오도록 만들 예정이다. 위에 사진은 따라할 게임의 타이틀 화면이다. 세세한 애니메이션 효과까지는 주지 못하여도 느낌은 따라할 예정이다.  컨텐츠 브라우저에서 우클릭하여 위젯 블루프린트를 클릭한 다음  위에 유저 위젯을 클릭하여 생성해주자.  왼쪽 창 Palette에서 canvas를 검색하여 캔버스 판넬을 가운데에 드랍해 주고 크기를 맞춰주자.  위 사진들과 같이 진행하여서 먼저 검은 배경을 제작하였다.image를 하나 두고 image가 화면 전체 크기가 되도록 맞춘 다음 색을 바꿔주었다. 그래서 마지막과 같은 모습이 되었다.  다음으로 넣을 것은 Horizontal Box이다.큰 제목 부분에는 글자와 이미지가 같이 들어갈 예정이기에 가로 길이에 맞게 저절로 정렬되..

에너미 공격과 사망시 효과음이 재생되도록 만들기

그 동안 효과음을 안 넣어서 밋밋한 느낌이 났다.에너미가 공격할때와 사망시 효과음이 재생하도록 만들 예정이다.  RangedEnemy.hUPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Sound)class USoundBase* DeathSound;bool PlayDeathSound = false;UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Sound)class USoundBase* AttackSound; 먼저 헤더에 사운드베이스를 받을 수 있도록 선언하였다. 하나는 죽을 때의 사운드, 다른 하나는 공격을 할 때 나오는 사운드이다.bool 변수는 죽었을 때 죽는 효과음이 한번만 나오도록 막기 위해 선언하..

에너미 체력 UI 제작

이번에 만들 것은 체력 UI이다. 이것은 블루프린트를 이용해서 제작할 예정이다.먼저 간단하게 UI와 연동을 해서 화면에서 그것이 보이는지 테스트를 한 다음 세밀하게 조정할 예정이다.  컨텐츠 브라우저에서 우클릭을 하여 블루프린트 클래스를 클릭한 다음 ALL CLASSES를 펼쳐 userwidget을 검색하여 나오는 UserWidget을 눌러서 만든다. 만든 블루프린트를 클릭하면 창이 새로 나온다. 여기에서 좌측을 보면 Palette라는 창이 있을 것이다. 이곳에서는 UI에서 사용할 각종 기능들이 준비되어 있다.먼저 기본 세팅을 위해 Canvas Panel을 깔아두자. 클릭한 다음 드래그하여 창 중앙에 드랍하면 된다.  그 다음으로 나는 내가 원하는 HP UI를 만들기 위해 위에 3가지가 필요하다.Prog..

에너미 약점과 근접 에너미 무기 공격 충돌 만들기

현재 에너미는 어느 부위를 맞아도 체력이 똑같이 감소한다.하지만 나는 특정 부위를 공격하면 대미지가 더 들어가서 체력이 더 많이 깎이게 만들고 싶다. 먼저 근접 에너미의 어느 부분을 약점으로 할 것인지 블루프린트에서 미리 설정을 해보았다.머리를 약점으로 잡았으며 메쉬 아래에 속하게 만들고 머리로 볼 수 있는 위치를 설정하였다. 그리고 콜리전을 만들어서 약점이라는 EnemyWeak와 EnemyWeak 프리셋을 만들었다.이제 설정들을 메모해서 코드로 작성을 한다. MeleeEnemy.hUPROPERTY(EditAnywhere, BlueprintReadWrite)class USphereComponent* HeadCollision;UFUNCTION()void OnHeadOverlap(UPrimitiveCompo..

에너미 충돌 콜리전 세팅하기

이번에는 일단 에너미가 플레이어의 총알에 맞았을 경우 체력이 감소하는 것을 구현하려고 한다. 먼저 에너미의 콜리전 프리셋을 제작한다. 언리얼 엔진 창의 좌측 상단에서 Edit을 누른 다음 Project Settigs...를 클릭한다. 그러면 Project Settings 창이 나오는데 좌측에서 Engine의 Collision을 클릭해주자. 그러면 콜리전을 세팅하는 창이 된다. 이후 자신이 원하는 콜리전을 하나 새로 만들어 주자. Object Channels에서 New Object Channel...을 클릭하여 새로운 콜리전 채널을 만든다. 이름은 자신이 파악할 수 있는 것으로 지어주며 Default Response는 다른 콜리전 채널과 충돌 처리 설정을 무엇으로 기본으로 할지 정하는 것이다. 나는 일단은..

원거리 에너미 애니메이션 적용하기

이번에는 원거리 에너미에게 애니메이션을 주기로 하였다.먼저 적용할 에셋을 찾아보았다. https://www.fab.com/listings/7397dd8d-2e47-4e68-9e9d-a10c6fa0a9c7 에셋 스토어에서 에셋을 찾아보던 중 해당 자료를 발견하였다. 외형도 고를 수 있고 애니메이션도 있고 원하던 외형이기에 바로 에셋을 받고 적용하였다. 1. 원거리 에너미에게 에셋 적용 RangedEnemy.cppARangedEnemy::ARangedEnemy(){ ConstructorHelpers::FObjectFinder tempMesh(TEXT("/Script/Engine.SkeletalMesh'/Game/ParagonHowitzer/Characters/Heroes/Howitzer/Skins/Tier_..

스폰될 때 에너미에게 정보를 전달하기

저번에 웨이브로 에너미들을 소환되게 만들었는데 구현을 수정해야하는 부분을 발견했다.for문을 사용해서 맨 마지막 적에게만 마지막이라는 정보를 전달하고 해당 적이 죽으면 다음 웨이브 적이 소환되도록 생각하였는데 그러면1(x),2(x),3(x),4(o) 적이 이렇게 남았다고 쳤을 때 마지막 적인 4번 적을 먼저 죽인다면 마지막 적이 죽었다는 정보를 받아 적이 남아있는데 다음 웨이브 적을 소환되게 될 것이다. 그래서 수정 방법을 생각했다. 다음은 스폰하여 에너미에게 어느 웨이브에 속해있는지 정보를 받고 죽을 경우 해당 웨이브의 카운트를 감소하는 과정을 간단하게 글로 작성해본 내용이다.1. 배열에 담은 에너미들의 스폰을 발생하게 한다.2. 스폰 함수를 부를 때 숫자를 넣어 숫자 값에 따라 에너미가 어느 배열에 ..

에너미를 배열로 받아놔 한번에 스폰시키기

게임 진행이 에너미가 웨이브 형식으로 소환 될 예정이기에 한 웨이브의 적들을 미리 배열로 받아 놓기로 생각하였다. 내가 구현 방식 1. 에너미와 싸우는 장소에 도착2. 웨이브 A(배열 A)가 다 잡히면 웨이브 B(배열 B)를 소환.3. 위 과정을 반복하여 모든 웨이브가 끝나면 끝 코드에서 배열을 사용하려면 아래와 같은 코드를 헤더에 선언을 해준다.TArrayClassName>> name;이것을 이용하여 시범삼아 웨이브를 총 3개로 만들었다.UPROPERTY(EditAnywhere, BlueprintReadWrite)TArray> WaveA;//몬스터 웨이브 B들의 정보를 저장하는 곳UPROPERTY(EditAnywhere, BlueprintReadWrite)TArray> WaveB;//몬스터 웨이브 C들..