728x90
반응형

전체 글 38

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

15. Animation BP

1. Animation BP 다양한 애니메이션을 적용하기 위해서는 AnimBP를 사용해야 한다 (AnimBP는 UAnimInstance를 부모클래스로 한다) AnimBP를 생성할 때는 우선 Skeleton을 지정해야 한다 AnimBP를 생성하고 열어보면 좌측에 Viewport가 있고 EventGraph, AnimGraph가 있는걸 확인할 수 있다 EventGraph는 다른 BP의 EventGraph와 마찬가지로 계산 및 논리 흐름 구성을 하는곳이고 (마찬가지로 변수, 함수도 생성이 가능하다) AnimGraph는 Pose를 관리하는 곳이다 AnimGraph의 Output Pose에 원하는 Pose를 넣어 Character에 적용할 수 있다 AssetBrowser에서 원하는 Animation Sequence..

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

11. The Pawn Class & Camera/Spring Arm & Enhanced Input System (3)

1. Camera Component & SpringArm Component 카메라를 사용하기 위해서 CameraComponent를 추가해야 한다 원하는 만큼 Transform offset을 주어 거리 조절을 할 수 있다 하지만 이런 방식으로 카메라의 거리 및 각도를 조절하는건 좋지 않고 SpringArm에 CameraComponent를 Attach시키는 방식을 권장한다 SpringArm은 Camera가 벽과 같은 충돌체와 충돌하면 줄어들며 TargetArmLength로 SpringArmLength 조절도 가능하며 여러가지 이점이 있다 (Runtime에 카메라 거리 조절이 쉽다) SpringArmComponent는 USpringArmComponent타입이고 CameraComponent는 UCameraCom..

Unreal 2024.01.03
728x90
반응형