비트 맵 A는 X/Y 위치가 정적 인 위치를 가지며 비트 맵 B는 화면 맨 아래에서 사용자가 화면을 터치하는 위치로 이동하는 비트 맵을 이동합니다. 움직이는 비트 맵이 정적 비트 맵에 도달했지만 충돌로 인식되지 않으면 움직이는 비트 맵은 반올림 한 float를 사용하고 정적 비트 맵은 int를 사용합니다. 다음 코드 조각은, 내 계산이 꺼져있는 경우2D 충돌 비트 맵 관련 문제
canvas.drawBitmap(rock2, 70, 32, null);
//this is where it checks to see if the moving bitmaps y coordinate is matched to the Y coordinate of the static bitmap
if(canvas.getHeight() - Math.round(animY*-1) == (canvas.getHeight() - (canvas.getHeight()-32))){
Log.d("ALERT", "COLLIDE");
}
//the Y value is *-1 because the moving bitmap is starting from the bottom of the screen so this converts the value to positive value
가 궁금 충돌을 고려해야 할 경로를 교차 내 비트 맵에 대한 변경이 필요한 것을 파악하려는, 또는 나는이 충돌에 대해 갈거야 잘못된 길. 다음은 내 운동 코드입니다.
//UP Y ANIMATION
if(animY*-1 < canvas.getHeight() && !bumpY){
animY += speedY;
//IF ROCK IS NOT AT EXTREME LEFT OR EXTREME RIGHT KEEP ON TRACK
if(animX < (canvas.getWidth()/2) || animX*-1 < (canvas.getWidth()/2) && !bumpX){
animX += speedX;
//IF ROCK HITS EDGE LEFT/RIGHT RETURN TO SENDER (INDICATE BUMP)
if(animX*-1 > (canvas.getWidth()/2) - rock.getWidth()/2 || animX > (canvas.getWidth()/2) - rock.getWidth()/2){
bumpX = true;
bumpY = true;
}
}
//IF Y HITS TOP OF SCREEN
if(animY*-1 > canvas.getHeight()){
bumpY = true;
}
}
//DOWN Y ANIMATION
if(animY < 0 && bumpY){
//REVERSE DIRECTION OF Y
animY -= speedY;
//IF ROCK HITS TOP OR SIDE REVERSE X DIRECTION
if(bumpX || bumpY)
animX -= speedX;
//IF AT STARTING POINT
if(animY > 0){
bumpY = false;
bumpX = false;
}
}
//in an ontouch method where the X and Y values are calculated
case MotionEvent.ACTION_UP:
finalX = event.getX() - (cross.getWidth()/2);
finalY = event.getY() - (cross.getHeight()/2);
moveToX = finalX - startX;
moveToY = finalY - startY;
speedX = moveToX/50;
speedY = moveToY/50;
break;
아무쪼록 잘 부탁드립니다. 감사합니다. 대신
if(canvas.getHeight() - Math.round(animY*-1) >= (canvas.getHeight() - (canvas.getHeight()-32))){
:이 바보 같은 대답이지만, 당신의 검사를 할 필요가있는 경우
Log.d 메시지에 다음을 추가했습니다. 시간과 관련하여 바위의 좌표가 무엇인지 표시하시오. 확신 할 수는 없지만, "if (canvas.getHeight() - Math.round (animY * -1) == (canvas.getHeight() - (canvas.getHeight()) -32))) "... 그리고 그 결과를 출력하여 각 단계에서 결과가 무엇인지 확인하십시오. –
움직이는 비트 맵은 완벽한 순서로 움직이지 않으며 그 움직임도 기록됩니다. 시작 지점에서부터 시작하여 충돌을 감지하고 고양이에 로그인하는 방법에 따라 시작 지점에 더 가까이 다가 가면 계산 방법은 더 멀리 떨어져 있지만 그다지 멀리 떨어지지는 않습니다. 어쩌면 반올림 문제일까요? 그렇다면 나는 어떤 방향으로의 축복을 필요로한다. 귀하의 의견을 보내 주셔서 감사합니다 – kabuto178