2016-03-30 62 views
2

我正在閱讀「通過構建Android遊戲學習Java」以及復古壁球遊戲示例,我不知道如何實現球拍碰撞檢測。球拍的運動使用onTouchEvent。我試圖實現一個if語句,但是直到下一個觸摸事件纔會被檢查,所以它無法正常工作。請幫忙。Android - 復古壁球遊戲 - 球拍/屏幕碰撞

//Event that handles in which direction is the racket moving according to where is the user touching the screen 
    @Override 
    public boolean onTouchEvent(MotionEvent motionEvent) { 
     //gets the movement action without the pointers(ACTION_MASK) ??? -U: handles multitouch 

     switch (motionEvent.getAction() & MotionEvent.ACTION_MASK) { 
      //what happens if user touches the screen and holds 
      case MotionEvent.ACTION_DOWN: 
       //if the screen was touched on the right side of the display than move the racket right 
       if (motionEvent.getX() >= (screenWidth/2) && racketPosition.x <= screenWidth) { 
        racketIsMovingLeft = false; 
        racketIsMovingRight = true; 
       } else if (motionEvent.getX() < (screenWidth/2) && racketPosition.x >= 0) { 
        racketIsMovingLeft = true; 
        racketIsMovingRight = false; 
       } else { 
        racketIsMovingLeft = false; 
        racketIsMovingRight = false; 
       } 

       break; 
      //when the user lets go of the screen the racket immediately stops moving 
      case MotionEvent.ACTION_UP: 
       racketIsMovingLeft = false; 
       racketIsMovingRight = false; 
       break; 
     } 
     return true; 
    } 

回答

0

好的。我找到了解決方案。我沒有看到正確的代碼 - 抱歉。我編輯了負責改變球拍racketPoint.x的作品。那就是:

public void updateCount() { 
     //change the racket position according to the movement 
     if (racketIsMovingRight && (racketPosition.x+racketWidth/2)<=screenWidth) { 
      racketPosition.x += racketSpeed; 
     } 

     if (racketIsMovingLeft && (racketPosition.x-racketWidth/2)>=0) { 
      racketPosition.x -= racketSpeed; 
     } 

//代碼其餘