목록전체 글 (189)
안선생의 개발 블로그
![](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")..
언리얼은 C++기반으로 만들어진 상용엔진이다. C++을 공부할 때 함수 매개변수에 객체를 전달할라 할 때 참조를 이용해야 절약이 된다는 소리를 많이 들었습니다. 하지만 언리얼은 객체를 전달 할 때 포인터를 사용하여 전달합니다. 그래서 한번 알아봤습니다. 먼저 데이터를 함수에 전달하는 방법에는 3가지가 있습니다. 값 기준(기호 없음), 참조 기준(& 기호 포함) 및 포인터 기준(* 기호 포함)이 있습니다. 따라서 이러한 함수 변수 유형을 사용하는 이유를 이해하려면 먼저 함수가 실제로 작동하는 방식을 이해해야 합니다. 함수를 호출하면 프로그램은 8바이트(함수 주소)를 스택에 배치합니다. 이는 프로그램 코드에서 현재 위치를 추적합니다. 함수에 매개변수가 없으면 해당 8바이트만 스택에 푸시되고 프로그램이 완료되..
![](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] 언..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjxlTx/btsCwRlC3RN/Qtas6XXbDakpnQs3zl4TCk/img.png)
스켈레톤 메시가 다른 애니메이션을 쓰고 싶을 때 쓰는 리타겟팅 알아보게요 먼저 애니메이션->리타기팅->IK 릭은 선택해줍니다. 디테일에서 메시를 선택해줄게요 이젠 뼈를 서로 비슷하게 맞쳐줄거에요 Pelivs(Hips) 을 루트로 설정해줍니다. 뼈마다 새 리타깃 체인을 만들어줄거에요 만들 때 뼈가 상대방이랑 비슷해야 똑같이 움직이겠죠? 하나하나 만든것보다 3개를 합쳐서 하는게 낫겟죠 단 목뼈는 목뼈끼리 해야겠죠.. 아래와 같이 만들어줍니다. 이제 리타기팅 할 다른 객체도 똑같이 해줍니다. 저는 위에 캐릭터를 애니메이션을 아래 캐릭터한테 주고싶으니 애니메이션 -> 리타기팅 -> IK 리타기터를 선택해줍니다. 그다음 디테일 창에서 소스(넘겨줄 캐릭터) 타겟(받을 캐릭터)를 설정해주고 타겟 오프셋을 옮겨줄게요 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/soPJU/btsCtnXYXaj/yqkSzUaSZZq3BJnlJZJ40k/img.png)
언리얼에서 애니메이션을 가지고싶을 때 Mixamo에서 가져올 수 있다. 하지만 Mixamo는 매쉬에 Root가 없다. 만드는법을 알아보자. 1. 먼저 깃허브에 들어가서 설치 https://github.com/enziop/mixamo_converter GitHub - enziop/mixamo_converter: Blender addon for converting mixamo animations to Unreal 4 rootmotion Blender addon for converting mixamo animations to Unreal 4 rootmotion - GitHub - enziop/mixamo_converter: Blender addon for converting mixamo animations t..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/n9bIB/btsClX5HaQr/662md7yN1EOx5mgojTZ4T1/img.png)
음 이번에는 플레이어 컨트롤러를 만들고 마우스 커서를 보이게 해서 마우스로 움직이게 해볼게요. 탑다운 형식으로 만들려고 합니다. 저도 공부하면서 하는거라 틀릴수도 있습니다 댓글로 알려주시면 감사하겠습니다!! 먼저 PlayerController클래스를 만들어줍니다. 먼저 헤더파일입니다. // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameFramework/PlayerController.h" #include "JH_PlayerController.generated.h" class USplineComponent; /** * */ U..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eXdDtf/btsCf3S7D9X/iw8lVcP6KjRCPqIhQk5RZ1/img.png)
먼저 캐릭터 에셋 부터 구해올게요! 캐릭터 에셋은 원하는거 하시면 돼여 저는 언리얼에서 무료로 제공해주는 파라곤 에셋을 다운받았습니다. 프로젝트에 추가해줄게요 캐렉티 블루프린트는 콘텐츠 -> ThirdPerson ->BluePrint에 있어요 그런 다음 다운받은 스켈레탈 메시로 바꿔줘야 겠죠? 캐릭터 스켈레탈 메시를 바꿔줄게요 그런다음 메시 전용 애니메이션 필요하니 하나 만들어줄게요 우클릭 ->애니메이션 -> 애니메이션 블루프린트 클릭하시고 하나 만들게요 먼저 이벤트그래프에서 캐릭터 블루프린트와 Movement가져올게요 EventBlueprintInitalizeAnimation은 애니메이션 초기화 시 시작되요 즉 처음 한번만 실행되요. TryGetPawnOwner는 이 애니메이션 소유자를 반환해요 즉 저..
리블렉션이란? 리플렉션(Reflection)은 프로그램이 실행시간에 자기 자신을 조사하는 기능입니다. 리플렉션을 통해 엔진은 객체가 다른 객체에 의해 참조되고 있는지 여부를 결정할 수 있으므로, Garbage Collection을 실행 가능할 수 있게 한다. 리플렉션은 블루프린트 시스템, 에디터 도구, 네트워킹, 시리얼라이제이션 등 다양한 부분에서 활용됩니다. 이것을 "언리얼 프로퍼티 시스템"이라고 하는데 메크로 함수 형태로 되어 있으며 이것을 통해 GC(Garbage Collection)나 블루프린트와 연동 등을 할 수 있습니다, 리플렉션 알리는 방법 헤더에 리플렉션이 있는 유형으로 마킹을 하려면, 파일 상단에 특수한 include 를 추가해 줘야 합니다. 그러면 리플렉션이 있는 유형은 이 파일을 고려..