2013-03-25 114 views
1

我正在處理精靈碰撞。 有一個球和一個水桶,直到球接觸水桶的中間,點不應該被計算。如果它接觸水桶的手柄,它應該反彈。精靈的Sprite碰撞檢測中心區域

任何想法如何實現?

回答

3

您也可以自定義Bucket類。然後將一個矩形附加到一個桶的中心。然後不可見矩形。矩形應該是這個桶的孩子。

public class Bucket extends Sprite { 

private Rectangle checkRectangle; 

public Bucket(float pX, float pY, float pWidth, float pHeight, 
     ITextureRegion pTextureRegion, 
     ISpriteVertexBufferObject pSpriteVertexBufferObject) { 
    super(pX, pY, pWidth, pHeight, pTextureRegion, 
      pSpriteVertexBufferObject); 
    // Declare rectangle object 
    checkRectangle = new Rectangle(41, 54, 4, 4, 
      getVertexBufferObjectManager()); 
    // set invisible 
    checkRectangle.setVisible(false); 
} 

@Override 
public void onAttached() { 
    super.onAttached(); 
    super.onAttached(); 
    if (hasParent()) { 
     attachChild(checkRectangle); 
    } 
} 

}

當球觸及矩形這是一個桶,你可以指望點的中心。因此,您需要檢查您的遊戲場景,例如:

if (aBucketObj.checkRectangle.collidesWith(aBallSprite)) { 

     // do What you want 
    } 

最後,您只能檢查存儲桶本身的衝突。

if (aBucketObj.collidesWith(aBallSprite)) { 

     // // do What you want 
    } 

希望,你就爲你工作。:)

+0

@voidRy不要忘了接受的答案,如果得到它。 – 2013-03-25 10:28:05