내 앱에는 표면 뷰에서 움직이는 물체가 있습니다. 가속도계를 통해 주변을 이동할 수 있습니다.가속 오브젝트의 Android 차단 감지
if(x + mx*speed > 0 && x + mx*speed < GameView.WIDTH) {
x += mx*speed;
}
if(y+ my*speed > 0 && y+ my*speed < GameView.HEIGHT) {
y+=my*speed;
}
X 및 Y는
MX 플레이어는 예를 들어, 가속도계로부터 얻는 값이 플레이어의 좌표 : 여기에서 플레이어 오브젝트의 이동 코드의 왼쪽으로 기울 때, MX는 -2, 더 기울일 때, mx가 -4, -5, -6 등입니다. y 축에 대해 my가 동일합니다.
속도는 내가 원하는 경우 주위를 수정하고 재생할 수있는 변수입니다. 빠른 움직임.
볼 수 있듯이 플레이어가 볼 안쪽에있을 때만 움직일 수 있도록 제한하려고했습니다.
내 문제는 다음과 같습니다. 기기를 집중적으로 오른쪽으로 기울이면 mx가 6. 속도가 5로 설정됩니다. 즉, 플레이어의 위치 + 6 * 5가 게임보기보다 크면 더 이상 움직이지 마라. 그러나 플레이어가보기의 오른쪽 앞에서 픽셀을 멈추게합니다. 오른쪽으로 가볍게 기울이면 개체가보기의 경계에서 완전히 멈 춥니 다.
이제 어떻게 변경해야합니까? 코드를 사용하여 화면 경계에서 완벽하게 움직임을 멈추게하는 객체를 얻을 수 있습니까? 원 및 아래쪽 테두리 사이의 일부 픽셀이 있기 때문에 당신이 원이 바닥에 확실히 중지되지 볼 수 있습니다이 그림에
. 낮은 MX 또는 내와 의미,
그러나 천천히 이동할 때 지금, 난 단지 화면 테두리에 도달 할 수 있습니다 : 약간 뒤로 가속도계에 갈 때, 원은 화면 하단에 자신을 정렬 .
스크린 샷을 보면 mY 값을 볼 수 있습니다. 첫 번째 그림에서 my = ca. 8 및 두 번째 ca. 6.
아이디어가 있으십니까? 사전
스크린 샷 또는 두 개의 같은 경계에 값을 캡. – Kerry
두 장의 스크린 샷이 추가되었습니다. – user2410644
충돌 감지에 대해 잠들지 말고 Android 브레이크 아웃 (https://code.google.com/p/android-breakout/)에서 확인할 수 있습니다. 특히 GameState.java에서'findFirstCollision()'의 맨 위에있는 주석을 주목하십시오 - 게임은 볼을 조금씩 앞으로 나아가며 각 단계에서 확인합니다. 당신은 이것을 필요로하지 않습니다 - 당신은 걱정할 4 개의 벽만 있습니다. 따라서 대수가 답을 제공 할 것입니다 - 그러나 당신이 더 많은 물체를 추가한다면 당신은 비슷한 것을 필요로 할 것입니다. (충돌이 중심보다 오브젝트의 가장자리에서 발생하면 더 복잡해집니다.) – fadden