gpt4 book ai didi

ios - 确定对象是否被触摸/轻敲

转载 作者:行者123 更新时间:2023-11-28 22:52:00 25 4
gpt4 key购买 nike

我刚刚开始在 Xcode 中使用 Cocos 2D-X。

为了学习 Cocos 2D-X 库,我正在尝试制作一个爆气球游戏。到目前为止,我能够显示 Sprite 并让它们移动。至于触摸,我能够获取触摸坐标(并在控制台上打印出来)。

现在,我想要做的是让气球(CCSprite 对象)“弹出”(从图层中移除)。我正在四处寻找解决方案,其中之一是检查触摸位置是否在 CCSprite 矩形中。但是我发现的所有东西要么已经过时,要么是用 Objective C 编写的。

如何确定触摸位置是否在气球的矩形内?除了这种方法还有其他方法吗?

非常感谢。

编辑:我通过将气球放在一个阵列中并检查触摸位置是否击中该阵列中的一个气球来做到这一点。现在,我正在尝试创建一个 Balloon 类并从那里处理它。感谢所有回答的人。

最佳答案

你很幸运,因为我有一个使用气球的游戏,下面是我的代码,你可以完成气球类,你可以像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?

关于ios - 确定对象是否被触摸/轻敲,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11755431/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com