반응형
Box2D To Point 충돌
Box2D 와 Point는 박스의 X, Y축 두번의 투영을 통해서 충돌을 확인할 수 있다
두개 다 겹칠경우에만 충돌이 된다


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 |
댓글