Unreal Engine - 캐릭터 앉기 및 구르기
·
Unreal Engine
1. 앉기1 - 1. 애니메이션애니메이션은 Game Animation Sample 프로젝트에서 이주해와서 리타게팅 시켰다.해당 프로젝트 사용할 때 5.4 버전을 다운로드해야 애니메이션 에셋들이 존재하는 것 같다.5.5 버전을 다운받으면 애니메이션이 없었음이후 모션매칭 관련해 정리한 글 을 따라서 진행하였고, Cache pose로 저장했다.Main State 안에서 조건에 따라 crouch가 되도록 수정하였다.crouch 도중 땅에 떨어지면, Locomotion으로 바꾸고 싶은데, 아직 해당 부분은 수정중이다.현재는 crouch 도중 땅으로 떨어져도 crouch 상태가 유지된다.트랜지션 룰은 isCrouch 라는 변수를 조건으로 주었다. (cpp에서 컨트롤하는 변수) 1 - 2. 설정cpp에서 moveme..
TIL day 51
·
TIL
1. 언리얼구현한 것들캐릭터 앉기 및 구르기캐릭터 애니메이션 관련 디버깅점프할 때 달리는 모션 나오는 것 수정구르기, 장전 시 공격 방지 (Anim Notify 사용)장전하다가 데미지 입으면 공격이 안되는 현상 수정캐릭터는 앞으로 가는 순간에만 sprint 가능Aim Offset추가 무기 샷건 구현구현하는데 문제가 있는 것zoom in 구현캐릭터의 앉기 및 구르기에 대한 글을 정리해 보았습니다.https://gbleem.tistory.com/109 Unreal Engine - 캐릭터 앉기 및 구르기1. 앉기1 - 1. 애니메이션애니메이션은 Game Animation Sample 프로젝트에서 이주해와서 리타게팅 시켰다.해당 프로젝트 사용할 때 5.4 버전을 다운로드해야 애니메이션 에셋들이 존재하는 것 같다..
TIL day 50
·
TIL
1. 코딩테스트오늘은 유니온 파인드 관련 문제를 하나 더 풀어보았습니다.https://www.acmicpc.net/problem/1976더보기#include using namespace std;int n, m;int Parent[202];int Rank[202];int Ans[202];int Find(int a){ if (Parent[a] == a) return a; Parent[a] = Find(Parent[a]); return Parent[a];}void Union(int a, int b){ int rootA = Find(a); int rootB = Find(b); if (rootA != rootB) { //B랭크가 더 크면 if (Rank[rootA] Rank[rootB]) { Pare..
Unreal Engine - TSubclassOf & StaticClass
·
Unreal Engine
완벽한 정보는 아닐 수 있다. 개발하면서 겪은 시행착오를 통해 얻은 내용을 정리한 글이다. 1. TSubclassOf주로 이 타입으로 선언하는 변수는 BP를 불러올 때 사용한다. 예를 들어, UI를 만들 때 BP로 만든 위젯 BP를 불러와서 사용하고 싶을때 사용한다.PlayerController에 아래와 같은 변수를 선언하고TSubclassOf HUDWidgetClass;생성자에서 아래와 같이 BP를 불러와서 사용할 수 있다.static ConstructorHelpers::FClassFinderHUDWidgetBP(TEXT("/Game/HJ/UI/WBP_HUD.WBP_HUD_C"));if (HUDWidgetBP.Succeeded()){ HUDWidgetClass = HUDWidgetBP.Class;}이..
Unreal Engine - 총기 반동, 데칼, 탄피 효과
·
Unreal Engine
1. 총기 반동 구현가장 쉬운 방법은 PlayerController의 AddPitchInput과 AddYawInput을 사용하는 방식이다.CalculateRecoilValue 함수는 Current Weapon이 가진 변수를 가져와서 캐릭터 변수에 저장하는 동작을 하는 함수이다.void APlayerCharacter::Recoil(){ APlayerCharacterController* PlayerCharacterController = Cast(GetController()); if (PlayerCharacterController) { CalculateRecoilValue(); float PitchRecoil = FMath::RandRange(MinPitchRecoil, MaxPitchRecoil); f..
UE5 Issues : 총기 스폰 및 포인터
·
Unreal Engine
이번 글의 주제는 인벤토리에 가지고 있는 총기와 현재 장착하고 있는 총기를 연동하는 방식에 대한 내용이다. 1. 전체적인 로직UI의 동작왼쪽은 무기를 획득하기 전에 모습이다. 이때는 UI의 버튼을 클릭하여도 아무 일도 발생하지 않는다.오른쪽은 무기를 획득한 후의 모습이다.무기는 각자 고유한 int32 변수를 가지고 있어, 어떤 무기인지 식별할 수 있게 하였다.무기를 획득하게 되면, GameInstance가 가지고 있는 TArray WeaponInventoryItem; 에 해당 인덱스를 저장하게 된다.UI 에서는 (GameState) 해당 인덱스를 체크해서, 존재하는 인덱스라면 오른쪽 처럼 UI에 존재하는 이미지의 투명도를 1로 만들어 보이게 해준다.이후 투명도가 1인 버튼은 클릭이 가능하게 되고, 클릭하..
TIL day 49
·
TIL
1. 코딩테스트어제 공부한 집합 관련 문제를 추가적으로 풀어보았습니다.https://www.acmicpc.net/problem/1717이 문제는 어제 유니온-파인드 구현해보는 문제와 거의 유사해서 어려움 없이 풀었습니다.주의할 점은 집합이 0 ~ n 까지이기 때문에 처음에 값을 초기화하는 부분에서 더보기#include using namespace std;int m, n;int Parent[1'000'002];int Rank[1'000'002];//부모 찾기int Find(int a){ if (Parent[a] == a) return a; Parent[a] = Find(Parent[a]); return Parent[a];}void Union(int a, int b){ int rootA = Find(a);..
UE5 Issues : 인벤토리 UI
·
Unreal Engine
이번 구현의 목적은 우리가 Tab키를 눌렀을 때, 인벤토리 UI가 켜지고 그 때 버튼을 클릭하여 해당 아이템을 사용하거나 장착하는 것이다. 1. 인벤토리 UI 관련 이슈Tab 키를 누른 상태에서 UI가 켜져있고, 땐 상태에서 UI가 꺼지도록 구현을 하고 싶어서 처음에는 Triggered된 순간 ShowInventory를 실행하고, Completed된 순간 StopShowInventory 를 실행하는 로직으로 시작했다.if (PlayerController->ShowInventoryAction){ EnhancedInputComponent->BindAction(PlayerController->ShowInventoryAction, ETriggerEvent::Started, this, &APlayerCharac..
집합 (유니온 - 파인드)
·
알고리즘(코딩테스트)
1. 집합집합은 코딩테스트나 알고리즘에서 순서와 중복이 없는 원소들을 가지는 자료구조를 뜻한다.예를 들어, A = {1 ,6, 6, 6, 4, 3} 일때 A를 집합으로 생각하면 {6,3,4,1} 이런 식으로 정리 될 것이다.코딩테스트에서는 주로 상호 배타적 집합에 집중하게 된다.상호 배타적 집합이란 A와 B라는 집합이 있을 때서로간의 교집합이 없는 집합을 뜻한다.그 이유는, 그래프 문제에 사이클을 확인하는 경우가 많은데 이때 상호 배타적 집합 개념을 활용해서 문제를 풀기 때문이다.  2. 집합의 연산주로 집합은 트리로 표현하게 된다. 또한 상호 배타적 집합을 나타내기 때문에 배열을 사용해서 구현한다.이때 각 집합은 대표 원소가 있어야 한다.대표 원소는 집합을 트리로 나타낼 때 루트가 되는 노드가 대표 원..
TIL day 48
·
TIL
1. 알고리즘오늘은 집합 단원에 대해 공부를 진행하였습니다.집합을 배열로 나타내는 방식과유니온 파인드 알고리즘을 공부하였습니다.https://gbleem.tistory.com/101 집합 (유니온 - 파인드)1. 집합집합은 코딩테스트나 알고리즘에서 순서와 중복이 없는 원소들을 가지는 자료구조를 뜻한다.예를 들어, A = {1 ,6, 6, 6, 4, 3} 일때 A를 집합으로 생각하면 {6,3,4,1} 이런 식으로 정리 될 것이다gbleem.tistory.com  2. 언리얼오늘은 어제 해결하지 못한 UI 관련 이슈를 모두 해결하고,추가적으로 애님 몽타주를 이용한 장전 모션과 데미지 모션을 추가하였습니다. 또한 캐릭터와 좀비간의 상호작용을 위한 ApplyDamage와 TakeDamage 함수를 구현하여 연동..