728x90
반응형

게임개발 35

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

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

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

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
반응형