我正在处理精灵碰撞。有一个球和一个桶,直到球碰到桶的中间,不计点。如果碰到桶的把手,它应该反弹回来。
知道如何实现吗?
您还可以采用自定义 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
}
希望,它对你有用。:)