(译)使用cocos2d、LevelHelper和SpriteHelper实现疯狂考拉(Pa
Jun 07, 2016 pm 03:27 PMPS:关于cocos2d国外有很多不错的教程网站,http://highoncoding.com/也是其中一个,看了他们8月17发的疯狂考拉教程,其实主要是用到了LevelHelper和SpriteHelper这两个工具,还有SneakyInput做的摇杆以及一点点的box2d,其实子龙山人很早之前也翻译过类的文
PS:关于cocos2d国外有很多不错的教程网站,http://highoncoding.com/也是其中一个,看了他们8月17发的疯狂考拉教程,其实主要是用到了LevelHelper和SpriteHelper这两个工具,还有SneakyInput做的摇杆以及一点点的box2d,其实子龙山人很早之前也翻译过类似的文章,不过我都忘了,自己尝试翻译了一下,重温这些工具的使用,郑重声明:由于本人英语水平比较烂,翻译水平有限,各位就凑合看吧!
http://highoncoding.com/Articles/868_Implementing_Kraazy_Koala_Using_Cocos2d__LevelHelper_and_SpriteHelper_Part__3.aspx
使用Joints悬挂猴子:(Hanging Monkey with Joints: )
猴子不只是坐在那里,他们倒挂在树木上或者像Tarzan那样在树枝上晃悠。借助joints的力量我们可以在我们的游戏中实现同样的效果。在LevelHelper创建joints是非常简单的。你只需要做的是选择要创建的joint的类型,然后选择其包含的bodies就行了!一个joint只能用于一个物理body。这意味着body精灵要么是静态的要么是动态的。尽管我们可以创建一个joint用于树和猴子之间,但在这里我们会使用不同的方法来实现。这里的block将是不可见的,所以它不会使我们的树难看。我们将在这篇文章中解释我们的做法的原因。
下面的屏幕截图显示了如何在block和猴子之间做一个joint。确保joint是静态的,猴子是动态的。
使用LevelHelper运行关卡,你会发现,现在的猴子从左至右晃悠很像...猴子。
注意:如果LevelHelper加载的不是您最近的更改,先关闭SceneTester,然后再次测试关卡。在SceneTester有一个bug,它不能获取最新的更变。
发射香蕉:(Shooting Bananas:)
目前,猴子是手无寸铁的,但这是改变的。我们将提供无限量的香蕉给猴子。香蕉在给定的时间间隔内扔出,这通过NSTimer类来安排实现,如在下面的代码所示:
[NSTimer scheduledTimerWithTimeInterval:8.0 target:self selector:@selector(throwBanana:) userInfo:nil repeats:YES];
以上代码每8秒触发一次throwBanana方法。 throwBanana方法实现如下:
-(void) throwBanana:(NSTimer *) timer { banana = [loader createSpriteWithName:@"fruit_banana_100" fromSheet:@"KoalaSheet" fromSHFile:@"KoalaSpriteHelper"]; banana.tag = BANANA; [banana transformPosition:CGPointMake(monkey.position.x - 100, monkey.position.y)]; banana.visible = TRUE; float randomXForce = ((arc4random() % 3) + 0.15) * -1; float randomYForce = ((arc4random() % 3) + 0.15) * 1; [banana body]->ApplyLinearImpulse(b2Vec2(randomXForce,randomYForce), banana.body->GetWorldCenter()); }
炸药:(Dynamites: )
菠萝杀不死一只猴子!我们需要炸药!在本节中,我们将用LevelHelper提供的路径选项创建一个炸药导火线。我们将把一个炸药放在树下,然后炸了猴子。
从精灵图标视图中拖拽炸药,并将其放置在树下。使用贝赛尔工具创建一条从考拉到炸药的路径,如下面的截图所示:
为了使贝塞尔有一个路径,只需在右窗格中选中该框。给贝塞尔取一个唯一的名称“DynamiteLine”。
这时我们已经制定了炸药导火线,接下来我们要点燃它。从精灵的资产视图中拖拽火花(火)精灵,并把它放在炸药导火线开始端的旁边。
“火”精灵路径被设置为沿着炸药导火线。设置“火”精灵属性,如下面的截图所示:
如果您在LevelHelper运行关卡,你会看到,火精灵开始沿着路径,当它到达终点时什么也没有发生。当火精灵到达路径的终点时我们需要触发某种形式的通知。这就是NSNotificationCenter的作用了。下面的代码实现了,使用NSNotificationCenter通知如何安排到达路径终点。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(firePathHasEnded:) name:LHPathMovementHasEndedNotification object:fire]; -(void)firePathHasEnded:(NSNotification*) notification { LHSprite *dynamite = [loader spriteWithUniqueName:@"dynamite"]; CCParticleExplosion *explosion = [[CCParticleExplosion alloc] init]; explosion.position = dynamite.position; [self addChild:explosion]; CCParticleFire *fire = [[CCParticleFire alloc] init]; fire.position = dynamite.position; [self addChild:fire]; [monkey removeAllAttachedJoints]; }
firePathHasEnded方法简单地实现了一些爆炸效果并确保猴子掉进燃烧的火海中!
下载代码:(Download Code: )
疯狂考拉的完整代码firePathHThe,可以通过以下链接从Github下载:
Kraazy Koala Source Code
总结:(Conclusion: )
在这三部分组成的教程系列中,我们学会了如何使用cocos2d LevelHelper,SpriteHelper和Kobold2d做一个完整的游戏。游戏涵盖了LevelHelper和SpriteHelper框架许多不同的方面。我们真的希望你喜欢这一系列教程。

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment utiliser les liens magnétiques

Comment utiliser les fichiers mdf et mds

Quel logiciel est CrystalDiskmark ? -Comment utiliser crystaldiskmark ?

Comment télécharger foobar2000 ? -Comment utiliser foobar2000

Comment utiliser l'application Baidu Netdisk

Comment utiliser NetEase Mailbox Master

Comment utiliser Xiaoai Speaker Comment connecter Xiaoai Speaker à un téléphone mobile

Guide simple de la source du miroir pip : maîtrisez facilement comment l'utiliser
