你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> (NO.00003)iOS游戲簡單的機器人投射游戲成形記(二十一)

(NO.00003)iOS游戲簡單的機器人投射游戲成形記(二十一)

編輯:IOS開發綜合

回到Xcode中,在MainScene.h接口中添加碰撞協議:

@interface MainScene : CCNode 
//...
@end

然後在MainScene.m初始化方法中打開碰撞代理:

_physicWorld = (CCPhysicsNode*)[self getChildByName:@physicWorld recursively:YES];
    NSAssert(_physicWorld, @physicWorld must not nil);
    _physicWorld.collisionDelegate = self;

因為我們要處理的是子彈和傳感器的碰撞,所以需要添加對應的碰撞回調方法:

-(BOOL)ccPhysicsCollisionBegin:(CCPhysicsCollisionPair *)pair bullet:(CCNode *)bullet sensor:(CCNode *)sensor{
    CCPhysicsBody *phyBullet = bullet.physicsBody;
    phyBullet.collisionType = @null;

    [self scheduleBlock:^(CCTimer *timer){
        bullet.visible = NO;
        bullet.position= ccp(0, 0);
    } delay:5];

    _score++;
    _scoreLabel.string = [NSString stringWithFormat:@Score:%d,_score];    
    return NO;
}

首先取得子彈的物理對象,然後將碰撞類型改為@”null”;這是因為可能發生以下這種情況:

子彈先進入籃框接觸到感應器,但是可能會碰到籃框內壁從而向上反彈離開傳感器,接著就下落碰到傳感器,造成一顆子彈進入籃框多次計分.

將其碰撞模型設為@”null”之後,該已經碰到傳感器的子彈,不再會與傳感器發生碰撞了.當然這只是一種解決辦法.

接下來我們等到5秒之後,將該子彈設為不可見,並將其從籃框中移出,一來不影響其它射入的子彈,二來可以重用該子彈.

最後計分,並且更新Hud層中的分數標簽.

編譯運行游戲,最後效果如下:

這裡寫圖片描述

其中略去了制作Hud層的步驟,經過前幾篇的鍛煉這個應該不再話下了.

這個游戲到這裡就暫時告一段落了,接下來的游戲NO.00004將開發一個類似於彈球打磚塊的游戲,到時候見 ;)

 

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved