0

나는 조건에 대한 교착 또는 오히려 충돌 감지에 대한 질문이 있습니다. 막대 (이미지)와 공 (이미지) 사이의 충돌 감지를 수행하고 있습니다. 막대는 막대를 끌 때 사용자의 응답으로 위아래로 이동할 수 있습니다. 충돌 감지 코드는 다음과 같습니다. 볼은 다음 충돌을 감지 할 때 개인 공극의 OnUpdate (개체 발신자 오브젝트 E) 당분간C#에서 조건과 교집합을 수행하는 방법?

Rect blueBallRectangle= new Rect(blueBallPositionX, blueBallPositionY, blueBall.ActualWidth, blueBall.ActualHeight); 
Rect barRectangle= new Rect(barPositionX, barPositionY, bar.ActualWidth, bar.ActualHeight); 

에서

public bool Intersects(Rect barRectangle, Rect blueBallRectangle) 
    { 
     barRectangle.Intersect(blueBallRectangle); 

     if (barRectangle.IsEmpty) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 

, 그것을 멀리 편향된다. 그러나, 나는 그것이 격차를 벗어나지 않고 틈을 통과 할 것이라고 덧붙이고 싶다.

if (Intersects(barRectangle, blueBallRectangle)) 
     { 
      this.blueBallVelocityY *= -1; 
      this.blueBallVelocityX *= -1; 
     } 

막대의 이미지는 다음과 같습니다. 상단에 하나, 그리고 하단에 하나를 :

+0

나는 파 시어와 ​​같은 물리 엔진 ([코드 플렉스 (HTTP를 사용하는 것이 좋습니다 것입니다. –

+0

@ShawnKendrot 귀하의 정보를 얻으려면 강사가 말한대로 그런 엔진을 사용할 수 없습니다. –

답변

1

당신이 빨간색 막대를 설명하는 두 개의 경계 상자를 사용해야 보인다. 그런 다음 코드에서 파란색 공이 과 교차하는지 확인하거나 중 하나를 확인합니다. 이 경우 볼이 두 장벽 사이에 닿으면 두 장벽과 교차하지 않으며 공이 기꺼이 앞으로 나아갑니다 (그러면 플레이어가 아마도 죽을 것입니다).

또한, 미리보기 :

if (barRectangle.IsEmpty) 
{ 
    return false; 
} 
else 
{ 
    return true; 
} 

간단하게 교체 할 수 있습니다 : //farseerphysics.codeplex :

return !barRectangle.IsEmpty; 
+0

죄송하지만 뭔가 언급하는 것을 잊어 버렸습니다. 막대는 사용자의 응답에 따라 위아래로 움직일 수 있습니다. 나는 GestureService.GestureListener와 MouseDragElementBehavior를 사용했다. –

+0

좋습니다. 경계 상자는 공과 함께 모든 프레임으로 이동하며 제안 된 해결 방법은 계속 작동합니다. – CSJ

+0

오케이. 막대는 전체 이미지이며 MouseDragElementBehavior 아래에 있습니다. 테두리 상자가 무엇을 의미하는지 알고 싶습니까? –