(NO.00001)iOS游戏SpeedBoy Lite成形记(十二)

如果选手能在加速的时候屁股产生推进器效果就跟好了,仿佛选手腾云驾雾的感觉.我们可以用Cocos2D中的CCMotionStreak类来轻松实现.下面在Player.h接口文件添加以下代码:

@property (nonatomic,strong) CCMotionStreak *streak;

然后在matchRun方法添加代码:

CCSpriteFrame *frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"ccbResources/ccbParticleSnow.png"];
        player.streak = [CCMotionStreak streakWithFade:3.f minSeg:1 width:30 color:[CCColor whiteColor] texture:frame.texture];
        NSAssert(player.streak, @"streak is nil");
        [self addChild:player.streak];

CCMotionStreak是Cocos2D中的一个特效类,特别擅长实现移动对象的拖尾效果,比如射出子弹后面的弹道等东东.这里用ParticleSnow纹理填充拖尾的图像,其他参数可以到Cocos2D API中查询.

光是这样是不能实现拖尾效果的,我们还得在适当的时候不断更新streak的位置.在神马时候呢?一个合适的地方是GameScene的update回调方法中.找到该方法,在最下方添加新的代码:

if (_matching) {
        for (Player *player in _players) {
            //如果选手速度较快,显示出加速特效
            if (player.speed.speed >= 1.2) {
                player.streak.visible = YES;
                CGPoint pos = ccp(player.position.x * _viewSize.width, \
                                  player.position.y * _viewSize.height);
                player.streak.position = pos;
            }else{
                player.streak.visible = NO;
            }
        }
    }

代码注释写的很清楚,如果选手达到一定的速度,我们给他添加拖尾的加速效果.因为SpriteBuilder中元素的定位类型是百分比,这里必须将其转换为点类型.

如果不出意外的话,编译项目,运行效果如下:

(NO.00001)iOS游戏SpeedBoy Lite成形记(十二)

上一篇:pyqt(一)安装及配置。


下一篇:使用JDBC一次执行多条语句(以MySQL为例)