목록분류 전체보기 (34)
공부용 이모저모
이득우 C++ 9장 내용 콜리전 설정(충돌설정) 종류 1.스태틱 메쉬 에셋 : 스태틱 매쉬(가만있는 메쉬)에 충돌설정을 심는 방법.비주얼 적인 표현이 가능하다 2.도형 컴포넌트 : 구체,박스,캡슐(캐릭터) 등의 도형에 충돌을 설정한다. 주로 스켈레탈 메쉬(다이나믹 메쉬)에 쓰인다. 3.피직스 에셋 : 캐릭터의 각 관절 등에 충돌영역을 심어 물리를 설정.스켈레탈 메쉬에서만 쓰인다. 콜리전 채널 - 콜리전 할 대상을 정할 수 있다. 채널 종류 WorldStatic - 정적 배경액터에 쓰이는 콜리전 채널. 주로 스태틱 매시 컴포넌트 사용 WorldDynamic - 움직이는 액터용 콜리전 채널, 블루 프린터에 속한 스태틱 매시 컴포넌트에 주로 사용. Pawn - 플레이어의 조작 객체.캡슐 컴포넌트가 기본으로 되..
참고 사이트 : https://mingyu0403.tistory.com/247 https://www.youtube.com/watch?v=9yftOwWp48A [Unreal BP] 잔상 효과 만들기 방법 1. 액터를 하나 만든다. 2. 컴포넌트에 PoseableMesh를 추가하고, 설정 값을 바꾼다. 3. 이벤트가 들어오면 2번에서 만들었던 액터를 생성한다. (잔상이니까 내 위치에 생성.) 4. 생성하고 난 뒤, mingyu0403.tistory.com 우선 움직일때마다 액터를 생성하는 부분부터 시작한다 일정 시간마다 부르기 위해 타임라인을 만들어본다 우선 타임라인을 이용한 CurveFloat가 어떻게 나오는지 체크한다. ABCharacter.h 추가사항 #include "Components/Timelin..
이득우의 언리얼 C++ - 챕터 8 애니메이션 몽타주 캐릭터에 공격을 넣기위해 연속공격을 누르고 공격하는 애니메이션을 만든다. 몽타주는 섹션 단위로 애니메이션을 관리한다. 몽타주 : 촬영 화면이나 인쇄된 종이를 떼어붙혀 새로운 장면을 만드는 마술기법 언리얼에서는 애니메이션들을 자르고 붙이는 관리용으로 쓰인다. 모션이 끝난 동작이랑 같이 나오기 때문에 어색하게 이어진다. 디테일란에서 애니메이션 수치를 수정 텡리할 수 있다. 드래그로 애니메이션 간 순서를 조정 할 수 있다. ABAnimInstance.h public: void PlayAttackMontage();//몽타주 실행 private: UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = Att..
이득우의 언리얼 C++ 게임 개발의 정석 책보고 따라하기 점프는 Character에서 기본으로 세팅되어있다. GetCharacterMovement()->JumpZVelocity : 캐릭터의 점프 강도. 기본값은 420이다. AABCharacter::AABCharacter() { .... GetCharacterMovement()->JumpZVelocity = 800.0f;//800으로 임의 상승 } void AABCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) { PlayerInputComponent->BindAction(TEXT("Jump"), EInputEvent::IE_Pressed, this, &ACharacte..
https://docs.unrealengine.com/4.27/ko/AnimatingObjects/SkeletalMeshAnimation/AnimHowTo/CopyPose/ 다른 스켈레탈 메시에서 포즈 복사 Copy Pose From Mesh 애니메이션 블루프린트 노드를 사용하여 스켈레탈 메시의 포즈를 다른 스켈레탈 메시로 복사하는 법입니다. docs.unrealengine.com 언리얼 엔진은 쉐이더 코드 없이 2PASS를 지원하지 않는다. 하지만 알파 이미지의 경우 CustomDepth를 지원하지 않는등 2PASS를 위치인식 용으로든 사용해야 하는상황이 많이 나온다. 그래서 이번에 단순히 캐릭터를 따라하기만 하는 더미데이터를 만들어보기로 한다. 우선 복사할 캐릭터의 블루프린트를 복제한다. 그리고 원본..
게임이 시작됨과 동시에 세팅하기 프로젝트 세팅에서 처리하기 C++에서 처리하기 이게 가능한 이유는 맵에 있는 모든 액터들은 베이스가 되는 객체를 임의로 보관해놓기 때문이다. (그렇기 때문에 언리얼은 디폴트가 무거운편이다) 레벨 상에 놓여있는 객체를 플레이어로 설정하기 필드상에 놓인 여러캐릭터들을 바꿔가면서 빙의하고 싶을경우 참조: https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/HowTo/PossessPawns/Blueprints/ 블루프린트로 폰 빙의 블루프린트로 Possess 노드를 사용하여 다수의 캐릭터를 제어하고 전환하는 법에 대한 설명입니다. docs.unrealengine.com 액터를 여러개 배치해 놓고 숫자로 캐릭터를 바꿔보기로 ..
개요 기존 malloc이나 new연산자의 경우, 사이즈가 고정되지 않아 생성과 삭제를 반복할경우 메모리 단편화 현상이 생긴다. 대충 설명하자면 이런 형태이다. 여기서 중요한점은, 시스템에서 딱히 저 빈공간을 당겨주거나 하지 않는다는 것이다. 힙메모리 공간특성상 당연히 훨씬 큰 용량이 있겠지만, 사진처럼 용량이 12바이트라고 가정하자면, 남아있는 공간이 4바이트이기 때문에 int형을 한번더 만들 수 있다고 생각 할 수 있지만, 실제로는 떨어져있는 2바이트 공간 2개만이 남은것이라 생성이 불가능하다. 공간이 크다고 가정해도 저런식으로 크기가 다른 new와 delete를 반복한다고 하면 아래와 같은 모양이 나온다. PC에서도 이러한 것을 정리해서 공간을 넓히는 [디스크 조각모음]이라는 메뉴가 있다. 이런식으로..
DFS - 깊이 우선 탐색 연결된 노드를 계속 들어가며 재귀호출한다. #include #include #include using namespace std; bool visit[10] = { false };//방문여부 vector map[10]; int num; #pragma warning(disable:4996) void dfs(int v) { //방문하지 않은것만 체크한다 if (visit[v]) return; visit[v] = true; printf("%d", v); for (int i = 0; i < map[v].size(); i++) { int tmp = map[v][i]; //재귀함수로 다음으로 넘어간다. dfs(tmp); } } //양쪽 노드를 연결해준다 void AddLine(int a, ..