DX11

Box2D To Point 충돌

TIN9 2022. 1. 5.

목차

반응형

Box2D To Point 충돌

 

Box2D 와 Point는 박스의 X, Y축 두번의 투영을 통해서 충돌을 확인할 수 있다

두개 다 겹칠경우에만 충돌이 된다

Box2D To Point 충돌
Box2D To Point 충돌

bool CCollision::CollisionBox2DToPoint(CollisionResult& SrcResult, CollisionResult& DestResult,
	const Box2DInfo& BoxInfo, const Vector2& Point)
{
	// obb 대 점 충돌
	// 상자의 x, y축에 점을 투영하여 구간이 겹치는지 판단한다.

	// 센터 방향
	Vector2 CenterDir = BoxInfo.Center - Point;

	Vector2 Axis = BoxInfo.Axis[0];

	// 내적할때 -값이 나오면 안되어서 abs를 이용하여 절대값으로 나오게 설정
	float CenterProjDist = abs(CenterDir.Dot(Axis));

	// CenterProjDist 가 BoxInfo의 Length.x보다 크면 충돌이 안된것이다.
	if (CenterProjDist > BoxInfo.Length.x)
		return false;

	Axis = BoxInfo.Axis[1];

	CenterProjDist = abs(CenterDir.Dot(Axis));

	// CenterProjDist 가 BoxInfo의 Length.y보다 크면 충돌이 안된것이다.
	if (CenterProjDist > BoxInfo.Length.y)
		return false;

	// 둘다 통과한거기 때문에 true
	return true;
}
반응형

'DX11' 카테고리의 다른 글

2022-01-11 ~ 01-18 UIWidgets  (0) 2022.01.21
01 - 10 ~ 01 - 11 UI충돌 / Sound(FMOD)  (0) 2022.01.12
Box2D To Pixel 충돌  (0) 2022.01.05
원 충돌(코드)  (0) 2022.01.02
obb 충돌 관련(코드)  (0) 2022.01.02

댓글