Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introdução ao Sprite Kit

Introdução ao Sprite Kit

Guilherme Andrade

September 28, 2013
Tweet

Other Decks in Programming

Transcript

  1. Mercado de jogos • Grande parte das apps de sucesso

    na App Store são games • Em uma olhada rápida no ranking de apps mais rentáveis, 44 de 48 apps são jogos • E muitos destes jogos são 2D
  2. Apple e o suporte a jogos • A Apple tem

    adicionado APIs de jogos desde seus primórdios • Core Animation (para jogos muito básicos) • OpenGL ES • Game Center • GLKit • Para evoluir ainda mais...
  3. Game Loop • Para cada frame do jogo, a sequencia

    de eventos é disparada - update SKScene executa as ações - didEvaluateActions; SKScene simula a física - didSimulatePhysics; SKView renderiza a cena
  4. SKNode • É o objeto base para a construção de

    um jogo • Um “Node” pode possuir outros “Nodes” como filho • Principais propriedades de um “Node” • position • zPosition • xScale • yScale • alpha • hidden • parent • children (Array)
  5. SKSpriteNode • É o tipo de “Node” mais utilizado em

    um jogo • Pode ser criado a partir de uma imagem ou cor • E também é possível combinar uma image com uma cor
  6. • É um completo sistema de partículas 2D • Possui

    um editor integrado ao Xcode • Inclui um conjunto de exemplos por padrão SKEmitterNode
  7. Ações e Animações • O Sprite Kit adiciona um conjunto

    de “Actions” para a animações dos “nodes” • É um sistema super simples de ser utilizado • Todas as ações são executadas pela classe SKAction
  8. Ações básicas • Rotação • [SKAction rotateByAngle:M_PI duration:1.0]; • [SKAction

    rotateToAngle:M_PI_2 duration:2.0]; • Translação • [SKAction moveTo:aPoint duration:1.0]; • [SKAction moveToX:200.0 duration:1.0]; • [SKAction moveToY:200.0 duration:1.0];
  9. Ações básicas • Fade • [SKAction fadeAlphaBy:0.75 duration:1.0]; • [SKAction

    fadeInWithDuration:1.0]; • [SKAction fadeOutWithDuration:1.0]; • Escala • [SKAction scaleBy:1.5 duration:1.0]; • [SKAction scaleTo:1.5 duration:1.0];
  10. Execução de SKActions • Para executar uma action, é necessário

    chamar o método “runAction” • É possível criar uma ação e depois executá-la • SKAction *action = [SKAction rotateByAngle:M_PI duration:1.0]; • [sprite runAction:action]; • Ou realizar a chamada in-line • [sprite runAction:[SKAction rotateByAngle:M_PI duration:1.0]];
  11. Repetições de ações • Repetindo N vezes uma ação •

    SKAction *rotate = [SKAction rotateByAngle:M_PI duration:1.0]; • SKAction *rotateThreeTimes = [SKAction repeatAction:rotate count:3]; • Repetindo uma ação para sempre • SKAction *rotate = [SKAction rotateByAngle:M_PI duration:1.0]; • SKAction *rotateForever = [SKAction repeatActionForever:rotate];
  12. Ações em sequência • SKAction *action1 = [SKAction moveTo:aPoint duration:1.5];

    • SKAction *action2 = [SKAction rotateByAngle:M_PI duration:3.0]; • SKAction *action3 = [SKAction fadeOutWithDuration:0.5]; • SKAction *sequence = [SKAction sequence:@[action1, action2, action3]]; • [sprite runAction:sequence]; Action 1 Action 2 Action 3 1.5 segundos 3.0 segundos 0.5 segundos 5 segundos
  13. Ações em grupo • SKAction *action1 = [SKAction moveTo:aPoint duration:1.5];

    • SKAction *action2 = [SKAction rotateByAngle:M_PI duration:3.0]; • SKAction *action3 = [SKAction fadeOutWithDuration:0.5]; • SKAction *sequence = [SKAction group:@[action1, action2, action3]]; • [sprite runAction:sequence]; Action 1 Action 2 Action 3 1.5 segundos 3.0 segundos 0.5 segundos 3.0 segundos
  14. Outras ações • Ações de tempo • SKAction *wait =

    [SKAction waitForDuration:2.0]; • Animação de textura • SKAction *textures = [SKAction animateWithTextures:textures timePerFrame:0.1 resize:NO restore:YES]; • Remoção de um node • SKAction *remove = [SKAction removeFromParent]; • Execução de código • SKAction *block = [SKAction runBlock:^{ • // code • }];
  15. Simulação de Física • Sistema completo de física dentro dos

    objetos do Sprite Kit • Não é necessário incluir dependência externas • Toda a implementação é realizada em Objective-C
  16. SKPhysicsBody • Permite adicionar física aos “nodes” • A adição

    é feita populando a propriedade “physicsBody” de um “node” • Define um conjunto padrão de formatos de objetos
  17. SKPhysicsWorld • Cada objecto “Scene” possui um “physicsWorld” • É

    possível definir a gravidade e a velocidade • Possui um delegate para contato de objetos