728x90
반응형

컴퓨터 8

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

18. IK (Inverse Kinematics)

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

Unreal 2024.01.27

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