728x90
반응형

언리얼 25

11. Function (2)

1. Passing Arrays to Function 함수의 인자로 배열을 넘길 수 있다 반환형 함수이름(타입 배열이름[]);로 함수를 선언하고 호출 시 인자로 배열 이름을 넣어준다 함수이름(배열이름); 배열의 이름은 배열 0번째 index의 주소 (배열의 시작주소)를 의미한다 따라서 인자로 배열을 넘기게 되면 기존의 일반 value를 인자로 넘길때와 달리 사본이 전달되지 않고 배열의 시작 주소가 전달되게 된다 따라서 배열을 인자로 넘기게 되면 함수 내부에서 원본 수정이 가능하기 때문에 조심해야 한다 이때 const를 매개변수 앞에 선언해주면 원본 수정이 불가능한 rodata가 된다 인자로 배열의 이름 (배열의 시작주소)를 넘기기 때문에 함수는 배열의 크기를 알 수 없다 따라서 배열의 크기도 같이 전달해..

C++ 2024.01.26

10. Function (1)

1. What is Function? C++개발을 할 때는 C++ STL의 함수나 클래스, Third-party Library (Unity, Unreal, Cocos2D 등), 직접 만든 함수나 클래스를 사용하여 개발을 한다 함수를 사용하여 기능들을 모듈화 하고 여러 부분에 동일한 기능을 사용해야 할 때 사용하며 이를 통해 크고 복잡한 프로젝트를 관리하기 쉽게 개발 할 수 있다 (디버깅, 가독성 등에 좋다) 함수는 추상화 하는것이 중요하다, 함수 내부의 코드가 어떻게 돌아가는지 상관없이 함수 호출시 함수 이름 의미 그대로 실행되어야 한다 #include #include //standart library 함수를 사용하기 위한 헤더파일 #include //C++에서 수학관련 함수를 사용하기 위한 헤더파일 #..

C++ 2024.01.25

17. Jump Animation

1. Jump Character를 Jump 시키기 위해서 우선 InputAction부터 만들어야 한다 Jump같은 경우에는 InputValue가 눌렀는지 안눌렀는지 bool값만 있으면 되기 때문에 Digital (bool)로 ValueType을 지정해준다 C++에서 만든 InputAction을 넣어주기 위해 변수로 선언을 해주고 Bind할 함수도 선언 해준다 UPROPERTY(EditAnywhere, Category = Input) UInputAction* JumpAction; void Jump(const FInputActionValue& Value); SetupPlayerInputComponent()에서 EnhancedInputComponent로 InputAction에 원하는 함수를 Bind해준다 vo..

Unreal 2024.01.24

16. Anim Instance

1. Anim Instance AnimBP의 Parent Class는 UAnimInstance클래스이다 따라서 C++ Class로 생성하고 싶다면 부모클래스를 UAnimInstance로 지정해야 한다 AnimBP는 게임을 실행하지 않아도 계속해서 Tick이 돌고 있다 (에디터를 실행하지 않아도 AnimBP의 UpdateAnimation 노드는 계속 실행중이다) 이는 C++에서도 마찬가지이다 따라서 nullptr 참조에 굉장히 조심해야 한다 (바로 크래시 발생할 수 있음) 따라서 AnimInstance Class작업시에는 LiveCoding보다 Editor를 닫고 작업하는걸 추천한다 C++에서 다음 이벤트들은 UAnimInstance에서 override하여 사용할 수 있다 #include "CoreMini..

Unreal 2024.01.23

14. The Character Class & Hair And Eyebrows

1. Hair & Eyebrows UE에는 GroomAsset이 존재한다 이 GroomAsset을 이용하여 Hair나 Eyebrows들을 추가할 수 있다 이때 GroomAsset이 Load되지 않는다면 다음과 같은 Plugin을 추가해주어야 한다 (UE5.3 기준) 이러한 GroomAsset들을 사용하려면 GroomComponent를 Attach 해주어야 한다 (UGroomComponent) UGroomComponent는 바로 사용할 수 없고 HairStrandsCore와 Niagara라는 Module을 프로젝트.Build.cs파일에 추가해주어야 한다 Module을 추가하고 나면 uproject File에서 Generate를 해주고 uproject File 더블클릭으로 Module Rebuild를 해주어..

