2013-06-09 1 views
0

xna 2D 스프라이트에서 간단한 테스트를하고 마우스로 움직이려고했지만 작동하면 조금 빨리 스프라이트가 사라지고 왼쪽 버튼을 계속 누르고 내가 스프라이트로 돌아 왔을 때 끌기는 계속된다.XNA 마우스가 스프라이트를 잃어 버린다

나는 내가 조금 더 빨리 움직이면 나는 왜 내 스프라이트를 잃을 까?

MouseState ms = Mouse.GetState(); 
if ((ButtonState.Pressed == Mouse.GetState().LeftButton) && myBall.RectObject.Intersects(new Rectangle(ms.X, ms.Y, 0, 0))) 
{ 
    myBall.RectObject = new Rectangle(ms.X - myBall.RectObject.Width/2, ms.Y - myBall.RectObject.Height/2, myBall.RectObject.Width, myBall.RectObject.Height); 
} 

답변

1

내가 이런 식으로 처리하는 것이 좋습니다 : 마우스가 공을 왼쪽 클릭하면

(영업의 if 문을 사용하여), 다음 표시 여기

내 이동 로직 공이 드래그 됨으로 표시됨 (객체에서 단순한 'bool dragged;')

위치에 관계없이 마우스를 클릭하지 않으면 드래그하지 않는 것으로 표시합니다. 볼이 드래그되는 경우 (이미 사용하고있는 동일한 기능의 모든)

,

(영업 이익의 경우 블록 내에서의 코드를 사용하여) 마우스 위치에 편집을

점프 : 여기 몇 가지 예제 코드는 내가 명확하게 설명하지 않았다면

MouseState ms = Mouse.GetState(); 
if ((ButtonState.Pressed == Mouse.GetState().LeftButton)) 
{ 
    if (myBall.RectObject.Intersects(new Rectangle(ms.X, ms.Y, 0, 0))) 
    { 
     myball.dragged = true; 
    } 
} 
else 
{ 
    myball.dragged = false; 
} 
if (myball.dragged) 
{ 
    myBall.RectObject = new Rectangle(ms.X - myBall.RectObject.Width/2, ms.Y - myBall.RectObject.Height/2, myBall.RectObject.Width, myBall.RectObject.Height); 
} 
+0

잘 주셔서 감사합니다. mcmonkey4eva; –

관련 문제