2 |
void Bullet::move( float tm ) |
4 |
this ->setVisible( true ); |
5 |
auto move = MoveBy::create(0.1f,Point(0,OFFSET)); |
8 |
if ( this ->getPositionY() > Director::getInstance()->getWinSize().height) |
10 |
this ->removeFromParentAndCleanup( true ); |
12 |
auto & vector = Manager::getInstance()->getBulletVector(); |
13 |
vector.eraseObject( this ); |
之所以有一個setVisible(true)是因爲我在添加子彈的時候子彈是不顯示的,這樣做看起來子彈飛的比較流暢,是一種感官的感覺,你可以去掉這一句話,然後看下效果就明白了。還有一個是對暫停按鈕的優化,如果移植到android上,手指點擊的時候按鈕不是很靈敏,這是因爲這個按鈕的區域有點小了,所以在點擊按鈕的時候增大這個點擊的區域,移植android的時候手指點擊的時候就會很好的響應了,我們在遊戲的主場景中的onTouchBegan函數中做一個判斷,增大手指點擊按鈕響應的區域。
2 |
bool MainGame::onTouchBegan(Touch * touch,Event * pEvent) |
5 |
auto point = touch->getLocation(); |
8 |
auto menuRect = m_ui->getMenu()->getBoundingBox(); |
10 |
menuRect = Rect(menuRect.origin.x-menuRect.size.width*3, |
11 |
menuRect.origin.y-menuRect.size.height,menuRect.size.width*3,menuRect.size.height*2); |
12 |
if (menuRect.containsPoint(point)) |
14 |
m_ui->getMenu()->setSelectedIndex(1); |
15 |
m_ui->menuCallback(m_ui->getMenu()); |
19 |
auto rect = m_player->getBoundingBox(); |
20 |
if (rect.containsPoint(point)) |
這樣的話整個飛機大戰的遊戲就算做好了,關於內存的釋放問題貌似做的不是很好,不過遊戲不大,這個問題也就不想深究了。我在處理遊戲道具的時候和原來的遊戲有些不同,這都怪我沒有好好的玩玩人家的遊戲,要不就會按照他的邏輯寫了,不過我博客的處理方法倒也可以,大家根據自己的喜好做吧。移植的過程也是相當的簡單,這裏就不說了。通過這個小例子,用3.0的一些東西練了一下手,3.0的東西和2.x還是大同小異的,就是改變些函數的名稱,變量的名稱,其他的思路思想基本也沒有什麼變化,關於3.0的新內容大家可以留言討論。最後的源代碼和遊戲apk請加羣(小塔cocos2d-x交流羣298136329)索取或者到本網站的資源下載區下載。