https://youtu.be/q5jnPa84Nhg?feature=shared

https://youtu.be/9ss5cb00Kt4?feature=shared

https://youtu.be/6eBDz1GBrCc?feature=shared

충돌체크

충돌검사는 게임 오브젝트끼리 충돌이 일어났는지 검사하고 또 특정 처리를 하는 것을 말한다.

충돌 검사는 여러방식이 존재한다.

Collider

Collider 컴포넌트는 물리 충돌 처리를 위한 오브젝트를 의미합니다.

게임을 만드는 과정에서는 콜라이더가 우리눈에 보이면 편리하지만 실제로 게임이 서비스 될때는 콜라이더는 눈에 보이지 않는 요소가 됩니다.

콜라이더는 꼭 오브젝트와 동일한 모습일 필요는 없으며, 실제로 게임 플레이 시에는 대략적인 근사치 형태로 만들어주는게 더 효율적입니다.

Untitled

위와 같이 보통은 실제 모델을 대략적으로 표현할수 있는 충돌체(보라색 도형) 크기로 설정합니다.

class Collider : public Component
	{
	public:
		Collider(eColliderType type);
		~Collider();

		virtual void Initialize();
		virtual void Update();
		virtual void LateUpdate();
		virtual void Render(HDC hdc);

		virtual void OnCollisionEnter(Collider* other);
		virtual void OnCollisionStay(Collider* other);
		virtual void OnCollisionExit(Collider* other);

		Vector2 GetOffset() { return mOffset; }
		void SetOffset(Vector2 offset) { mOffset = offset; }
		UINT32 GetID() { return mID; }
		Vector2 GetSize() { return mSize; }
		void SetSize(Vector2 size) { mSize = size; }
		eColliderType GetColliderType() { return mType; }

	private:
		static UINT CollisionID;

		UINT32 mID;
		Vector2 mOffset;
		Vector2 mSize;
		eColliderType mType;
		//Charcater type;
	};

class BoxCollider2D : public Collider
	{
	public:
		BoxCollider2D();
		~BoxCollider2D();

		virtual void Initialize();
		virtual void Update();
		virtual void LateUpdate();
		virtual void Render(HDC hdc);

	private:
		
	};

class CircleCollider2D : public Collider
	{
	public:
		CircleCollider2D();
		~CircleCollider2D();

		virtual void Initialize();
		virtual void Update();
		virtual void LateUpdate();
		virtual void Render(HDC hdc);

	private:
		float mRadius;

	};

Collider 컴포넌트를 상속받아 BoxCollider2D, CircleCollider2D 2개의 컬라이더를 구현 하였습니다.

각각 네모와 원을 이용해 충돌체를 그려주고 있습니다.