www.it-ebooks.info Praise for Learning Cocos2D “If you’re looking to create an iPhone or iPad game, Learning Cocos2D should be the first book on your shopping list. Rod and Ray do a phenomenal job of taking you through the entire process from concept to app, clearly explaining both how to do each step as well as why you’re dong it.” —Jeff LaMarche, Principal, MartianCraft, LLC, and coauthor of Beginning iPhone Development (Apress, 2009) “This book provides an excellent introduction to iOS 2D game develop- ment. Beyond that, the book also provides one of the best introductions to Box2D available. I am truly impressed with the detail and depth of Box2D coverage.” —Erin Catto, creator of Box2D “Warning: reading this book will make you need to write a game! Learning Cocos2D is a great fast-forward into writing the next hit game for iOS— definitely a must for the aspiring indie iOS game developer (regardless of experience level)! Thanks, Rod and Ray, for letting me skip the learning curve; you’ve really saved my bacon!” —Eric Hayes, Principle Engineer, Brewmium LLC (and Indie iOS Developer) “Learning Cocos2D is an outstanding read, and I highly recommend it to any iOS developer wanting to get into game development with Cocos2D. This book gave me the knowledge and confidence I needed to write an iOS game without having to be a math and OpenGL whiz.” —Kirby Turner, White Peak Software, Inc. “Learning Cocos2D is both an entertaining and informative book; it covers everything you need to know about creating games using Cocos2D.” —Fahim Farook, RookSoft (rooksoft.co.nz) “This is the premiere book on Cocos2D! After reading this book you will have a firm grasp of the framework, and you will be able to create a few different types of games. Rod and Ray get you quickly up to speed with the basics in the first group of chapters. The later chapters cover the more advanced features, such as parallax scrolling, CocosDenshion, Box2D, Chipmunk, particle systems, and Apple Game Center. The authors’ writing style is descriptive, concise, and fun to read. This book is a must have!” —Nick Waynik, iOS Developer www.it-ebooks.info This page intentionally left blank www.it-ebooks.info Learning Cocos2D www.it-ebooks.info (cid:34)(cid:69)(cid:69)(cid:74)(cid:84)(cid:80)(cid:79)(cid:14)(cid:56)(cid:70)(cid:84)(cid:77)(cid:70)(cid:90)(cid:3)(cid:45)(cid:70)(cid:66)(cid:83)(cid:79)(cid:74)(cid:79)(cid:72)(cid:3)(cid:52)(cid:70)(cid:83)(cid:74)(cid:70)(cid:84)(cid:3) (cid:55)(cid:74)(cid:84)(cid:74)(cid:85)(cid:3)(cid:76)(cid:81)(cid:73)(cid:82)(cid:85)(cid:80)(cid:76)(cid:87)(cid:17)(cid:70)(cid:82)(cid:80)(cid:18)(cid:79)(cid:72)(cid:68)(cid:85)(cid:81)(cid:76)(cid:81)(cid:74)(cid:86)(cid:72)(cid:85)(cid:76)(cid:72)(cid:86)(cid:3)(cid:71)(cid:80)(cid:83)(cid:3)(cid:66)(cid:3)(cid:68)(cid:80)(cid:78)(cid:81)(cid:77)(cid:70)(cid:85)(cid:70)(cid:3)(cid:77)(cid:74)(cid:84)(cid:85)(cid:3)(cid:80)(cid:71)(cid:3)(cid:66)(cid:87)(cid:66)(cid:74)(cid:77)(cid:66)(cid:67)(cid:77)(cid:70)(cid:3)(cid:81)(cid:86)(cid:67)(cid:77)(cid:74)(cid:68)(cid:66)(cid:85)(cid:74)(cid:80)(cid:79)(cid:84)(cid:15) (cid:53)(cid:73)(cid:70)(cid:3)(cid:36)(cid:71)(cid:71)(cid:76)(cid:86)(cid:82)(cid:81)(cid:16)(cid:58)(cid:72)(cid:86)(cid:79)(cid:72)(cid:92)(cid:3)(cid:47)(cid:72)(cid:68)(cid:85)(cid:81)(cid:76)(cid:81)(cid:74)(cid:3)(cid:54)(cid:72)(cid:85)(cid:76)(cid:72)(cid:86)(cid:3)(cid:74)(cid:84)(cid:3)(cid:66)(cid:3)(cid:68)(cid:80)(cid:77)(cid:77)(cid:70)(cid:68)(cid:85)(cid:74)(cid:80)(cid:79)(cid:3)(cid:80)(cid:71)(cid:3)(cid:73)(cid:66)(cid:79)(cid:69)(cid:84)(cid:14)(cid:80)(cid:79)(cid:3)(cid:81)(cid:83)(cid:80)(cid:72)(cid:83)(cid:66)(cid:78)(cid:78)(cid:74)(cid:79)(cid:72)(cid:3) (cid:72)(cid:86)(cid:74)(cid:69)(cid:70)(cid:84)(cid:3)(cid:85)(cid:73)(cid:66)(cid:85)(cid:3)(cid:73)(cid:70)(cid:77)(cid:81)(cid:3)(cid:90)(cid:80)(cid:86)(cid:3)(cid:82)(cid:86)(cid:74)(cid:68)(cid:76)(cid:77)(cid:90)(cid:3)(cid:77)(cid:70)(cid:66)(cid:83)(cid:79)(cid:3)(cid:66)(cid:3)(cid:79)(cid:70)(cid:88)(cid:3)(cid:85)(cid:70)(cid:68)(cid:73)(cid:79)(cid:80)(cid:77)(cid:80)(cid:72)(cid:90)(cid:3)(cid:80)(cid:83)(cid:3)(cid:77)(cid:66)(cid:79)(cid:72)(cid:86)(cid:66)(cid:72)(cid:70)(cid:3)(cid:84)(cid:80)(cid:3)(cid:90)(cid:80)(cid:86)(cid:3)(cid:68)(cid:66)(cid:79)(cid:3) (cid:66)(cid:81)(cid:81)(cid:77)(cid:90)(cid:3)(cid:88)(cid:73)(cid:66)(cid:85)(cid:3)(cid:90)(cid:80)(cid:86)(cid:8)(cid:87)(cid:70)(cid:3)(cid:77)(cid:70)(cid:66)(cid:83)(cid:79)(cid:70)(cid:69)(cid:3)(cid:83)(cid:74)(cid:72)(cid:73)(cid:85)(cid:3)(cid:66)(cid:88)(cid:66)(cid:90)(cid:15) (cid:38)(cid:66)(cid:68)(cid:73)(cid:3)(cid:85)(cid:74)(cid:85)(cid:77)(cid:70)(cid:3)(cid:68)(cid:80)(cid:78)(cid:70)(cid:84)(cid:3)(cid:88)(cid:74)(cid:85)(cid:73)(cid:3)(cid:84)(cid:66)(cid:78)(cid:81)(cid:77)(cid:70)(cid:3)(cid:68)(cid:80)(cid:69)(cid:70)(cid:3)(cid:71)(cid:80)(cid:83)(cid:3)(cid:85)(cid:73)(cid:70)(cid:3)(cid:66)(cid:81)(cid:81)(cid:77)(cid:74)(cid:68)(cid:66)(cid:85)(cid:74)(cid:80)(cid:79)(cid:3)(cid:80)(cid:83)(cid:3)(cid:66)(cid:81)(cid:81)(cid:77)(cid:74)(cid:68)(cid:66)(cid:85)(cid:74)(cid:80)(cid:79)(cid:84)(cid:3)(cid:67)(cid:86)(cid:74)(cid:77)(cid:85)(cid:3)(cid:74)(cid:79)(cid:3)(cid:3) (cid:85)(cid:73)(cid:70)(cid:3)(cid:85)(cid:70)(cid:89)(cid:85)(cid:15)(cid:3)(cid:53)(cid:73)(cid:74)(cid:84)(cid:3)(cid:68)(cid:80)(cid:69)(cid:70)(cid:3)(cid:74)(cid:84)(cid:3)(cid:71)(cid:86)(cid:77)(cid:77)(cid:90)(cid:3)(cid:66)(cid:79)(cid:79)(cid:80)(cid:85)(cid:66)(cid:85)(cid:70)(cid:69)(cid:3)(cid:66)(cid:79)(cid:69)(cid:3)(cid:68)(cid:66)(cid:79)(cid:3)(cid:67)(cid:70)(cid:3)(cid:83)(cid:70)(cid:86)(cid:84)(cid:70)(cid:69)(cid:3)(cid:74)(cid:79)(cid:3)(cid:90)(cid:80)(cid:86)(cid:83)(cid:3)(cid:80)(cid:88)(cid:79)(cid:3)(cid:81)(cid:83)(cid:80)(cid:75)(cid:70)(cid:68)(cid:85)(cid:84)(cid:3) (cid:88)(cid:74)(cid:85)(cid:73)(cid:3)(cid:79)(cid:80)(cid:3)(cid:84)(cid:85)(cid:83)(cid:74)(cid:79)(cid:72)(cid:84)(cid:3)(cid:66)(cid:85)(cid:85)(cid:66)(cid:68)(cid:73)(cid:70)(cid:69)(cid:15)(cid:3)(cid:46)(cid:66)(cid:79)(cid:90)(cid:3)(cid:68)(cid:73)(cid:66)(cid:81)(cid:85)(cid:70)(cid:83)(cid:84)(cid:3)(cid:70)(cid:79)(cid:69)(cid:3)(cid:88)(cid:74)(cid:85)(cid:73)(cid:3)(cid:66)(cid:3)(cid:84)(cid:70)(cid:83)(cid:74)(cid:70)(cid:84)(cid:3)(cid:80)(cid:71)(cid:3)(cid:70)(cid:89)(cid:70)(cid:83)(cid:68)(cid:74)(cid:84)(cid:70)(cid:84)(cid:3)(cid:85)(cid:80)(cid:3) (cid:70)(cid:79)(cid:68)(cid:80)(cid:86)(cid:83)(cid:66)(cid:72)(cid:70)(cid:3)(cid:90)(cid:80)(cid:86)(cid:3)(cid:85)(cid:80)(cid:3)(cid:83)(cid:70)(cid:70)(cid:89)(cid:66)(cid:78)(cid:74)(cid:79)(cid:70)(cid:3)(cid:88)(cid:73)(cid:66)(cid:85)(cid:3)(cid:90)(cid:80)(cid:86)(cid:3)(cid:73)(cid:66)(cid:87)(cid:70)(cid:3)(cid:75)(cid:86)(cid:84)(cid:85)(cid:3)(cid:77)(cid:70)(cid:66)(cid:83)(cid:79)(cid:70)(cid:69)(cid:13)(cid:3)(cid:66)(cid:79)(cid:69)(cid:3)(cid:85)(cid:80)(cid:3)(cid:85)(cid:88)(cid:70)(cid:66)(cid:76)(cid:3)(cid:80)(cid:83)(cid:3)(cid:3) (cid:66)(cid:69)(cid:75)(cid:86)(cid:84)(cid:85)(cid:3)(cid:85)(cid:73)(cid:70)(cid:3)(cid:68)(cid:80)(cid:69)(cid:70)(cid:3)(cid:66)(cid:84)(cid:3)(cid:66)(cid:3)(cid:88)(cid:66)(cid:90)(cid:3)(cid:80)(cid:71)(cid:3)(cid:77)(cid:70)(cid:66)(cid:83)(cid:79)(cid:74)(cid:79)(cid:72)(cid:15)(cid:3) (cid:53)(cid:74)(cid:85)(cid:77)(cid:70)(cid:84)(cid:3)(cid:74)(cid:79)(cid:3)(cid:85)(cid:73)(cid:74)(cid:84)(cid:3)(cid:84)(cid:70)(cid:83)(cid:74)(cid:70)(cid:84)(cid:3)(cid:85)(cid:66)(cid:76)(cid:70)(cid:3)(cid:66)(cid:3)(cid:84)(cid:74)(cid:78)(cid:81)(cid:77)(cid:70)(cid:3)(cid:66)(cid:81)(cid:81)(cid:83)(cid:80)(cid:66)(cid:68)(cid:73)(cid:27)(cid:3)(cid:85)(cid:73)(cid:70)(cid:90)(cid:3)(cid:72)(cid:70)(cid:85)(cid:3)(cid:90)(cid:80)(cid:86)(cid:3)(cid:72)(cid:80)(cid:74)(cid:79)(cid:72)(cid:3)(cid:83)(cid:74)(cid:72)(cid:73)(cid:85)(cid:3)(cid:66)(cid:88)(cid:66)(cid:90)(cid:3)(cid:66)(cid:79)(cid:69)(cid:3) (cid:77)(cid:70)(cid:66)(cid:87)(cid:70)(cid:3)(cid:90)(cid:80)(cid:86)(cid:3)(cid:88)(cid:74)(cid:85)(cid:73)(cid:3)(cid:85)(cid:73)(cid:70)(cid:3)(cid:66)(cid:67)(cid:74)(cid:77)(cid:74)(cid:85)(cid:90)(cid:3)(cid:85)(cid:80)(cid:3)(cid:88)(cid:66)(cid:77)(cid:76)(cid:3)(cid:80)(cid:71)(cid:71)(cid:3)(cid:66)(cid:79)(cid:69)(cid:3)(cid:67)(cid:86)(cid:74)(cid:77)(cid:69)(cid:3)(cid:90)(cid:80)(cid:86)(cid:83)(cid:3)(cid:80)(cid:88)(cid:79)(cid:3)(cid:66)(cid:81)(cid:81)(cid:77)(cid:74)(cid:68)(cid:66)(cid:85)(cid:74)(cid:80)(cid:79)(cid:3)(cid:66)(cid:79)(cid:69)(cid:3)(cid:66)(cid:81)(cid:81)(cid:77)(cid:90)(cid:3) (cid:85)(cid:73)(cid:70)(cid:3)(cid:77)(cid:66)(cid:79)(cid:72)(cid:86)(cid:66)(cid:72)(cid:70)(cid:3)(cid:80)(cid:83)(cid:3)(cid:85)(cid:70)(cid:68)(cid:73)(cid:79)(cid:80)(cid:77)(cid:80)(cid:72)(cid:90)(cid:3)(cid:85)(cid:80)(cid:3)(cid:88)(cid:73)(cid:66)(cid:85)(cid:70)(cid:87)(cid:70)(cid:83)(cid:3)(cid:90)(cid:80)(cid:86)(cid:3)(cid:66)(cid:83)(cid:70)(cid:3)(cid:88)(cid:80)(cid:83)(cid:76)(cid:74)(cid:79)(cid:72)(cid:3)(cid:80)(cid:79)(cid:15) www.it-ebooks.info Learning Cocos2D A Hands-On Guide to Building iOS Games with Cocos2D, Box2D, and Chipmunk Rod Strougo Ray Wenderlich Upper Saddle River, NJ • Boston • Indianapolis • San Francisco New York • Toronto • Montreal • London • Munich • Paris • Madrid Capetown • Sydney • Tokyo • Singapore • Mexico City www.it-ebooks.info Many of the designations used by manufacturers and sellers to distinguish their products Editor-in-Chief are claimed as trademarks. Where those designations appear in this book, and the pub- Mark Taub lisher was aware of a trademark claim, the designations have been printed with initial Acquisitions Editor capital letters or in all capitals. Chuck Toporek The authors and publisher have taken care in the preparation of this book, but make no Managing Editor expressed or implied warranty of any kind and assume no responsibility for errors or John Fuller omissions. No liability is assumed for incidental or consequential damages in connection with or arising out of the use of the information or programs contained herein. Project Editor Anna Popick The publisher offers excellent discounts on this book when ordered in quantity for bulk purchases or special sales, which may include electronic versions and/or custom covers Copy Editor and content particular to your business, training goals, marketing focus, and branding Carol Lallier interests. For more information, please contact: Indexer U.S. Corporate and Government Sales Jack Lewis (800) 382-3419 Proofreader [email protected] Lori Newhouse For sales outside the United States please contact: Editorial Assistant International Sales Olivia Basegio [email protected] Cover Designer Visit us on the Web: informit.com/aw Chuti Prasertsith Library of Congress Cataloging-in-Publication Data Compositor The CIP Group Strougo, Rod, 1976- Learning Cocos2D : a hands-on guide to building iOS games with Cocos2D, Box2D, and Chipmunk / Rod Strougo, Ray Wenderlich. p. cm. Includes index. ISBN-13: 978-0-321-73562-1 (pbk. : alk. paper) ISBN-10: 0-321-73562-5 (pbk. : alk. paper) 1. iPhone (Smartphone)—Programming. 2. iPad (Computer)—Programming. 3. Computer games—Programming. I. Wenderlich, Ray, 1980- II. Title. QA76.8.I64S87 2011 794.8’1526—dc23 2011014419 Copyright © 2012 Pearson Education, Inc. All rights reserved. Printed in the United States of America. This publication is protected by copyright, and permission must be obtained from the publisher prior to any prohibited reproduction, storage in a retrieval system, or transmission in any form or by any means, electronic, mechanical, photocopying, recording, or likewise. For information regarding permissions, write to: Pearson Education, Inc. Rights and Contracts Department 501 Boylston Street, Suite 900 Boston, MA 02116 Fax: (617) 671-3447 ISBN-13: 978-0-321-73562-1 ISBN-10: 0-321-73562-5 Text printed in the United States on recycled paper at RR Donnelley in Crawfordsville, Indiana. First printing, July 2011 www.it-ebooks.info ❖ Dedicated to my wife, Agata. —Rod Dedicated to my wife, Vicki. —Ray ❖ www.it-ebooks.info This page intentionally left blank www.it-ebooks.info Contents at a Glance Preface xxi Acknowledgments xxxiii About the Authors xxxvii I Getting Started with Cocos2D 1 1 Hello, Cocos2D 3 2 Hello, Space Viking 23 3 Introduction to Cocos2D Animations and Actions 57 4 Simple Collision Detection and the First Enemy 83 II More Enemies and More Fun 115 5 More Actions, Effects, and Cocos2D Scheduler 117 6 Text, Fonts, and the Written Word 151 III From Level to Game 167 7 Main Menu, Level Completed, and Credits Scenes 169 8 Pump Up the Volume! 197 9 When the World Gets Bigger: Adding Scrolling 231 IV Physics Engines 277 10 Basic Game Physics: Adding Realism with Box2D 279 11 Intermediate Game Physics: Modeling, Racing, and Leaping 333 12 Advanced Game Physics: Even Better than the Real Thing 375 13 The Chipmunk Physics Engine (No Alvin Required) 419 www.it-ebooks.info