이번에는 캐릭터에 장착시킬 무기를 만들고 캐릭터에 장착시켜보려고 한다.
목차
- Quixel Bridge에서 무기 에셋 가져오기
- 무기 클래스 만들기
- 무기 블루프린트 클래스 만들기
1. Quixel Bridge 무기 에셋 가져오기
퀵셀 브릿지에서 무기에셋을 가져와보려고 한다. 퀵셀 브릿지는 기본적으로 언리얼엔진 라이브러리에 존재하고 이를 엔진에 설치하기만 하면 된다.
이렇게 라이브러리로 들어가면 퀵셀브릿지가 존재한다.
이제 에디터로 돌아가자.
에디터 상단의 Quickly add to the project 버튼을 누르면 퀵셀 브릿지를 열 수 있다.
퀵셀 브릿지를 이용하려면 회원가입을 해야한다. 회원가입은 무료이니 우 상단의 사람 아이콘을 누르고 회원가입을 진행하자
내 기억상으로는 회원가입을 하고 무슨 월정액 결제 페이지가 떴던 걸로 기억하는데 무시하고 나간뒤 로그인하면 된다.
이제 상단 검색바에 Sword를 검색해 검 에셋을 찾아보자.
원하는 에셋을 찾으면 다운로드를 하고 Add 버튼을 누르면 자동으로 에셋이 우리의 프로젝트에 추가된다. 퀄리티의 경우 높게 하면 당연히 좋겠지만 지금은 연습용으로 만들고 있는거라 굳이 고퀄리티로 하지는 않았다.
이렇게 아주 잘 들어온 것을 볼 수 있다.
2. 무기 클래스 만들기
이제 무기 클래스를 만들자. 아이템 클래스를 기반으로 c++클래스를 새로 만들 것이다.
아이템을 기반으로 클래스가 정상적으로 잘 생성되었다. 이제 이 무기 클래스를 오버라이드 하여 무기 클래스만의 기능을 만들어보려고 한다.
Item.h 로 돌아가 오버랩 함수들을 가상으로 선언해준다.
UFUNCTION()
virtual void OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult);
UFUNCTION()
virtual void OnSphereEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex);
이제 다시 Weapon.h로 돌아와 함수를 재선언 해주자
UCLASS()
class PRACTICE_API AWeapons : public AItem
{
GENERATED_BODY()
protected:
virtual void OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) override;
virtual void OnSphereEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex) override;
};
이때 UFUNCTION() 매크로는 제거해주어야 하는데 UFUNCTION()를 부모클래스에서 선언하면 자식 클래스에도 적용이 되며 중복 적용 시킬 경우 성능에 문제가 생길 수 있어 한번만 선언해야한다고 한다.
이제 이 함수들을 다시 정의해보자.
#include "Weapons/Weapons.h"
void AWeapons::OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
Super::OnSphereOverlap(OverlappedComponent, OtherActor, OtherComp, OtherBodyIndex, bFromSweep, SweepResult);
}
void AWeapons::OnSphereEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
{
Super::OnSphereEndOverlap(OverlappedComponent, OtherActor, OtherComp, OtherBodyIndex);
}
함수를 실행하기 전에 부모 버전의 함수를 호출하여 공용기능을 실행시킨다.
이제 이렇게 오버랩 함수가 존재하는 클래스가 만들어졌다. 컴파일 하고 이를 기반으로 블루프린트 클래스를 만들자.
3. 무기 블루프린트 클래스 만들기
C++를 기반으로 블루프린트를 만들었다. 그리고 스태틱 메시를 다운로드 받은 무기 에셋을 적용시키자.
이렇게 배치가 끝났다. 이제 다음에는 이 무기를 캐릭터가 접근할때 부착시키려고 한다.
'게임프로그래밍 > 실습1' 카테고리의 다른 글
[언리얼 실습] 11. 공격 애니메이션 추가하기 (0) | 2024.10.12 |
---|---|
[언리얼 실습] 10. 캐릭터에 Socket 추가하기 (0) | 2024.10.12 |
[언리얼 실습] 8. End Overlap 이벤트 생성 (0) | 2024.10.12 |
[언리얼 실습] 7. Overlab Event 생성 (1) | 2024.10.11 |
[언리얼 실습] 6. Blend Space 1D를 이용한 걷기와 달리기 애니메이션 구분 (0) | 2024.10.11 |