0

Xcode で Cocos 2D-X を使い始めたばかりです。

Cocos 2D-X ライブラリを学習するために、風船割りゲームを作ろうとしています。ここまでで、スプライトを表示して動かすことができました。タッチに関しては、タッチ座標を取得できます (コンソールに出力できます)。

今、私がやりたいのは、バルーン (CCSpriteオブジェクト) を「ポップ」(レイヤーから削除) することです。私は解決策を探していますが、そのうちの1つは、タッチ位置がCCSprite四角形にあるかどうかを確認することです。しかし、私が見つけたものはすべて時代遅れであるか、Objective C で書かれています。

タッチ位置がバルーンの四角形内にあるかどうかを判断するにはどうすればよいですか? この方法以外に方法はありますか?

どうもありがとう。

編集:バルーンを配列に入れて、タッチ位置がその配列内のバルーンの1つに当たるかどうかを確認することでそれを行いました。今、私はバルーン クラスを作成し、そこから処理しようとしています。答えてくれたすべての人に感謝します。

4

2 に答える 2

2

私はバルーンを使用するゲームを持っているので、あなたは十分に幸運です. 以下は私のコードです, あなたはバルーンクラスを終えることができ、CCSpriteと同じようにそれを使うことができます.

例:

Balloon* blueBalloon = Balloon::spriteWithFile("balloon_blue.png");
this->addChild(blueBalloon);

h ファイル:

#include "cocos2d.h"
using namespace cocos2d;

class Balloon : public cocos2d::CCSprite, public CCTargetedTouchDelegate {
public:
virtual void onEnter();
virtual void onExit();
virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);
virtual void ccTouchMoved(CCTouch* touch, CCEvent* event);
virtual void ccTouchEnded(CCTouch* touch, CCEvent* event);
}; 

cpp ファイル:

void Balloon::onEnter(){
    CCTouchDispatcher::sharedDispatcher()->addTargetedDelegate(this, 0, true);
    CCSprite::onEnter();
}
void Balloon::onExit(){
    CCTouchDispatcher::sharedDispatcher()->removeDelegate(this);
    CCSprite::onExit();
}

void Balloon::ccTouchMoved(CCTouch* touch, CCEvent* event){
    //do what you want
}
void Balloon::ccTouchEnded(CCTouch* touch, CCEvent* event){
    //do your job here
}

bool Balloon::ccTouchBegan(CCTouch* touch, CCEvent* event){
    CCPoint touchLocation = this->getParent()->convertTouchToNodeSpace(touch);
    if (CCRect::CCRectContainsPoint(this->boundingBox(), touchLocation)) {
        this->playBalloonSound();
        this->removeFromParentAndCleanup(true);
    }

    return true;
}

または、この投稿cocos2d subclassing sprite to handle touch?の私のコードを参照できますか?

于 2012-08-01T23:02:08.547 に答える