728x90
반응형

개발자 12

15. Constructor & Destructor (1)

1. Constructor & Desturctor 생성자 (Constructor)는 특별한 멤버함수이다 생성자는 객체 생성시 호출되고 초기화에 유용하게 사용된다 생성자 이름은 클래스 이름과 같다 ex) Player 클래스의 생성자는 Player(), Player(int 32 Test)... 등등 생성자는 반환형은 없고 매개변수는 존재할 수 있으며 오버로딩 할 수 있다 (클래스는 오버로딩을 통해 많은 생성자를 가질 수 있다, 이 많은 생성자들은 각각 Unique해야 한다 (객체 생성시 어떤 생성자를 호출해야 할 지 알아야 하기 때문이다, 모호성을 가진다면 컴파일 에러가 발생한다) 소멸자는 (Destructor)는 특별한 멤버함수이다 소멸자 이름은 클래스 이름과 같고 앞에 ~이 붙는다 ex) ~Player(..

C++ 2024.04.03

14. OOP Class & Object (1)

1. OOP OOP란 Object Oriented Programming으로 객체 지향 프로그래밍을 의미한다 절차 지향 프로그래밍 (Procedural Programming)은 함수를 중심으로 프로그래밍 하는 방식이다 따라서 함수들의 집합이라고 볼 수 있다 절차 지향 프로그래밍에서 데이터는 함수에서 분리되어 선언되고 데이터를 함수에서 사용해야 하면 해당 함수로 데이터를 전달해서 사용한다 절차 지향 프로그래밍의 한계점은 함수가 데이터의 구조에 대해 알아야 한다는 점이다 -> 데이터 구조가 변경되면 이 데이터를 사용하는 함수들도 전부 다 변경되어야 한다 (추후에 프로그램이 커지면 복잡해짐) 프로그램의 크기가 커질수록 절차 지향 프로그래밍의 한계점은 더욱 드러나게 되는데 프로그램이 커질수록 절차 지향 프로그램은..

C++ 2024.02.22

23. Attach & Pick, Enum State, Switching Animation

1. Attach Actor To Socket 특정 Component를 다른 Component에 부착하려면 Attach Component To Component함수를 이용 해야한다 Attach Component To Component : Target SceneComponent를 Parent SceneComponent의 원하는 Socket에 원하는 TransformRule로 Attach 시킨다, Attach가 되었는지 bool로 return한다 TargetComponent가 붙을 Parent Component (USceneComponent), 소켓 이름 (FName), TransformRule (EAttachmentRule), 물리학 적용 (bool)을 인자로 가진다 이때 각각의 Transform Rule..

Unreal 2024.02.22

22. IK Rig And Retarget & Socket & fbx Import

1. Class Inherit UE에서 부모클래스로부터 가상함수를 상속받아 override할 때 UFUNCTION() 매크로를 빼야 정상 작동한다 class STUDYUE_API AWeapon : public AItems { GENERATED_BODY() protected: //AItem의 virtual 함수를 override 할 때 UFUNCTION()매크로를 뺌 virtualvoid OnSphereOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult) ..

Unreal 2024.02.15

13. Pointer And Reference (2)

1. Pointer Arithmetic 포인터는 대입, 비교, 산술 연산이 가능하다 포인터에서 ++,--연산은 해당 주소 다음,이전을 가리킨다 (포인터 변수의 타입 크기만큼 증가,감소한다) ex) int형 포인터 변수의 주소가 1000이고 해당 포인터 변수를 ++. --하면 1004, 996이 된다 일반 변수와 마찬가지로 포인터변수++, 포인터변수--로 사용이 가능하다 이때 *포인터변수++은 주소를 ++하는것이고 (*포인터변수)++은 주소를 타고간 데이터 값을 ++하는것이다 포인터 변수는 덧셈 뺄셈도 가능하며 +=, -=도 사용할 수 있다 마찬가지로 포인터 변수의 타입 크기만큼 증가, 감소된다 포인터 변수와 포인터 변수의 뺄셈은 두 주소 사이의 거리를 계산한다 이때 타입이 다르면 컴파일 에러가 발생한다 ..

C++ 2024.02.14

21. Collision & Overlap (2)

1. On Component Begin/End Overlap SphereCollisionComponent는 USphereComponent이다 USphereComponent* Sphere; USphereComponent는 UPrimitiveComponent를 상속받고 UPrimitiveComponent에는 OnComponentBegin/EndOverlap Delegate가 존재한다 따라서 USphereComponent뿐 아니라 UPrimitiveComponent를 상속받는 모든 Component는 OnComponentBegin/EndOverlap Delegate를 사용할 수 있다 OnComponentBeginOverlap은 Component가 다른 Actor/Component와 Overlap이 시작했을 때..

Unreal 2024.02.08

20. Observer Pattern & Delegate

1. Observer Pattern & Delegate 우선 Observer Pattern에 대해서 알아보자 Subject가 있고 이 Subject는 Observer List를 가지고 있다 이 Observer List의 Observer들은 프로그램에 존재하는 다른 Observer를 의미한다 (여기서 Observer는 Object로 생각해도 됨) 프로젝트에 존재하는 Observer들은 CallBack()함수를 가지고 있고 Observer는 특정한 상황에서 이 CallBack()함수가 호출되길 원한다 이를 Event라고 부른다 Observer Pattern의 목표는 Subject의 Observer들의 CallBack()함수를 특정 Event때 호출하는 것이다 결국에 Subject는 Event가 언제 발생하는..

Unreal 2024.02.07

19. Collision & Overlap (1)

1. Collision Presets UE에서 Level에 배치할 수 있는 모든것은 Actor를 상속받아야 한다 그렇다면 StaticMesh uasset을 드래그해서 Level에 올리면 어떻게 될까? 바로 Static Mesh Actor가 Instance화 되고 해당 Actor는 StaticMeshComponent를 갖게 된다 StaticMeshActor는 Actor를 상속받고 StaticMeshComponent 한개를 가지고 있다 StaticMeshComponent에는 Collision이 존재한다 (MeshComponent들과 CollisionComponent에는 Collision이 존재한다) StaticMeshActor들은 기본적으로 Collision Presets가 존재하고 여기서 원하는 Colli..

Unreal 2024.01.31

12. Pointer And Reference, Memory Allocate (1)

1. What is a Pointer? 포인터 타입 변수는 다른 변수의 메모리 주소를 저장한다 포인터는 주소 전달 방식으로서 함수의 매개변수에 사용되고 배열에 아주 효과적으로 사용되며 힙 영역에 메모리를 동적으로 할당할 때 사용한다 또한 임베디드 시스템에서 특정 메모리 주소 액세스 권한이 필요할 때 사용된다 타입* 변수명;으로 포인터 변수를 선언할 수 있다 이때 *는 수학적의미가 아닌 포인터 변수를 의미한다 포인터 변수도 일반 변수와 마찬가지로 초기화 하지 않으면 쓰레기값(Garbage Data)이 들어가게 된다 꼭 사용하기 전에 초기화를 하고 사용해야 한다 포인터 변수의 쓰레기값은 결국 주소이다 만약 이 주소가 프로그래머가 알지 못하는 유효한 곳이라면 접근 시 상당히 위험한 결과를 나타낼 수 있다 포인..

C++ 2024.01.30

18. IK (Inverse Kinematics)

1. IK IK처리를 하지 않고 Character의 움직임을 구현했다면 다음과 같이 경사로에 위치했을 때 발이 뜨는 현상을 볼 수 있다 자연스럽게 보이려먼 Character기준 왼쪽 다리는 구부리고 오른쪽 다리는 밑으로 더 내려와야 한다 로봇으로 비유를 하면 로봇 다리의 끝을 제어하고 싶다면 다리와 관련되어 있는 관절 부품 시작부터 다리의 끝 관절까지 제어해야 한다 이를 게임개발에서 IK를 사용하여 처리한다 IK는 말그대로 Inverse Kinematics이다 위 사진을 예시로 설명하면 왼쪽 경사면에 맞게 왼발을 배치하면 왼발에 연관되어 있는 상위 Bone (L_Knee, Pelvis) 이 어디 위치에 들어가야 하는지 역으로 계산할 수 있다는 것이다 IK 계산 방식은 다음과 같다 오른쪽 발에 가상의 Sp..

Unreal 2024.01.27
728x90
반응형