마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이해도 납득도 안되는 이상한 버그 발견

0 추천
공이 패드와 충돌했을 때 공의 방향을 바꿔주는 코드입니다.

 

public void check()

{

   mPadTop = mPad.getTop();

   mBallSpeedY = mBall.getSpeedY();

 

   if(mBallBottom >= mPadTop && mBallBottom - mBallSpeedY <= mPadTop &&

   mPad.getLeft() <= mBallRight && mPad.getRight() >= mBallLeft)

   {

      mBall.setSpeedY(-mBall.getSpeedY());

   }

}

 

public void check()

{

   if(mBall.getBottom() >= mPad.getTop() && mBall.getBottom() - mBall.getSpeedY() <= mPad.getTop() &&

   mPad.getLeft() <= mBall.getRight() && mPad.getRight() >= mBall.getLeft())

   {

      mBall.setSpeedY(-mBall.getSpeedY());

   }

}

 

위 두 코드의 차이점은 멤버 변수를 사용했느냐 안했느냐

그 차이밖에 없습니다. 나머진 다 똑같습니다.

 

윗 코드는 작동하고 아래 코드는 작동하지 않습니다.

 

윗 코드는 공이랑 패드랑 충돌하면 방향이 바뀌는데,

아랫 코드는 공이 패드를 통과해버립니다.

 

멤버 변수로 처리하나 메소드에서 리턴된 값을 바로 사용하나

솔직히 차이가 있는게 말이 되나요?

 

겪어본 건 물론이요, 들어본 적도 없고 본 적도 없는 현상입니다
abchs8wyw (1,710 포인트) 님이 2018년 6월 10일 질문
abchs8wyw님이 2018년 6월 10일 수정

1개의 답변

0 추천

mBallLeft와 mBallRight 변수 때문일 가능성이 높아 보입니다.

 

디자이너정 (42,810 포인트) 님이 2018년 6월 10일 답변
...