본문 바로가기
반응형

Unreal176

Unreal C++ AnimNotifyState 사용 하기 [Unreal/C++] AnimNotifyState 사용 하기Anim Notify State (애님 노티파이 스테이트), 또는 Notify State (노티파이 스테이트)는 위의 표준 노티파이와 비슷합니다. 다른 점은 begin(시작), tick(틱), end(끝) 세 개의 이벤트가 있습니다. 단순히 시작해서 노티파이 시작과 끝 지점에 발동되고, 애니메이션에서 시간이 다가왔을 때 그 안의 이벤트 그래프 가 발동됩니다. 틱은 끝 이벤트에 도달할 때까지 모든 애니메이션 업데이트를 발동합니다. 보통 노티파이와 노티파이 스테이트와 큰 차이점은, 자체 독립적인 블루프린트 라는 점입니다. 애니메이션 노티파이 스테이트를 사용해 보겠습니다.AnimNotifyState를 상속받은 C++ 클래스를 생성합니다. C++ 클래.. 2023. 11. 30.
Unreal C++ AnimNotify 사용 하기 [Unreal/C++] AnimNotify 사용 하기애니메이션 프로그래머는 Animation Notification (애니메이션 노티파이), 또는 AnimNotify (애님 노티파이), 줄여서 그냥 Notify (노티파이)를 통해 애니메이션 시퀀스 도중의 특정 지점에 이벤트가 발생하도록 구성할 수 있습니다. 노티파이는 걷기나 달리기 도중의 발소리같은 이펙트 추가 및 애니메이션 도중 파티클 시스템을 스폰시키는 데 주로 사용됩니다. 애니메이션 노티파이를 사용해 보겠습니다.AnimNotify를 상속받은 C++ 클래스를 생성합니다. C++ 클래스 생성시 아래와 같은 코드가 작성됩니다.애니메이션 몽타주에서 Notify를 추가하기 위해서 UAnimNotify에 정의되어 있는 함수를 오버라이드 해야합니다.#pragm.. 2023. 11. 30.
Unreal Layered Blend per bone 본 별로 레이어 블렌딩 [Unreal] Layered Blend per bone 본 별로 레이어 블렌딩 본 별로 레이어 블렌딩을 할 때에는 기본 포즈와 블렌딩 포즈가 필요하다.보통 캐릭터의 움직임을 DefaultPose로 사용하고 상체 애니메이션을 UpperBody로 설정하여 허리를 기준으로 블렌딩한다.  Bone 을 기준으로 블렌딩할때에는 노드를 클릭하여 설정을 조금 해줘야한다.본 별로 레이어를 블렌딩 하는 노드를 클릭하여 디테일창에서 분기 필터에 뼈 이름을 설정한다.뼈의 이름은 블렌딩 기준 뼈를 설정하며 여기서는 허리춤에 있는 spine_01로 설정한다.다른 뼈를 사용할 경우 해당 캐릭터의 Skeleton Tree에서 이름을 확인하고 그에 맞는 설정을 해주면 된다. 애니메이션의 경우 몽타주를 주로 사용하는데몽타주에서 슬롯 .. 2023. 11. 28.
Unreal C++ CSV로 만든 데이터 DataTable로 가져오기 [Unreal/C++] CSV로 만든 데이터 DataTable로 가져오기 본 게시물에서는 Excel을 이용하여 애니메이션 정보를 가지고 있는 CSV 파일을 만들고 Unreal 임포트를 통해 DataTable로 변환하여 사용하며, 만들어진 DataTable을 C++ 코드로 불러오는 방법을 기술합니다. 애니메이션을 위한 CSV 파일을 준비합니다.A1 컬럼은 비워둡니다. 언리얼 엔진에서 파일을 import 할 때, 첫 번째 컬럼은 건너뛰어 버립니다.첫 번째 컬럼 값은 Row ID 를 나타내고 데이터 테이블에서 Row 를 구분하기 위해 필요합니다.Type과 Animation 등 RowName은 C++ 코드에서 struct 변수명으로 사용될 예정입니다.파일 -> 다른이름으로 저장 -> CSV (쉼표로저장) -> .. 2023. 11. 28.
Unreal C++ Widget 변수 사용하기 [Unreal/C++] Widget 변수 사용하기 1. UserWidget C++ 클래스 만들기2. UserWidget C++ 클래스 기반 블루프린트 만들기3. 팔레트에서 Widget 배치하기4. 변수 인지 체크하기5. 클래스에서 위젯 이름과 똑같은 변수 만들기6. 변수 사용하기 이 글에서는 UProgressBar 위젯을 만들고 변수로 가져와 값을 변경합니다. 위젯을 위한 UserWidget C++ 클래스를 만듭니다.콘텐츠 브라우저에서 위젯 블루프린트를 만들고 부모를 만들어진 클래스로 설정합니다.부모를 지정하지 못한경우 블루프린트 부모변경을 이용할 수 있습니다.오른쪽 상단에 부모 클래스를 확인하고 디자이너탭이 보이는지 확인합니다.C++ 클래스를 우클릭해서 기반 블루프린트를 생성한 경우 디자이너 탭이 보이.. 2023. 11. 26.
Unreal C++ LogBlueprint: Error: AssetLog .uasset: Compiler (에셋) 타입의 "AssetsName" 필수 위젯 바인딩을 찾지 못했습니다. [Unreal/C++] LogBlueprint: Error: [AssetLog] .uasset: [Compiler] (에셋) 타입의 "AssetsName" 필수 위젯 바인딩을 찾지 못했습니다.위젯의 변수와 C++ 변수의 이름이 맞지 않아서 생기는 에러에러를 발생시켜 로그를 확인하였습니다.LogBlueprint: Error: [AssetLog] F:\Projects\MainProject\Content\Characters\TwinBlast\Widgets\WBP_HelthPointBar.uasset: [Compiler] 프로그레스 바  타입의 "PB_HPBa" 필수 위젯 바인딩을 찾지 못했습니다. Fatal error! Unhandled Exception: EXCEPTION_ACCESS_VIOLATION wr.. 2023. 11. 26.
Unreal C++ CreateWidget과 AddToViewport() [Unreal/C++] CreateWidget과 AddToViewport() C++ 클래스 코드를 이용하여 화면에 Widget띄우기 1. 위젯 클래스 생성2. 위젯 클래스 기반 블루프린트 생성3. 위젯 디자인4. 코드 작성 먼저 UserWidget을 상속받는 C++ 클래스를 하나 만들어 줍니다.별다른 코드 없이 디자인 기능만 갖춘 위젯을 화면에 띄울 예정입니다. 콘텐츠 폴더에서 위젯 블루프린트를 하나 생성합니다.(클래스 우클릭 후 기반 블루프린트 만들기를 하면 디자이너 탭이 보이지 않는 문제가 있습니다.)생성한 클래스를 상속받아 위젯 블루프린트를 만듭니다.위젯 블루프린트의 접두사는 WBP로 시작합니다. 위젯 블루프린트를 디자인 합니다.똑같이 만들 필요는 없으며 캔버스 패널위에 이미지 하나만 올려두셔도 됩.. 2023. 11. 26.
Unreal C++ CreateWidget시 Fatal Error! [Unreal/C++] CreateWidget시 Fatal Error! 분명 코드를 잘 작성했는데 에러가 뜬다면CreateWidget이 생성자에서 사용되고 있는지 확인해봐야한다. CreateWidget과 AddToViewport()를 진행할 때 BeginPlay에 넣어보자. 2023. 11. 26.
Unreal 캐릭터 AimOffset 구현하기 [Unreal] 캐릭터 AimOffset 구현하기에임 오프셋은 캐릭터의 무기 조준시 도움이 되는 블렌딩가능 포즈 시리즈가 저장된 애셋입니다.여러가지 면에서 에임 오프셋은 BLend Space(블렌드 스페이스)와 똑같습니다. 캐릭터를 구현할 때 이동 기능과 회전 기능이 있다면 상향 가운데, 가운데, 하향 가운데 3개의 AimOffset만으로 충분합니다. 한 장소에 멈춰 있는 경우에만 9방향이나 15방향 AimOffset 기능 구현을 고려하는 것이 좋습니다. 준비1. 사용하려는 캐릭터의 스켈레탈 메시와 기본 애니메이션2. 에임 오프셋으로 만들 최소 9방향 애니메이션 본 글에서는 15방향 에임 오프셋을 제작할 예정입니다. 에임 오프셋은 애디티브 에임 타입의 메시 스페이스를 가진 애니메이션만 받습니다! 에임 오.. 2023. 11. 24.
Unreal 캐릭터 걷기, 뛰기, 전력질주 Blend Space 구현 [Unreal] 캐릭터 걷기, 뛰기, 전력질주 Blend Space 구현 블렌드 스페이스는 다수의 애니메이션 또는 포즈를 1차원 또는 2차원 그래프로 구성하여 블렌딩할 수 있는 에셋입니다. 그런 다음 게임플레이 입력 또는 다른 변수를 통해 블렌딩을 제어할 수 있는 애니메이션 블루프린트 내에서 이 그래프를 레퍼런스할 수 있습니다. 블렌드 스페이스를 사용하면 거의 모든 유형의 블렌딩 배열을 애니메이션에 사용할 수 있습니다. 프로젝트에 다양한 방향의 스켈레탈 메시(Skeletal Mesh) 또는 유사한 애니메이션 시퀀스(Animation Sequence) 를 임포트한 상태여야 합니다.블렌드 스페이스는 여러 포인트에서 그래프를 따라 애니메이션을 지정하는 에셋입니다. 이 포인트를 샘플(sample) 이라고 합니다.. 2023. 11. 22.
Unreal C++ UE Project Editor 크래시가 생겨 닫힐 것입니다. [Unreal/C++]  UE Project Editor 크래시가 생겨 닫힐 것입니다.Fatal error  C++로 작업하다보면 간혹 보이는 문제입니다.경험상 보통 null체크가 정상적으로 이뤄지지 않았거나 C++에서 수정한 내용이 에디터에 반영되지 않았을 경우 발생합니다. 첫째로 시도할 것은 에디터를 끄고 다시 실행하는 것입니다.두번째로는 C++의 잘못된 코드를 바로잡고 실행하는 것입니다. C++코드 중 어디에서 에러가 발생한지 모르겠다면프로젝트 폴더의 에디터 로그를 살펴보는 것이 좋습니다.로그를 확인할 수 있는 방법은ProjectFolder->Saved->Logs->에러가 발생한 시점의 text파일을 열어 확인하는 것 입니다. 보통 제일 하단에서 에러가 발생하므로 확인이 쉽습니다. Message d.. 2023. 11. 22.
Unreal C++ AnimInstance 구현 [Unreal/C++] AnimInstance 구현 AnimInstance를 상속받는 클래스 생성 코드 작성// MyAnimInstance.h#pragma once#include "CoreMinimal.h"#include "Animation/AnimInstance.h"#include "DefaultCharacterAnimInstance.generated.h"UCLASS()class MAINPROJECT_API UDefaultCharacterAnimInstance : public UAnimInstance{ GENERATED_BODY() // UAnimInstance에 작성된 BeginPlay와 update를 오버라이드public : virtual void NativeBeginPlay() override; .. 2023. 11. 22.
반응형