码迷,mamicode.com
首页 > 移动开发 > 详细

(NO.00003)iOS游戏简单的机器人投射游戏成形记(二十一)

时间:2015-11-13 11:43:51      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:ios   xcode   机器人   游戏   

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

@interface MainScene : CCNode <CCPhysicsCollisionDelegate>
//...
@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将开发一个类似于弹球打砖块的游戏,到时候见 ;)

版权声明:本文为博主原创文章,未经博主允许不得转载。

(NO.00003)iOS游戏简单的机器人投射游戏成形记(二十一)

标签:ios   xcode   机器人   游戏   

原文地址:http://blog.csdn.net/mydo/article/details/49815193

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!