精灵碰撞检测精灵的中心区域

时间:2013-03-25 08:26:17

标签: android andengine

我正在研究精灵碰撞。 有一个球和一个水桶,直到球接触到桶的中间,点不应该被计算。如果它接触到桶的把手,它应该反弹。

知道如何实现这一目标?

1 个答案:

答案 0 :(得分: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 
    }

希望你能为你效劳。:)