【cocos2d-x制作别踩白块儿】第六期:游戏交互实现

这一期我们实现游戏的交互。简单的说,就是搭建触摸的框架。


在HelloWorldScene.cpp中添加触摸事件

	auto listener = EventListenerTouchOneByOne::create();
	listener->onTouchBegan = [this](Touch* t, Event* e)
	{
		log("onTouch");
		auto bs = Block::getBlocks();
		Block *b;

		for(auto it = bs->begin(); it != bs->end(); it++)
		{
			b = *it;

			if(b->getLineIndex()==1&&b->getBoundingBox().containsPoint(t->getLocation()))
			{
				if(b->getColor()==Color3B::BLACK)
				{
					b->setColor(Color3B::GRAY);
					this->moveDown();

				}
				else
				{
					MessageBox("GameOver","失败");
				}
			}
		}

		return false;
	};

	Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, this);
利用触摸事件onTouchBegan,然后得到所有的Blocks,一个个遍历。先判断lineIndex是不是1而且触摸式在这一行,紧接着如果方块是黑色的话,然后将黑色变为灰色,并使所有方块下移moveDown;如果方块不是黑色,然后出现一个失败的对话框。


moveDown函数,我们先用一个空函数实现,后续会添加具体的逻辑。

//方块下移
void HelloWorld::moveDown()
{

}

在Block.cpp中添加getBlocks函数

Vector<Block*> * Block::getBlocks()
{
	return Block::blocks;
}

运行项目,效果如下:



点击非第一行区域,会输出



点击第一行的白色块,会出现失败对话框



点击第一行黑色块,黑色块会变成灰色



效果还不错吧?哈哈哈

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值