1

スプライトの衝突に取り組んでいます。ボールとバケツがあり、ボールがバケツの真ん中に触れるまではポイントを数えないでください。バケツのハンドルに触れると跳ね返るはずです。

これをどのように達成できるか考えていますか?

4

1 に答える 1

3

カスタムバケットクラスを取得して、バケットの中央に長方形をアタッチすることもできます。次に、長方形を非表示にします。長方形はこのバケットの子である必要があります。

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 
    }

うまくいけば、それはあなたのために働きます。:)

于 2013-03-25T10:24:06.943 に答える