cocos2d-x 3.4 vs+cocostudio类神经猫三消游戏《Rabbit Escape》

本文介绍了基于cocos2d-x 3.4和Cocos Studio制作的《Rabbit Escape》游戏的开发过程,特别是核心算法和实现方法。讲解了如何加载UI、获取场景节点、添加障碍物的逻辑,以及游戏地图、移动信息的初始化,重点探讨了A*寻路算法的应用,以实现兔子智能移动的逻辑。
摘要由CSDN通过智能技术生成

Hi,好久不见,在最近的一周里面,自己在着手写一个之前很火的小游戏 围住神经猫,当然首先还是先去网上看了一下关于怎样制作这个小游戏的教程,在cocos开发者平台上找到了类神经猫三消游戏《Rabbit Escape》教程,是基于Cocos Studio ui编辑器和vs配合使用制作出来的《围住乖乖兔》游戏。

今天在这里我主要想在这里分享的是游戏里面的核心算法和实现方法,并非前面基础的通过cocosstudio UI编辑器搭建游戏主界面,在作者的基础上对其算法进行了一定程度的改动和优化,希望能给大家的学习带来一定的帮助,关于前面的cocosstudio搭建游戏主界面的教程,我把大神的链接发在下面,大家可以照着做,地址如下:http://www.cocos.com/doc/tutorial/show?id=2417

好啦,不多说了,现在我们继续我们的游戏开发吧,在cocosstudio里面搭建好了我们的游戏主场景,如下图:


之前的步骤详情请见上面大神的链接,从这里开始我们需要将ui编辑器生成的csb文件加载到vs工程里面,开始游戏的逻辑代码实现,既然将游戏主界面加载进来了,现在我们需要做的是获得csb文件里面的场景节点,然后遍历场景节点的所有子节点,当遍历到的子节点的名字是兔子图片的名字的时候,将其赋值给之前定义的全局兔子节点,否则另外的节点Tag值小于80时候,将其赋值给障碍容器里面。

auto rootNode = CSLoader::createNode("MainScene.csb");
	addChild(rootNode);
	// 获得页面下面的背景层
	sprite = rootNode->getChildByName("Sprite_bg");
	// 遍历背景层下面的元素,分别得到兔子和石头节点
	for (auto it = sprite->getChildren().begin; it != sprite->getChildren().end();it++)
	{
		if ((*it)->getName() == "Sprite_bg")
		{
			role = (*it);
		}
		else
		{
			if ((*it)->getTag() <= 80)
			{
				vec_stones.pushBack((*it));
			}
			
		}
	}

  现在,将节点添加到全局变量和容器之后,我们需要做的就是,写一个通过触摸添加一个障碍物的方法,申明一个监听器的方法我在这里就不做具体的讲解了,增加一个回掉方法,将障碍物容器里面的障碍物依次遍历是否与点击的点进行碰撞,如果是的话,我们将其设为可见状态。


bool HelloWorld::onTouchBegan(Touch *touch, Event *unused_event)
{
	for (int i = 0; i < vec_stones.size(); i++)
	{
		auto stone = vec_stones.at(i);
		if (stone->boundingBox().containsPoint(touch->getLocation()))
		{
			stone->setVisible(true);
			m_ctrl->addStone(stone->getTag());
		}
}


讲到这里,不知道有木有人已经很困了呢,好戏才刚刚开始呢,下面我们将具体介绍游戏的更深层次逻辑层,之前我们已经可以将UI响应用户的交互操作了(添加石头),但是这都只是在UI界面上的一些操作,在helloworld文件中间我们需要创建一个逻辑层,创建GameCt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值