91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

cocos2dx實戰篇——《蘿莉快跑》學習心得

發布時間:2020-04-03 14:23:55 來源:網絡 閱讀:2057 作者:shahdza 欄目:開發技術

【嘮叨】

    源碼教程請移步:http://blog.csdn.net/iamlazybone/article/details/19612941

    感謝懶骨頭提供了這么多的Demo教程,對于初學者的我而言,幫助真的十分大。

    注:本節僅僅記錄博主自身學習《蘿莉快跑》的心得體會。


【游戲截圖】

cocos2dx實戰篇——《蘿莉快跑》學習心得




【學習心得】


1、游戲主場景分層

    如果將所有的元素全部都寫在一個Game類里面,會很混亂,且改動也很麻煩。

    所以應該對游戲的元素進行分層,如:背景層、人物層、怪物層、道具層等。

    然后再將所有的層放入Game場景中,組合成完整的游戲。

    (1)人物層:GameHero.h

    (2)道具層:GameStar.h

    (3)分數層:GameMark.h

    (4)地圖層:GameMap.h


2、更換CCMenuItemImage的圖片

//
	sp->setNormalImage(CCSprite::create("sound-off-A.png"));   //正常圖片
	sp->setSelectedImage(CCSprite::create("sound-off-B.png")); //選中時圖片
//


3、精靈背景更換

//
	jump = CCTextureCache::sharedTextureCache()->addImage("s_jump.png"); //跳
	luoli->setTexture(jump);
//


4、跑動作動畫

    使用Animation/Animate動畫動作。

//
	CCAnimation* anrun = CCAnimation::create();
	
	anrun->addSpriteFrameWithFileName("s_1.png");
	anrun->addSpriteFrameWithFileName("s_2.png");
	anrun->addSpriteFrameWithFileName("s_3.png");
	anrun->addSpriteFrameWithFileName("s_4.png");
	anrun->addSpriteFrameWithFileName("s_5.png");
	anrun->addSpriteFrameWithFileName("s_6.png");
	anrun->addSpriteFrameWithFileName("s_7.png");
	anrun->addSpriteFrameWithFileName("s_8.png");
	
	anrun->setDelayPerUnit(0.1f);         //幀間隔
	anrun->setRestoreOriginalFrame(true); //是否返回初始幀
	
	CCRepeatForever* acrun = CCRepeatForever::create( CCAnimate::create(anrun) );
	luoli->runAction(acrun);
//


5、Game里地圖層的sp元素的坐標

    假設:bg1和sp都是以中心為錨點的,AnchorPoint(0.5,0.5),且sp為bg1的子節點。

    要想知道sp元素在屏幕上的坐標,就需要知道bg1在屏幕上的坐標,以及sp相對bg1的坐標。

    因為sp設置的setPosition是相對其父節點bg1的坐標,而不是在屏幕上的實際坐標

//
	//1.獲得地圖層坐標,p1是相對Game的坐標
	CCPoint p1 = gamemap->getPosition();
	
	//2.獲得sp坐標,psp是相對gamemap的坐標
	CCPoint psp = (gamemap->sp)->getPosition();
	
	//3.計算sp在Game中的坐標
	CCPoint pt = ccp(
		(p1.x - gamemap->getContentSize().width/2)  + psp.x ,
		(p2.y - gamemap->getContentSize().height/2) + psp.y );
//


6、背景滾動

    使用兩張背景圖片,從右到左滾動,超出屏幕就從新設置位置,繼續滾動。

    屏幕大小:480 X 320。

//
	//背景1
	bg1 = CCSprite::create("back_1.png");
	bg1->setPosition(ccp(240,160));
	this->addChild(bg1);

	//背景2
	bg2 = CCSprite::create("back_1.png");
	bg2->setPosition(ccp(720,160));
	this->addChild(bg2);
	

	void GameMap::update(float dt)
	{
		//向左移動2個像素
		bg1->setPosition(bg1->getPosition() - ccp(2, 0));
		bg2->setPosition(bg2->getPosition() - ccp(2, 0));

		//超出屏幕,設置坐標,重新滾動
		if (bg1->getPositionX() <= -240) {
			bg1->setPosition(ccp(720, 160));
			//重新加載背景上的道具
			resetStar(star1); 
		}
		if (bg2->getPositionX() <= -240) {
			bg2->setPosition(ccp(720, 160));
			//重新加載背景上的道具
			resetStar(star2);
		}
	}
//



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐东| 湘阴县| 梁河县| 清徐县| 阿瓦提县| 叙永县| 武强县| 鄄城县| 收藏| 邹平县| 台湾省| 城步| 五大连池市| 丘北县| 通河县| 社旗县| 易门县| 疏勒县| 安塞县| 印江| 临夏县| 腾冲县| 越西县| 南宁市| 新郑市| 介休市| 花莲县| 铜梁县| 汕头市| 鹿泉市| 普格县| 兰西县| 巴楚县| 四子王旗| 杂多县| 无棣县| 东乡族自治县| 佛教| 平湖市| 丹棱县| 大关县|