2011-12-27 3 views
1

으로 사각형이있는 충돌 원 확인 제목 i에서와 마찬가지로 XNA를 사용하여 사각형과 충돌 원을 검사하려고합니다.C# XNA 4.0

하지만 간단하게 확인하는 방법을 모릅니다.

나는이 tutorial

같은 것을 발견하지만 난 XNA에서 내 문제에 대한 기존의 솔루션이 궁금해?

나는 내가 있는지 확인하기 위해 노력하고있어 보여주는 이미지를 첨부 경작하지 사람 What I'm trying to do

편집 : 나는 모바일 윈도우 폰이 너무 많은 CPU에 과부하가 안 7에 대한 게임을 만들고 있어요 . 사전 : 여기

+0

정확한 충돌 확인 또는 상자 확인이 필요하십니까? 정확한 것을 원한다면'픽셀 당 충돌 '을 살펴 봐야합니다. 웹에이 기법에 대한 많은 튜토리얼과 알고리즘이 있지만, CPU에 약간의 비용이 듭니다. –

+0

100 % 정확한 픽셀을 확인하고 싶지만 텍스처의 배경이 투명 할 때 충돌이 반환되지 않아야합니다. 참된. 어쩌면 작은 사각형이나 이와 비슷한 것을 위해 얇게 썬 텍스처를위한 해결책이 될까요? – harry180

+0

픽셀 당 충돌은 무엇입니까. 이 픽셀 중 적어도 한 쌍의 알파가 0.1f (또는 사용자가 제공 한 다른 값)보다 크면 (즉, 투명하지 않은 경우) 충돌이 발생하면 두 스프라이트의 교차 픽셀을 검사합니다. 또한 충돌을 확인하는 데는 여러 가지 방법이 있습니다. 일부는 다음과 같습니다 : 경계 상자 충돌 (각 스프라이트는 크기의 상자를 가짐. 그런 다음이 상자에서 충돌을 테스트합니다. 매우 정확하지는 않지만 매우 좋음), 구체 충돌 (테두리 상자와 같지만 대신 구를 사용함) 등등 –

답변

2

에 대한

덕분에 비슷한 질문에 대한 답변입니다 : Circle-Rectangle collision solution.

참고로 Moving Collision Detection의 스레드는 프로그래머가 Griptonite Games (Mike0801)입니다. 그가 수학에서 말한 것을 읽을 가치가있을 것입니다. 그들은 Gameboy와 같은 굶어 죽은 기계를위한 게임을 제작 했으므로 빠르게 그렇게 많은 통찰력을 제공합니다.

0

XNA "Platformer"데모에는 더 간단한 솔루션이 있습니다.

public bool Intersects(Rectangle rectangle) 
    { 
     Vector2 v = new Vector2(MathHelper.Clamp(Center.X, rectangle.Left, rectangle.Right), 
           MathHelper.Clamp(Center.Y, rectangle.Top, rectangle.Bottom)); 

     Vector2 direction = Center - v; 
     float distanceSquared = direction.LengthSquared(); 

     return ((distanceSquared > 0) && (distanceSquared < Radius * Radius)); 
    }