使用SpriteBuilder制做Cocos2D游戏彻底中文教程(四)

使用SpriteBuilder添加菜单(Add Menus Using SpriteBuilder)

如今,咱们要设置开始菜单。这开始菜单会引导咱们进入游戏场景。app

MainScene.ccb删除一切

咱们将使用MainScene做为咱们的主菜单,从项目模板中删除的默认生成的标签和背景图像。学习

设置背景图像

美术提供菜单背景的设计工做在3.5英寸(<= iPhone 4)和4英寸(> = iPhone 5)的屏幕。ui

拖动menubackground.png到屏幕上。经过保持默认锚点(0.50.5)和位置将背景图片设置到屏幕中央,并设置相对父容器位置的 xy为父容器的 50%:this

定位Sprite的这种方式确保其始终居中 - 独立的屏幕尺寸。spa

添加播放按钮

打开节点库视图(Node library View在左窗格中拖动一个按钮到舞台(Stage)。如今你须要修改选择的按钮的一些设置。在右侧面板的底部,你能够选择不一样的按钮状态下的图片。对于正常状态和高亮状态都选择button.png图片。不要担忧,若是该按钮如今看起来失真,您须要更改其余设置:首选大小应为(167.0152.0)较好的尺寸须要的图像大小的50%为视网膜图像。最后一步,删除按钮的标题”title显示:.net

连接一个方法来播放按钮

咱们但愿按下播放按钮时,咱们的游戏开始。因此,下面须要一个动做连接到被按下播放按钮。选择播放按钮,打开第二右侧面板上的选项卡。设定值selectorplay。是按下按钮时将调用的方法的名称。对于target选择“Document root” 这将致使这个方法被.CCB文件在根节点上调用:设计

如今在咱们打开XCode添加一些代码来执行Play按钮按下的动做以前还有最后一件事要检查,这个play方法将在该.ccb文件的跟节点执行。因此,让咱们看看,咱们其实有一个Objective-C类须要连接到这个.CCB文件的根节点。code

在时间轴上选择根节点的CCNode,而后再次打开右侧面板上的第二个选项卡,并检查值自定义类领域该值应为MainScene这个值是由SpriteBuilder设置为默认。orm

总得来讲就是:当Play按钮被按下后,MainScene类里面的play方法被调用。最后,在SpriteBuilder中发布此项目,以使更改推送到你的Xcode项目中!对象

将代码添加到play方法

如今是时候打开Xcode和实现咱们刚才连接的方法。打开MainScene.m并添加这个虚拟实现play方法:

- (void)play {
    CCLOG(@"play button pressed");
}

如今,您已经准备好运行该项目。每当你触摸回放按钮,您应该看到play button pressed出如今控制台:

 

建立游戏场景

如今,咱们须要建立一个新的场景。这是实际游戏发生的地方(保持耐心,咱们将在下面实现游戏的乐趣!)

到你的SpriteBuilder项目。建立名为“gameplay”的一个新的.ccb文件。选择Layer做为根节点的类型。将大小设置为960x320

添加过渡

如今,再次打开Xcode和修改MainScene类中play方法。当按下播放按钮,咱们但愿游戏被加载并显示为当前场景(gameplay场景)。使用CCBReader加载游戏。使用CCDirector装载并替换当前场景:

-  ( void ) play  { 
    CCScene  * gameplayScene  =  [ CCBReader  loadAsScene: @"Gameplay" ]; 
    [[ CCDirector  sharedDirector ]  replaceScene: gameplayScene ]; 
}

保存并运行。如今,当你点击播放按钮黑屏应该出现。

 

原文:

https://www.makegameswith.us/tutorials/getting-started-with-spritebuilder/menus/

建立你的游戏场景(Create Your Gameplay Scene)

趁热打铁,让咱们立刻进入核心游戏的开发部分!

让它显得更好些

让咱们拖动一些美术资源到咱们新添加的Gameplay.ccb文件中,首先拖动background.png到舞台中,设置位置和锚点为(0,0),这将确保背景能很好的与场景的边界对齐。

接下来,让咱们添加咱们先前建立的熊。Spritebuilder让你的.ccb文件能包含其余的.ccb文件。这是一个超级强大的功能,咱们将普遍使用利用它。从节点库(Node Library)中拖拽一个Sub File节点到舞台(stage)中,并选择Bear.ccbCCB File

如今,咱们以前定义的熊精灵(bear sprite)就成了游戏场景的一部分了!

如今添加ground.png舞台中,设置位置和锚点为(0,0)。

最后拖动catapult.pngcatapultarm.png舞台中构建弹射车,将投射臂放置在投射车身下面以达到图层部分遮挡的效果,请注意:你可以经过改变屏幕下方时间轴中对象的顺序来改变在场景中对象的Z轴顺序。

如今,发布您的SpriteBuilder项目,并在模拟器中运行它。在击中播放按钮后,你应该会看到相似这样的东西:

发射一些企鹅

咱们首先要实现一个简单的射击机制。在cocos2d中,物理对象只能是物理节点的子节点。因为咱们发射的企鹅将要进行物理模拟,咱们如今要添加一个物理节点到咱们的场景中。

Spritebuilder

从节点库中拖动PhysicsNode到场景中,并设置位置为(0,0)。咱们将在代码中实现企鹅的发射机制,因此咱们须要设置一些代码链接。

首先,将Gameplay根节点(CCNode)的自定义类(custom class)属性设置为“Gameplay”。而后设置一个CCPhysicsNode的成员变量连接。咱们但愿将它分配给文件的根变量(Doc root var的变量名为“_physicsNode” 这就将这个物理节点连接到一个称为 “Gameplay” 类的“_physicsNode”变量:

如今,咱们就能够从代码中访问这个物理节点。这使咱们可以将发射的企鹅添加到场景中。

 

如今,建立另外一个你须要的代码链接,我们但愿catapultarm经过一个叫作_catapultArm变量能够访问Gameplay类。

Xcode

如今,咱们须要切换到Xcode中来实现发射方法。首先,建立一个Gameplay类,这个类必须是CCNode的子类,必须确保这个类被正确地建立在Sources文件夹下。添加成员变量_physicsNode_catapultArmGameplay.m中:

@implementation Gameplay {
    CCPhysicsNode *_physicsNode;
    CCNode *_catapultArm;
}

每当玩家触摸屏时简单的发射机制将被触发。咱们将用代码来实现这个触摸操控。

添加这三种方法到Gameplay.m中实现激活触摸操控和发射企鹅:

// is called when CCB file has completed loading
- (void)didLoadFromCCB {
    // tell this scene to accept touches
    self.userInteractionEnabled = TRUE;
}
 
// called on every touch in this scene
- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
    [self launchPenguin];
}
 
- (void)launchPenguin {
    // loads the Penguin.ccb we have set up in Spritebuilder
    CCNode* penguin = [CCBReader load:@"Penguin"];
    // position the penguin at the bowl of the catapult
    penguin.position = ccpAdd(_catapultArm.position, ccp(16, 50));
    // add the penguin to the physicsNode of this scene (because it has physics enabled)
    [_physicsNode addChild:penguin];
    // manually create & apply a force to launch the penguin
    CGPoint launchDirection = ccp(1, 0);
    CGPoint force = ccpMult(launchDirection, 8000);
    [penguin.physicsBody applyForce:force];
}

如今,当您运行您的应用程序,而后触摸屏,你应该会看到企鹅在场景中飞扬:

原文:

https://www.makegameswith.us/tutorials/getting-started-with-spritebuilder/creating-two-levels/

在下一节中将介绍一个SpriteBuilder中很重要的概念Level(级别),主要讲解如何制做Level!转载请说明出处,wealpan将和您一块儿学习Spritebuilder!谢谢你们!

相关文章
相关标签/搜索