如果选手能在加速的时候屁股产生推进器效果就跟好了,仿佛选手腾云驾雾的感觉.我们可以用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中元素的定位类型是百分比,这里必须将其转换为点类型.
如果不出意外的话,编译项目,运行效果如下: