ݺߣ

ݺߣShare a Scribd company logo
Разработка игр с
помощью cocos2d
Home Sweet Home

              Treasure Masters, Inc.
– “Компьютерные игры – это
  перемещение картинок на
  экране в ответ на действия
  игрока”
Создание игр с помощью Cocos2D (Станислав Краснояров)
Создание игр с помощью Cocos2D (Станислав Краснояров)
Создание игр с помощью Cocos2D (Станислав Краснояров)
рендеринг
спрайтовая анимация
покадровая анимация
обработка ввода
обработка коллизий
Создание игр с помощью Cocos2D (Станислав Краснояров)
cocos2d-iphone
  Objective-C / iOS

cocos2d-x
  C++/crossplatform
v. 1.x OpenGL ES 1.1
v. 2.x OpenGL ES 2.0
Объектная модель
CCNode
position
scale
rotation
children
CCNode

CCScene CCSprite Custom
          image
Создание игр с помощью Cocos2D (Станислав Краснояров)
CCScene
   PlayerNode : CCNode
      CCSprite
  EnemyNode : CCNode
     CCSprite
DEMO
CCNode
position
scale
rotation
anchorPoint
children
anchorPoint = (0, 0)   anchorPoint = (0.5, 0.5)
scale




anchorPoint = (0, 0)           anchorPoint = (0.5, 0.5)
anchorPoint = (0, 0)   anchorPoint = (0.5, 0.5)
anchorPoint = (0, 0)   anchorPoint = (0.5, 0.5)
Спрайтовая анимация
Спрайтовая анимация
    CustomNode
     update (float dt) {
       if (state == Moving) {
          position.x += 5 * dt;
       }
     }
Спрайтовая анимация
     обычно                         cocos2d

update (float dt) {           action = new
  if (state == Moving) {      MoveAction(50 /* x */,
     position.x += 5 * dt;                0 /* y */,
  }                                       5 /* sec */)
}
                             node->runAction(action)
Виды действий
базовые действия            callback

CCMoveTo, CCMoveBy          CCCallFunc
CCScaleTo, CCScaleBy
...

управление

CCSequence, CCSpawn,
CCRepeat, CCRepeatForever
Покадровая анимация
Создание игр с помощью Cocos2D (Станислав Краснояров)
Покадровая анимация

• CCAnimation – набор кадров
 • addFrame(“frame_x.png”)
• CCAnimate::create – action
• CCNode::runAction(CCAnimate ... )
DEMO
Обработка нажатий
CCNode   CCLayer

CCScene CCSprite Custom
        image
CCScene
   hudLayer : CCLayer
      ...
  gameLayer : CCLayer
     ...
ControlLayer : CCLayer
               CCTargetedDelegate

virtual bool ccTouchBegan(CCTouch *, CCEvent *);
virtual void ccTouchMoved(CCTouch *, CCEvent *);
virtual void ccTouchEnded(CCTouch *, CCEvent *);
virtual void ccTouchCancelled(CCTouch *, CCEvent *);
ControlLayer : CCLayer
c-tor() {
   setIsTouchEnabled(true);
}

void X::registerWithTouchDispatcher()
{
  CCDirector::sharedDirector()
    ->getTouchDispatcher()
    ->addTargetedDelegate(this, 0, true);
}
ControlLayer : CCLayer


bool X::ccTouchBegan(CCTouch *pTouch, CCEvent *) {
 CCPoint touchPoint = convertTouchToNodeSpace(pTouch);
 ...

    return true;
}
DEMO
Обработка коллизий
for each bullet
   for each enemy
      if (bullet
          hits enemy)

        enemy hit
Создание игр с помощью Cocos2D (Станислав Краснояров)
Создание игр с помощью Cocos2D (Станислав Краснояров)
DEMO
• Объектная модель
• Отрисовка с помощью CCSprite
• Спрайтовая анимация (update или action)
• Покадровая анимация
• Обработка нажатий
• Обработка коллизий
Первые шаги
• Скачать и установить cocos2d/cocos2d-x
• Создать и запустить проект по шаблону
• (опц.) Обсудить реализацию игры
• Создать первый класс игрового объекта
Создание игр с помощью Cocos2D (Станислав Краснояров)
Текстурные атласы
Создание игр с помощью Cocos2D (Станислав Краснояров)
Создание игр с помощью Cocos2D (Станислав Краснояров)
Создание игр с помощью Cocos2D (Станислав Краснояров)
CCSpriteSheet
   CCSprite
   CCSprite
   CCSprite
Particle System
CCParticleSystem
   .position
   .velocity
   .gravity
   .texture
...
addChild(system)

More Related Content

Создание игр с помощью Cocos2D (Станислав Краснояров)