Cocos2d-x3.X入门游戏实例(一) 经典飞机大战开发笔记

         有一个多月没有写学习笔记了,主要是在学习了一段时间后觉得想整个小游戏,选来选去选择了微信飞机大战作为处女作。飞机大战内容简单,比较适合刚学习Cocos2dx的新手拿来练手,而且网上的教程和源码都很多,我就是在Jacky的飞机大战专栏的帮助下完成的。所以代码我就不会细说了,主要是为了记录和总结开发过程中遇到的问题。想看代码详解的可以去Jacky的专栏,这里给出链接:http://blog.csdn.net/column/details/jackyairplane.html

         这里说一下,之前一直都用2.2.3来学习,不过3.0貌似已经出来蛮久了,而且朋友的公司也都在用3.0开发,所以我也决定升级。在官网下载了最新的3.1版本,花了一天时间把之前所有的例子都升级了,其实差别也不是太大很快就能适应。好了,进入正题。

 

 

一、背景滚动

    如何让背景滚动,让飞机看起来像在往前飞?这大概是大部分童鞋遇到的第一个问题。思考一下会发现实现起来不难。基本原理就是:创建2个同样图片的背景精灵,图片的height要大于窗口的height,1号精灵放在正常的位置,并将2号精灵的位置设置在1号精灵的上面,然后定时器调用精灵位置移动的方法使图片看起来像在滚动。

//加载background1,background1和background2
		m_spBackground1 = Sprite::createWithSpriteFrameName("background.png");
		m_spBackground1->setAnchorPoint(Point(0, 0));
		m_spBackground1->setPosition(Point(0, 0));
		addChild(m_spBackground1);

		m_spBackground2 = Sprite::createWithSpriteFrameName("background.png");
		m_spBackground2->setAnchorPoint(Point(0, 0));
		m_spBackground2->setPosition(Point(0, m_spBackground2->getContentSize().height));
		addChild(m_spBackground2);

		//为防止运行时出现黑线,给两张背景图设置抗锯齿
		m_spBackground1->getTexture()->setAliasTexParameters();
		m_spBackground2->getTexture()->setAliasTexParameters();

		//定时器调用背景移动函数,实现背景滚动  
		this->schedule(schedule_selector(GameLayer::backgroundOnMove), 0.01f);

 

//背景滚动函数
void GameLayer::backgroundOnMove(float dt){
	//背景1的Y坐标每次-2
	m_spBackground1->setPositionY(m_spBackground1->getPositionY() - 2);
	//背景2的Y坐标在背景1的基础上-2,这里-2是为了让两张图片有部分重叠,以免看到交界处的黑线
	m_spBackground2->setPositionY(m_spBackground1->getPositionY() + m_spBackground1->getContentSize().height - 2);
	//当背景2的Y坐标滚动到了0时,马上将背景1的Y坐标还原,这样又回到了最初的位置设定
	if (m_spBackground2->getPositionY() <= 0)
	{
		m_spBackground1->setPositionY(0);
	}
}

背景滚动这样就实现了,确实很简单,这是竖屏的实现方法,如果是想横屏滚动也是同样的设置方式,这个效果在很多游戏中都会用到,还是挺实用的。

  • 0
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值