ݺߣ

ݺߣ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

What's hot (20)

Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
Mikhail Kurnosov
Модель памяти C++ - Андрей Янковский, Яндекс
Модель памяти C++ - Андрей Янковский, ЯндексМодель памяти C++ - Андрей Янковский, Яндекс
Модель памяти C++ - Андрей Янковский, Яндекс
Yandex
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
Smolensk Computer Science Club
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
Yandex
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
OdessaFrontend
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Yandex
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
it-people
20111204 computer graphics_galinsky_lecture12_real_time
20111204 computer graphics_galinsky_lecture12_real_time20111204 computer graphics_galinsky_lecture12_real_time
20111204 computer graphics_galinsky_lecture12_real_time
Computer Science Club
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Yandex
Canvas API как инструмент для работы сграфикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы сграфикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы сграфикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы сграфикой | Odessa Frontend Meetup #18
OdessaFrontend
Максим Хромцов "Yandex MapKit для Android OS в примерах"
Максим Хромцов "Yandex MapKit для Android OS в примерах"Максим Хромцов "Yandex MapKit для Android OS в примерах"
Максим Хромцов "Yandex MapKit для Android OS в примерах"
Yandex
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Ontico
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
Mikhail Kurnosov
Роман Бусыгин "Yandex Map Kit для iOS в примерах"
Роман Бусыгин "Yandex Map Kit для iOS в примерах"Роман Бусыгин "Yandex Map Kit для iOS в примерах"
Роман Бусыгин "Yandex Map Kit для iOS в примерах"
Yandex
Произвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбараПроизвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбара
DevDay
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Andrey Karpov
Оптимизация производительности ActionScript
Оптимизация производительности ActionScriptОптимизация производительности ActionScript
Оптимизация производительности ActionScript
Valery
Clojure #1
Clojure #1Clojure #1
Clojure #1
Alexander Podkhalyuzin
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
Mikhail Kurnosov
Векторизация кода (семинар 2)
Векторизация кода (семинар 2)Векторизация кода (семинар 2)
Векторизация кода (семинар 2)
Mikhail Kurnosov
Модель памяти C++ - Андрей Янковский, Яндекс
Модель памяти C++ - Андрей Янковский, ЯндексМодель памяти C++ - Андрей Янковский, Яндекс
Модель памяти C++ - Андрей Янковский, Яндекс
Yandex
11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)11 встреча — Введение в GPGPU (А. Свириденков)
11 встреча — Введение в GPGPU (А. Свириденков)
Smolensk Computer Science Club
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации..."Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
"Адаптивный дизайн интерфейса JS API Яндекс.Карт и особенности его реализации...
Yandex
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
Как правильно делать анимацию и добиться 60fps на различных девайсах | Odessa...
OdessaFrontend
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Yandex
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
DUMP-2013 Frontend - Возможности последних WEB-стандартов в API Яндекс.Карт -...
it-people
20111204 computer graphics_galinsky_lecture12_real_time
20111204 computer graphics_galinsky_lecture12_real_time20111204 computer graphics_galinsky_lecture12_real_time
20111204 computer graphics_galinsky_lecture12_real_time
Computer Science Club
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Некоторые паттерны реализации полиморфного поведения в C++ – Дмитрий Леванов,...
Yandex
Canvas API как инструмент для работы сграфикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы сграфикой | Odessa Frontend Meetup #18Canvas API как инструмент для работы сграфикой | Odessa Frontend Meetup #18
Canvas API как инструмент для работы сграфикой | Odessa Frontend Meetup #18
OdessaFrontend
Максим Хромцов "Yandex MapKit для Android OS в примерах"
Максим Хромцов "Yandex MapKit для Android OS в примерах"Максим Хромцов "Yandex MapKit для Android OS в примерах"
Максим Хромцов "Yandex MapKit для Android OS в примерах"
Yandex
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Интерактивные 3D-карты своими руками / Александр Амосов (Avito)
Ontico
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
Mikhail Kurnosov
Роман Бусыгин "Yandex Map Kit для iOS в примерах"
Роман Бусыгин "Yandex Map Kit для iOS в примерах"Роман Бусыгин "Yandex Map Kit для iOS в примерах"
Роман Бусыгин "Yandex Map Kit для iOS в примерах"
Yandex
Произвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбараПроизвольная смена дизайна системного скроллбара
Произвольная смена дизайна системного скроллбара
DevDay
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Выявление ошибок и потенциальных уязвимостей в C и C++ коде с помощью анализа...
Andrey Karpov
Оптимизация производительности ActionScript
Оптимизация производительности ActionScriptОптимизация производительности ActionScript
Оптимизация производительности ActionScript
Valery
Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)Лекция 7. Стандарт OpenMP (подолжение)
Лекция 7. Стандарт OpenMP (подолжение)
Mikhail Kurnosov

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

Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
Pavel Tsukanov
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
Andrey Karpov
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2
Oleksii Okhrymenko
Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3.
Mikhail Shcherbakov
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Ontico
Кроссбраузерные решения в рекламной сети Яндекса
Кроссбраузерные решения в рекламной сети ЯндексаКроссбраузерные решения в рекламной сети Яндекса
Кроссбраузерные решения в рекламной сети Яндекса
Media Gorod
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
CodeFest
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
ru_Parallels
iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...
iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...
iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...
Mail.ru Group
Вадим Дробинин (Vadim Drobinin) —iMessage Apps: от стикеров до банковских пр...
Вадим Дробинин (Vadim Drobinin) —iMessage Apps: от стикеров до банковских пр...Вадим Дробинин (Vadim Drobinin) —iMessage Apps: от стикеров до банковских пр...
Вадим Дробинин (Vadim Drobinin) —iMessage Apps: от стикеров до банковских пр...
Vadim Drobinin
Роман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOSРоман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOS
Alexander Zimin
Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2
PyNSK
Podlodka i os crew 8
Podlodka i os crew 8Podlodka i os crew 8
Podlodka i os crew 8
ssuser2062cc
Кир Белевич "Touch it: универсальные тач-события и слайдер"
Кир Белевич "Touch it: универсальные тач-события и слайдер"Кир Белевич "Touch it: универсальные тач-события и слайдер"
Кир Белевич "Touch it: универсальные тач-события и слайдер"
Yandex
Intel IPP Samples for Windows - работа над ошибками
Intel IPP Samples for Windows - работа над ошибкамиIntel IPP Samples for Windows - работа над ошибками
Intel IPP Samples for Windows - работа над ошибками
Tatyanazaxarova
Введиние в разработку 3D игр для Nokia Asha телефонов
Введиние в разработку 3D игр для Nokia Asha телефоновВвединие в разработку 3D игр для Nokia Asha телефонов
Введиние в разработку 3D игр для Nokia Asha телефонов
Microsoft Mobile Developer
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)
AvitoTech
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
Noveo
Статический анализ кода
Статический анализ кода Статический анализ кода
Статический анализ кода
Pavel Tsukanov
статический анализ кода
статический анализ кодастатический анализ кода
статический анализ кода
Andrey Karpov
Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2Превышаем скоросные лимиты с Angular 2
Превышаем скоросные лимиты с Angular 2
Oleksii Okhrymenko
Когда в C# не хватает C++ . Часть 3.
Когда в C# не хватает C++. Часть 3. Когда в C# не хватает C++. Часть 3.
Когда в C# не хватает C++ . Часть 3.
Mikhail Shcherbakov
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Денормализованное хранение данных в PostgreSQL 9.2 (Александр Коротков)
Ontico
Кроссбраузерные решения в рекламной сети Яндекса
Кроссбраузерные решения в рекламной сети ЯндексаКроссбраузерные решения в рекламной сети Яндекса
Кроссбраузерные решения в рекламной сети Яндекса
Media Gorod
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
CodeFest
Сверхоптимизация кода на Python
Сверхоптимизация кода на PythonСверхоптимизация кода на Python
Сверхоптимизация кода на Python
ru_Parallels
iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...
iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...
iMessage Apps: от стикеров до банковских приложений за 30 минут, Вадим Дробин...
Mail.ru Group
Вадим Дробинин (Vadim Drobinin) —iMessage Apps: от стикеров до банковских пр...
Вадим Дробинин (Vadim Drobinin) —iMessage Apps: от стикеров до банковских пр...Вадим Дробинин (Vadim Drobinin) —iMessage Apps: от стикеров до банковских пр...
Вадим Дробинин (Vadim Drobinin) —iMessage Apps: от стикеров до банковских пр...
Vadim Drobinin
Роман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOSРоман Ермолов - Отладка приложений под iOS
Роман Ермолов - Отладка приложений под iOS
Alexander Zimin
Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2Нейронные сети и Keras. Часть 2
Нейронные сети и Keras. Часть 2
PyNSK
Кир Белевич "Touch it: универсальные тач-события и слайдер"
Кир Белевич "Touch it: универсальные тач-события и слайдер"Кир Белевич "Touch it: универсальные тач-события и слайдер"
Кир Белевич "Touch it: универсальные тач-события и слайдер"
Yandex
Intel IPP Samples for Windows - работа над ошибками
Intel IPP Samples for Windows - работа над ошибкамиIntel IPP Samples for Windows - работа над ошибками
Intel IPP Samples for Windows - работа над ошибками
Tatyanazaxarova
Введиние в разработку 3D игр для Nokia Asha телефонов
Введиние в разработку 3D игр для Nokia Asha телефоновВвединие в разработку 3D игр для Nokia Asha телефонов
Введиние в разработку 3D игр для Nokia Asha телефонов
Microsoft Mobile Developer
"Погружение в Robolectric" Дмитрий Костырев (Avito)
"Погружение в Robolectric"  Дмитрий Костырев (Avito)"Погружение в Robolectric"  Дмитрий Костырев (Avito)
"Погружение в Robolectric" Дмитрий Костырев (Avito)
AvitoTech
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
Noveo

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