Unreal 2024.01.13

13. RotationMatrix

1. Rotation Matrix (회전행렬) Controller에는 순방향 벡터는 존재하지 않지만 회전은 존재한다 따라서 회전행렬을 이용하여 Controller의 해당 회전을 기준으로 하는 방향 벡터를 구해야 한다 예를들어 Controller를 Y축, Z축으로 45도 회전시켰다고 가정하면 다음과 같은 그림으로 표현할 수 있다 (Pitch 45, Yaw 45, Roll 0) 아래는 기본적인 회전행렬이다 회전행렬의 cos, sin을 이해하기 위해 아래의 그림에서 설명을 하면 V벡터를 Θ만큼 회전 시킨 Vt 벡터를 구하기 위해서는 Vt의 Y, X를 알아야 한다 이때 V 벡터를 Unitvector 생각하면 y = Sin(Θ), x = Cos(Θ)라는 결과를 얻을 수 있다 회전행렬에 V벡터를 곱하기 위해 V벡터..

Unreal 2024.01.12

12. The Character Class

1. Character Class ACharacter는 APawn을 상속받기 때문에 Pawn,Actor의 모든 기능을 사용할 수 있다 Class 생성 시 ACharacter를 부모 클래스로 지정하여 Character클래스를 생성할 수 있다 ACharacter클래스를 부모클래스로 BP클래스를 만들게 되면 APawn과 다르게 CapsuleComponent, Arrow Component, MeshComponent, CharacterMoveComponent가 Default로 생성되게 된다 ArrowComponent는 방향을 알려주는 Component이다 (전방 방향인 X축을 바라본다) CapsuleComponent는 ACharacter의 RootComponent로 지정되어 있다 (ACharacter클래스에 존재..

Unreal 2024.01.12

9. Character & String

1. Character Functions #include //문자의 종류를 T/F로 판단하는 함수 및 소문자 대문자로 변경해주는 함수를 제공한다 (c-style character based functions) int main() { char c = 'A'; isalpha(c); //c가 문자이면 true isalnum(c); //c가 문자거나 숫자이면 true isdigit(c); //c가 숫자면 true islower(c); //c가 소문자면 true isprint(c); //c가 print가능한 문자면 true ispunct(c); //c가 쉼표(,) 마침표(.) 등의 문장기호면 true isupper(c); //c가 대문자면 true isspace(c); //c가 space면 true tolower..

C++ 2024.01.08

10. The Pawn Class & Enhanced Input System (2)

1. Enhanced Input System 우선 새롭게 InputAction과 InputMappingContext를 만들어준다 InputMappingContext를 이용하여 InputAction을 연결해준다 IA_Move라는 InputAction을 W키로 Mapping시킴 이제 PlayerController의 EnhanceInputLocalPlayerSubSystem에서 만든 InputMappingContext를 Add해주어야 사용이 가능하다 만든 InputAction을 Event로 사용할 수 있다 이를 C++로 변환하면 아래와 같다 InputMappingContext는 UInputMappingContext타입이다 //Bird.h class UInputMappingContext //전방선언 UPROPE..

Unreal 2024.01.03

9. The Pawn Class & Enhanced Input System (1)

1. Binding Input 게임을 시작하게 되면 AController가 생성되고 Player에 할당된다 그리고 Controller는 Possess(빙의)할 Pawn을 선택한다 Pawn은 Actor와 다르게 Controller에 의해 빙의될 수 있다 Pawn에 Controller가 빙의하면 해당 Pawn을 제어하고 입력을 받을 수 있다 Pawn은 Auto Possess Player라는 변수가 있고 이를 Player0로 지정하면 Pawn의 Player를 월드의 첫번째 Player로 지정할 수 있다 (멀티플레이 게임같은 경우 순서대로 Player0, Player1, Player2로 늘어나게 된다) Pawn의 DetailTab에서 Auto Possess Player를 지정할 수 있다 (기본은 Disabled..

Unreal 2024.01.03
728x90
반응형