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

52
Разработка игр с помощью cocos2d

description

Презентация с Станислава Красноярова «Создание игр с помощью Cocos2D», который прошел 24 ноября 2012 года в рамках 2Niversity: http://2niversity.ru/?tiny=16 Станислав Краснояров — руководитель команды/разработчик с десятилетним стажем. С момента выхода iPhone SDK вместе с небольшой командой занимается портированием игр с PC на iOS (Objective-C, C++, cocos-2d). Преподаватель авторского курса по разработке под iOS.

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

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

Разработка игр с помощью cocos2d

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

Home Sweet Home

Treasure Masters, Inc.

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

– “Компьютерные игры – это перемещение картинок на экране в ответ на действия игрока”

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

рендерингспрайтовая анимацияпокадровая анимацияобработка вводаобработка коллизий

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

cocos2d-iphone Objective-C / iOS

cocos2d-x C++/crossplatform

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

v. 1.x OpenGL ES 1.1v. 2.x OpenGL ES 2.0

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

Объектная модель

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

CCNodepositionscalerotationchildren

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

CCNode

CCScene CCSprite Customimage

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

CCScene

PlayerNode : CCNode

CCSprite

EnemyNode : CCNode

CCSprite

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

DEMO

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

CCNodepositionscalerotationanchorPointchildren

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

anchorPoint = (0, 0) anchorPoint = (0.5, 0.5)

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

anchorPoint = (0, 0) anchorPoint = (0.5, 0.5)

scale

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

anchorPoint = (0, 0) anchorPoint = (0.5, 0.5)

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

anchorPoint = (0, 0) anchorPoint = (0.5, 0.5)

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

Спрайтовая анимация

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

Спрайтовая анимация

update (float dt) { if (state == Moving) {

position.x += 5 * dt; }}

CustomNode

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

Спрайтовая анимация

update (float dt) { if (state == Moving) {

position.x += 5 * dt; }}

action = new MoveAction(50 /* x */,

0 /* y */, 5 /* sec */)

node->runAction(action)

обычно cocos2d

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

Виды действийбазовые действия

CCMoveTo, CCMoveByCCScaleTo, CCScaleBy...

управление

CCSequence, CCSpawn, CCRepeat, CCRepeatForever

callback

CCCallFunc

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

Покадровая анимация

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

Покадровая анимация

• CCAnimation – набор кадров

• addFrame(“frame_x.png”)

• CCAnimate::create – action

• CCNode::runAction(CCAnimate ... )

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

DEMO

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

Обработка нажатий

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

CCNode

CCScene CCSprite Customimage

CCLayer

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

CCScene

hudLayer : CCLayer

...

gameLayer : CCLayer

...

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

CCTargetedDelegate

virtual bool ccTouchBegan(CCTouch *, CCEvent *);virtual void ccTouchMoved(CCTouch *, CCEvent *);virtual void ccTouchEnded(CCTouch *, CCEvent *);virtual void ccTouchCancelled(CCTouch *, CCEvent *);

ControlLayer : CCLayer

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

c-tor() { setIsTouchEnabled(true);}

void X::registerWithTouchDispatcher(){ CCDirector::sharedDirector()

->getTouchDispatcher() ->addTargetedDelegate(this, 0, true);

}

ControlLayer : CCLayer

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

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

return true;}

ControlLayer : CCLayer

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

DEMO

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

Обработка коллизий

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

for each bullet for each enemy if (bullet

hits enemy)

enemy hit

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

DEMO

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

• Объектная модель

• Отрисовка с помощью CCSprite

• Спрайтовая анимация (update или action)

• Покадровая анимация

• Обработка нажатий

• Обработка коллизий

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

Первые шаги

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

• Скачать и установить cocos2d/cocos2d-x

• Создать и запустить проект по шаблону

• (опц.) Обсудить реализацию игры

• Создать первый класс игрового объекта

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

Текстурные атласы

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

CCSpriteSheet

CCSprite

CCSprite

CCSprite

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

Particle System

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

CCParticleSystem .position .velocity .gravity .texture...addChild(system)