프로그래밍 공부

2023/12 33

카테고리 설명
  • 파티클 방식중, Trail에 대해 설명한다. 한 Quad객체를 만들고, StartPos의 Right, Left를 설정한다. 그리고 다른 모든 Vertice가 그 Right와 Left를 천천히 따라가게 만들면 된다. 이전 궤적과 이후 궤적을 참조하여, 궤적을 따라가게 설정하는것 이다. #pragma once class Trail : public GameObject { public: Trail(wstring imageFile, Transform* start, Transform* end, UINT width); ~Trail(); void Update(); void Render(); void SetSpeed(float speed) { this->speed = speed; } private: void Create..

  • 캐릭터에 무기를 추가할것 이다. 캐릭터에 무기를 추가하는 방법은 두가지정도 사용할 수 있는데, 사용하는 무기를 그때그떄 넣어주어서 동적으로 부여하는 방법 과 모든 무기를 캐릭터에 집어넣어 두고 사용할 경우에만 해당 무기를 활성화시키는 방법 이 두가지를 사용할 수 있다. 우리는 모든 무기를 캐릭터에 넣어두고 사용하게 할것이다. #pragma once class Weapon { public: Weapon(SkillData data, Transform* player) : data(data), player(player) {} virtual ~Weapon() = default; virtual void Update() = 0; virtual void Render() = 0; virtual void GUIRender..

  • 클래스 개요도 란, 코드의 객체 설계도와 같다고 생각하면 된다. 손으로 프로그램을동작시킨다면 어떻게 동작할까? 라는 생각으로 작성하면 쉽게 작성할 수 있다. 객체의 응용에서, 데이터의 주고받음에 따라 에니메이션을 다르게 송출해보았다. 이제. 몬스터의 객체 위에 HP바를 띄우고, 공격받을 때 마다 HP를 조절하여 표시하게 해보자. class ProgressBar : public Quad { public: ProgressBar(wstring frontImageFile, wstring backImageFile); ~ProgressBar(); void Render(); void SetAmount(float value); private: Texture* backImage; FloatValueBuffer* valu..

  • 객체지향 프로그래밍에서 사용하는 설계도 로, 클래스 간의 객체상속, 데이터 전달 방식을 명시적으로 표현하는 개요도 이다. 클래스 다이어그램(Class Diragram) 을 사용함으로써 얻을 수 있는 이득 자신의 프로그램을 명시적으로 표현할 수 있다. 각 코드는 작성자가 아니면, 이해하기가 매우 힘들 수 있으나, 클래스 다이어그램으로 상속관계와 데이터 구조를 표현하면 더 쉽게 알 수 있다. 전체 구조와 클래스 의존성을 파악하기 쉽다. 데이터를 명시적으로 나타냄으로 각 데이터와 객체간 의존성을 파악하고, 객체 구조를 손쉽게 수정할 수 있다. 유지보수에 용이하다. 다른사람이 이해하기 편하다는것 은, 나중에 살펴보거나 코드구조를 잊었을 때 살펴볼경우. 다시 기억을 떠올리기가 쉽다는 의미로 코드에 수정사항이 발생..

  • AnimationInstancing에서 각 객체에 애니메이션을 분할적용하고, 원하는 애니메이션을 원하는 객체에 실행하도록 바꾸어보자. 우선. Instancing을 사용해서 데이터를 조절함으로 Buffer한개로 같은 객체 100개를 조절하는것을 알 수 있다. 그럼으로, ObjectMaster를 한개 두고. 해당 객체를 사용해서 나머지 객체의 행동사항을 조절해야함을 이해할 수 있을것이다. 한번 작업해보자. // MonsterManager 클래스는 Singleton 패턴을 따르며 게임 내 몬스터를 관리하는 역할을 수행합니다. class MonsterManager : public Singleton { private: // 몬스터 풀의 크기를 나타내는 상수 const UINT POOL_SIZE = 100; // ..

  • Q1. Vector3형태의 Obejct A와 B 두개가 주어졌을 때, B가 A를 바라보게 만들려면 어떠한 방법을 따라야 하는가. A1. A->B를 구한다. B의 Forward를 찾는다. A->B와 B.Forward()간의 Dot을 구한다. atan(Dot(A->B, B.Forward()))하여. 각도를 구한뒤에, B의 각도를 결과값에 보정한다. Q2. 2D평면상의 Vector2형태의 Obejct A와 B가 존재할 때, A는 사각형, B는 원이다. 두 객체간 충돌을 검사하기 위한 과정은 어떻게 구성되는가? A2. A의 각 꼭짓점을 찾는다. Rect(A) 형태의 사각형일 경우, APos(x, y)에서 사각형의 높이 길이 = Size(xA, yA)일 때. 좌측하단 : Lw(x - xA * 0.5, y - yA..