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

Post on 18-Jun-2015

1.193 views 8 download

Tags:

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

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

Home Sweet Home

Treasure Masters, Inc.

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

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

cocos2d-iphone Objective-C / iOS

cocos2d-x C++/crossplatform

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

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

CCNodepositionscalerotationchildren

CCNode

CCScene CCSprite Customimage

CCScene

PlayerNode : CCNode

CCSprite

EnemyNode : CCNode

CCSprite

DEMO

CCNodepositionscalerotationanchorPointchildren

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

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)

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

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

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

position.x += 5 * dt; }}

CustomNode

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

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

position.x += 5 * dt; }}

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

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

node->runAction(action)

обычно cocos2d

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

CCMoveTo, CCMoveByCCScaleTo, CCScaleBy...

управление

CCSequence, CCSpawn, CCRepeat, CCRepeatForever

callback

CCCallFunc

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

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

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

• addFrame(“frame_x.png”)

• CCAnimate::create – action

• CCNode::runAction(CCAnimate ... )

DEMO

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

CCNode

CCScene CCSprite Customimage

CCLayer

CCScene

hudLayer : CCLayer

...

gameLayer : 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;}

ControlLayer : CCLayer

DEMO

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

for each bullet for each enemy if (bullet

hits enemy)

enemy hit

DEMO

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

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

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

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

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

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

Первые шаги

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

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

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

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

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

CCSpriteSheet

CCSprite

CCSprite

CCSprite

Particle System

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