목록언리얼/멀티플레이 게임 만들어보자 (13)
안선생의 개발 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bTEv3U/btsD5yDVT28/gemlZBg6theaMkWZjCZzv1/img.png)
이번에는 상점을 만들 거예요. 상점을 만들면 인벤토리가 필요한데 인벤토리는 유데미에 있는 강의를 참고했어요 https://www.udemy.com/course/unreal-engine-5-ui-design-advance-inventory-system-with-ue5/ 위에 링크에 있는 강의를 보고 제 스타일로 C++로 바꾸고 멀티플레이에서 가능하게 했습니다. 그래도 강의 기반으로 한 거라 여기에 올리기는 그래서 상점으로 넘어갈게요. 인벤토리는 이미 구현한 상태입니다! 자 먼저 상점 UI부터 할게요. 아이템 슬롯을 만들 거예요. 사용자 위젯을 만들어줄게요. 사이즈 박스를 추가해 줄게요. 디자니어 스크린으로 바꿔주고 사이즈를 위와 같이 바꿔줄게요. 그다음 버튼을 추가해 줄게요. 그다음 위와 같이 설정해 줄게..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bFNNLX/btsDJS4R4FP/XD2FzWdRNSmDT8raPr4Trk/img.png)
저번에는 데이터 에셋을 만들었고 이 데이터 에셋 기반으로 스킬 정보를 화면에 띄우려고 해요. 그러면 위젯에 이미지를 바꿔야겠죠. 위젯은 모두 WidgetController에 의존하니 \ WidgetController 를 작성해 줄게요 // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "UObject/NoExportTypes.h" #include "JHWidgetController.generated.h" class USkillInfo; class USkillComponent; USTRUCT(BlueprintType) struct FW..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/uYzSI/btsDKxTvdzu/ZDkppnB6sF2KdEMXdo1KW0/img.png)
자 이번에는 DataAsset을 이용하여 스킬정보를 관리해 보려고 해요. DataAsset은 주로 데이터의 관리와 재사용성을 향상시키기 위해 사용해요. DataAsset을 이용하면 나중에 보기도 편하고 관리하기도 편하기때문에 데이터에셋으로 관리할게요. 먼저 데이터에셋 클래스를 만들어볼게요 DataAsset클릭 후 다음 생성 해줄게요. 그리고 헤더파일에 아래와 같이 작성해 줄게요 // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Engine/DataAsset.h" #include "SkillIInfoEnum.h" #include "..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/stBjo/btsDIzDYxLq/btkUTcfXphfGBbKKEWcYY1/img.png)
이번에는 저번에 만든 스킬창을 화면에 보이게 할 거예요 그럼 먼저 HUD클래스를 추가해 줄게요. HUD는 클라이언트만 갖고 있답니다. 클래스를 만들어줄게요 생성해 주시고 이제 HUD클래스에 Widget을 만들고 Addtoviewport 하면 돼요 하지만 위젯은 의존성을 하나만 갖고 있었으면 좋겠어요 그래서 위젯이 의존하는 WidgetController를 하나 만들어줄라고 해요. 위젯은 앞으로 만들면 여러 개를 만들 텐데 그 위젯이 필요할 때마다 캐릭터 클래스 의존하고 스킬 의존하고 위젯마다 의존하고 있으면 나중에 유지보수가 정말 힘들어지기 때문에 위젯은 기능들을 모아둔 클래스인 WidgetController를 따로 만들어서 관리하려고 합니다. 이렇게 하면 만약에 캐릭터 클래스에서 코드가 변경되면 캐릭터 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ba18S9/btsDNIlP6Uj/2wdLoYrX98mP3qNCwMOYKK/img.png)
이번에는 저번에 만든 스킬슬롯을 스킬오버레이를 만들어서 배치해 줄게요 위젯 블루프린트를 먼저 만들어줄게요 만들고 나서 Custom으로 바꿔줄게요 너비는 580 높이는 135로 해줄게요 그런 다음에 overlay추가해 줄게요 그러면 오버레이 크기가 아래와 같이 바뀌는 거를 알 수 있어요. 저희가 만든 스킬을 8개니깐 세로박스를 추가해 줄게요 세로박스는 위에서 아래로 쌓여요 아래와 같이 설정해 줄게요 그런 다음에 세로박스를 부무로 가로박스 두 개를 추가해 볼게요 가로박스를 둘 다 가로 세로 채워주시고 채우기를 클릭해 주시면 정확한 비율로 2개가 나눠 저요. 그럼 여기에 스킬 슬롯을 추가해 볼게요 채우기를 누르시고 0.25로 할게요 그렇게 4개를 추가해 줄게요 4개를 만들면 위에 스킬 4개가 채워진 거를 볼 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/sxfhq/btsDHqUWn3A/MuWYjOij8VSywOOTqqbKx1/img.png)
이어서 스킬 위젯과 포션위젯을 만들어볼게요 먼저 스킬 슬롯부터 만들어볼게요. 위젯 블루프린트를 생성해줄게요. 그럼 다음에 사이즈 박스를 추가해줄게요 크기는 70X70으로 해주고 화면은 디자이너 스크린으로 해줄게요 그위에 작업할거기 떄문에 오버레이 먼저 추가해줄게요. 그런 다음에 보더를 추가해줄게요. 배경으로 쓸 생각이에요 알파를 줘서 약간 투명하게 해줬어요! 그런다음에 위에 이미지를 추가해볼게요 이미지는 스킬에 따라 바껴야하니깐 이름을 바꾸고 변수 여부 체크해줄게요. 그런다음에 밋밋한관계로 테두리도 추가해줄게요 border 추가해줄게요 일단 이미지를 가리고 아래와 같이 설정해주시면 이런 테두리가 생겨요 자 이제 마지막으로 TEXT만 추가해줄게요 텍스트를 추가하고 가로를 가운데 세로를 하단으로 하고 크기를..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/rjdUq/btsCWLqX9D9/X2bYbQ8uAlhl203H3XGij0/img.png)
이번시간에는 HUD를 만들거에여 게임을 하면 게임화면에 플레이어 레벨이라던지 체력이 보여야겠죠? 이번시간에 만들어볼게요 먼저 위젯 블루프린트를 만들어줄게요. 유저 인터페이스 -> 위젯 블루프린트 클릭하시고 사용자 위젯으로 만들게요 클릭하시고 이름을 지어주세요 보통 접두사WBP_이름으로 지어요 위젯 블루프린트로 가서 캔버스 패널 추가해줄게요 드래그 해주시고 저는 간단하게 체력바부터 만들어볼게요 프로그레스 바 만들어줄게요. 드래고 해주시고 원하는 위치에 넣어줄게요. 저는 왼쪽대각선 아래에다 넣을게요. 원하는 위치에 넣어주시면 돼요 앵커는 대각선 아래로 해줄게요. 그리고 체력바가 밋밋하니깐 꾸며볼게요. 먼저 보통 체력바는 빨간색이니깐 빨간색으로 바꿔줄게요. 컬러와 퍼센트를 올려주면 체력 퍼센트만큼 빨간색으로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bQWrtm/btsC83LVjGe/kdK9EFIf3rA7tjZoV4j9x0/img.png)
이번시간에는 스킬을 만든 거를 게임에서 작동되게 할 거예요. 스킬을 8개를 만들어왔는데요, 키보드를 누르면 스킬이 작동되게 해야돼요 그러면 Input 바인딩을 해야돼여 키보드를 누르면 스킬이 나갈 수 있게요. 먼저 캐릭터 클래스에 8개의 액션을 추가해 줄게요. /** Q스킬 액션 */ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")) UInputAction* QSkillAction; /** W스킬 액션 */ UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Input, meta = (AllowPrivateAccess = "true")..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/byW4Kf/btsCJkmEokX/ygHJhFJS5PKSRAG4a2GyF0/img.gif)
이번에도 스킬을 만들 거예요 저는 8개의 스킬을 사용한 전투방식을 생각하고 있어요 이번 스킬을 마지막으로 올리고 나머지 6개의 스킬 만드는 법은 비슷하니 안 올리도록 할게요. 두 번째 스킬을 만들어볼게요 두 번째 스킬은 이동기 및 공격스킬이에요 이렇게 앞으로 나가면서 공격하는 스킬이에요 근데 뭔가 쫌 밋밋해서 꾸며볼게요 먼저 사운드 먼저 넣어볼게요 저번시간 마찬가지로 노티파이를 추가해 줄게요 사운드를 재생하고 싶은 위치에 맞혀주면 그 시간대에 자동으로 재생돼요. 두 번째로는 이동기치곤 너무 느린 거 같아서 속도 좀 올리려고 해요. 왼쪽 에셋 디테일에 속도 스케일이 1로 설정되어 있는데 쫌 빠르게 올려볼게요 1.8로 올려볼게요 확실히 조금 빨리 진 거 같아요 저는 만족해서 1.8로 할게요 루트모션을 활용할..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/nc48s/btsCAOVlKWR/hHUcvhvk1Av3D3BlHVhCB1/img.gif)
이번에는 스킬 하나를 만들어볼게요! 먼저 스킬 애니메이션이 필요한대 저는 Mixamo에서 가져올게요 여기는 공짜로 애니메이션을 갖고올 수 있어서 좋은데 대신 리타겟팅을 해줘야돼여 아래 링크를 통해 리타겟팅 하는법 올려둘게요 https://iiii4.tistory.com/170 [UE5] 애니메이션 리타겟팅 스켈레톤 메시가 다른 애니메이션을 쓰고 싶을 때 쓰는 리타겟팅 알아보게요 먼저 애니메이션->리타기팅->IK 릭은 선택해줍니다. 디테일에서 메시를 선택해줄게요 이젠 뼈를 서로 비슷하게 맞쳐 iiii4.tistory.com 글고 저는 루트모션을 사용할건데 Mixamo에서 가져온 메시는 루트가 없어요 방법은 아래 링크를 통해 하실 수 있어요 https://iiii4.tistory.com/169 [UE5] 언..