Learning Cocos2D: A Hands-On Guide to Building iOS Games with Cocos2D, Box2D, and Chipmunk
Rod Strougo, Ray Wenderlich
Language: English
Pages: 640
ISBN: 0321735625
Format: PDF / Kindle (mobi) / ePub
Build the Next Great iOS Game with Cocos2D!
Cocos2D is the powerhouse framework behind some of the most popular games in the App Store. If you’ve played Tiny Wings, Angry Birds, Mega Jump, Trainyard, or even Super Turbo Action Pig, then you’ve played a game that uses Cocos2D or Box2D physics. The beauty of Cocos2D is its simplicity. It’s easy to become overwhelmed when you start developing an iOS game, especially if you look at things like OpenGL ES, OpenAL, and other lower level APIs. Writing a game for the iPhone and iPad does not have to be that difficult, and Cocos2D makes game development fun and easy.
Learning Cocos2D walks you through the process of building Space Viking (which is free on the App Store), a 2D scrolling game that leverages Cocos2D, Box2D, and Chipmunk. As you build Space Viking, you’ll learn everything you need to know about Cocos2D so you can create the next killer iOS game.
Download the free version of Space Viking from the App Store today! Help Ole find his way home while learning how to build the game.
As you build Space Viking, you’ll learn how to
- Install and configure Cocos2D so it works with Xcode 4
- Build a complete 2D action adventure game with Cocos2D
- Add animations and movement to your games
- Build your game’s main menu screen for accessing levels
- Use Cocos2D’s Scheduler to make sure the right events happen at the right times
- Use tile maps to build scrolling game levels from reusable images
- Add audio and sound effects with CocosDenshion—Cocos2D’s sound engine
- Add gravity, realistic collisions, and even ragdoll effects with Box2D and Chipmunk physics engines
- Add amazing effects to your games with particle systems
- Leverage Game Center in your game for achievements and leader boards
- Squeeze the most performance from your games along with tips and tricks
filename, and click Save. Xcode automatically creates the header file for you, setting up the basics so that all you need to do is add any instance variables or properties to the header file. 5. Open the GameplayLayer.h header file and add the #import line for Cocos2D and an instance variable called vikingSprite, which holds the sprite, as shown in Listing 2.3. The changed GameplayLayer.h header is shown in Listing 2.3. Listing 2.3 GameplayLayer.h #import
and “runs” a 31 32 Chapter 2 Hello, Space Viking particular scene. At the moment, your game will have just one scene, the GameScene. You’ll see how to add more scenes to Cocos2D and transition between them in Chapter 7, “Main Menu, Level Completed, and Credit Scenes.” Creating the GameScene Select and right-click on the Classes folder, and then choose New File. Select the iOS\Cocoa Touch\Objective-C class and click Next. For the Subclass field, enter CCScene and click Next. Type in
forTimeDelta:(float)deltaTime { CGPoint scaledVelocity = ccpMult(aJoystick.velocity, 1024.0f); // 1 CGPoint newPosition = ccp(tempNode.position.x + scaledVelocity.x * deltaTime, tempNode.position.y + scaledVelocity.y * deltaTime); // 2 [tempNode setPosition:newPosition]; // 3 if (jumpButton.active == YES) { CCLOG(@"Jump button is pressed."); } if (attackButton.active == YES) { CCLOG(@"Attack button is pressed."); } // 4 // 5 } 1. Gets the velocity from the joystick object and multiplies
replace the GameplayLayer class with any other class that implements the GameplayLayerDelegate protocol. The next step is to set up the SpaceCargoShip implementation file. Open the SpaceCargoShip.m implementation file and replace the code with the contents of Listing 5.6. Listing 5.6 SpaceCargoShip.m implementation file // SpaceCargoShip.m // SpaceViking // #import "SpaceCargoShip.h" @implementation SpaceCargoShip @synthesize delegate; -(void)dropCargo { CGPoint cargoDropPosition =
*headHitAnim; @property (nonatomic, retain) CCAnimation *robotDeathAnim; @property (nonatomic,assign) CCLabelBMFont *myDebugLabel; -(void)initAnimations; @end Switch over to the EnemyRobot.m implementation file. Immediately below the @synthesize delegate statement, add the following line: @synthesize myDebugLabel; These three lines take care of making the myDebugLabel variable accessible from outside EnemyRobot so that it can be set by the GameplayLayer. Next, you need a small method so that