2014-04-07 4 views
1

방금 ​​AndEngine에 대해 배우기 시작했고 Sprite 이동에 대한 자습서를 따르면서 화면 밖으로 나간 후이를 되돌리려 고 생각하고 있다고 생각했습니다. 그럴거야.OutofScreen에서 setVelocity가 변경되지 않음

@Override 
public void move() { 
    this.mPhysicsHandler.setVelocityX(-100); 

    this.mPhysicsHandler.setVelocityY(100); 
    OutOfScreenX(); 
    OutOfScreenY(); 

    } 


// =========================================================== 
// Methods 
// =========================================================== 
private void OutOfScreenX() { 
    if (mX > MainActivity.CAMERA_WIDTH) { // OutOfScreenX (right) 
     mX = 0; 
    } else if (mX < 0) { // OutOfScreenX (left) 
     mX = MainActivity.CAMERA_WIDTH; 
    } 
} 

private void OutOfScreenY() { 
    if (mY > MainActivity.CAMERA_HEIGHT) { // OutOfScreenX (right) 
     this.mPhysicsHandler.setVelocityY(-1000); 
     Log.d("Changing Direction","Changed"); 
    } else if (mY < 0) { // OutOfScreenX (left) 
     mY = MainActivity.CAMERA_HEIGHT; 
    } 
} 

불행히도이 모든 것은 스프라이트가 화면 하단에 튀어 오르게 만드는 것입니다. 이 문제를 해결할만한 이유가 있습니까? 나는 이것을하는 또 다른 방법은 Velocity를 음수로 곱해서 역방향으로 바꾸는 것이지만, 그것은 작동하지 않는 것으로 알고 있습니다.

누군가가 올바른 방향으로 나를 가리킬 수 있다면 고맙겠습니다!

감사합니다.

+0

this.mPhysicsHandler.setVelocityY (-1000); 왜 -1000으로 설정되어 있습니까? – dharr

+0

-100이 될까요? – dharr

+0

당신이 결과로 설정 한 것이 중요하지 않습니다. 나는 더 큰 점프를 만들지 만 그것을 테스트하지는 않았다. – user2587774

답변

1

move() - 메서드를 꾸준히 호출한다고 가정합니다.

이렇게하면 y- 속도가 100으로 설정된 다음 OutOfScreenY- 메서드가 호출되어 스프라이트의 위치를 ​​확인합니다. 이 방법에서는 y- 속도가 -1000으로 설정되므로 스프라이트가 반대 방향으로 이동합니다.

그러나 다시 move() - methos가 호출되어 속도가 100으로 다시 설정됩니다. 그런 다음 다시 OutOfScreenY-methos가 호출되어 속도가 -1000으로 변경됩니다.

속도가 100에서 -1000 사이에서 꾸준히 변하고있어 바운싱을 설명합니다.