728x90
반응형

Unreal 23

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

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

8. The Pawn Class (1)

1. The Pawn Class Pawn은 Controller가 Possess할 수 있다 (직접 컨트롤 할 수 있다) ex) 마우스, 키보드 클릭으로 Pawn을 제어할 수 있다 Pawn Class는 Actor Class를 상속받는다 Pawn Class를 만들기 위해서는 APawn을 상속받아 클래스 생성을 해주면 된다 생성하게 되면 APawn을 상속받은 클래스가 만들어진다 UCLASS() class STUDYUE_API ABird : public APawn //APawn 상속 { GENERATED_BODY() public: ABird(); protected: virtual void BeginPlay() override; public: virtual void Tick(float DeltaTime) overr..

Unreal 2023.12.15

7. Expose Variable & Function, Template Function, Components

1. Expose Variable To BP 변수를 BP에 노출시키면 BP의 DetailTab에서 제어가 가능하다 월드에 배치된 Actor를 선택하고 각각의 변수값을 DetailTab에서 변경할 수 있다 UPROPERTY()키워드로 해당 변수를 ReflectionSystem으로 제어할 수 있게 해준다 UPROPERTY()변수들은 전부 0으로 초기화가 된다 UPROPERTY(EditDefaultsOnly) //BP Class의 DetailTab에서만 값 수정이 가능하다 (월드에 배치된 Actor Instance의 DetailTab에서는 수정이 불가하다) float Amplitude = 0.25f; UPROPERTY(EditInstanceOnly) //World에 배치된 Actor Instance의 Deta..

Unreal 2023.12.14

6. Moving Object & Trig Function(삼각함수)

1. SetActorLocation & SetActorRotation SetActorLocation : 원하는 Actor를 원하는 위치로 이동시킨다 원하는 타겟 위치 (FVector)를 인자로 가진다 SetActorLocation(FVector(0.f, 0.f, 50.f)); SetActorLocation() : 원하는 위치 (FVector), 해당 Actor를 움직일 때 다른 오브젝트에 충돌하는지 감지하고 충돌한다면 직전에 멈추게 할지 (bool), FHitResult*, ETeleporType을 인자로 가진다 (추후에 자세히 설명) SetActorRotation : 원하는 Actor를 원하는 회전값만큼 회전시킨다 원하는 회전값 (FRotator), 이 Actor가 충돌 콜리젼이 허용될 때 회전이 이 ..

Unreal 2023.12.08

5. Actor Class & Debug(2)

1. Drawing Debug Sphere Draw Debug Sphere : 디버그용 구체를 그릴 수 있다 구체의 중심 위치 (FVector), 반지름 (float), 분할개수 (int32), 선 색 (FColor), 지속시간 (float), 구체 선 두께 (float) 들로 인자가 이루어져 있다 Get Actor Location : 원하는 Actor의 RootComponent위치를 (FVector) 가져온다 모든 Actor들이 가지고 있는 함수이다 #include "DrawDebugHelpers.h" //Debug 관련 함수 사용시 필요한 헤더파일 void AItems::BeginPlay() { Super::BeginPlay(); UWorld* World = GetWorld(); //Actor가 이 ..

Unreal 2023.12.05

4. Actor Class & Debug(1)

1. Actor Creation Actor는 Level에 배치하거나 스폰할 수 있는 오브젝트의 기본 클래스이다 C++클래스를 생성할 때 부모클래스를 선택할 수 있다 이때 Actor Class를 선택하면 Actor를 상속받는 클래스를 만들 수 있다 Actor뿐만 아니라 수많은 엔진 클래스를 상속받을 수 있다 ex) Pawn, Character, UserWidget... 그 후 Next로 Class이름, 경로를 설정하면 된다 이와 같이 Solution탐색기에서 확인이 가능하다 이때 Build.cs파일은 프로젝트에 포함되는 모듈을 제어한다 아래는 ActorClass를 상속받았을 때 자동으로 생성되는 함수들이다 #pragma once //.h파일을 포함할 때 한번만 포함되도록 보장해주는 전처리 지시문이다 #in..

Unreal 2023.12.05
728x90
반응형