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

Introdução ao Sprite Kit

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

Introdução ao Sprite Kit

Avatar for Guilherme Andrade

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