Разработка игр с помощью cocos2d
TRANSCRIPT
Разработка игр с помощью 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)