1 / 37

INPUT

INPUT. Alexandre Tolstenko Nogueira Colaborador : Erick Luis Moraes de Sousa “ Puyol ” http://forum.gamux.com.br. Papel e caneta na mão !. Revisão. Revisão. Classe x Objeto; Classe x Struct ; Método x Atributo; O que é um construtor; Diferença entre vetores e lista;

vern
Download Presentation

INPUT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. INPUT Alexandre Tolstenko Nogueira Colaborador: Erick Luis Moraes de Sousa “Puyol” http://forum.gamux.com.br

  2. Papel e canetanamão! Revisão

  3. Revisão • Classe x Objeto; • Classe x Struct; • Método x Atributo; • O que é um construtor; • Diferença entre vetores e lista; • O que são pilhas e filas; • Árvores.

  4. MotivoS

  5. Motivos • Evitar ter que escrever diversas vezes os códigos de captura de dados; • Criar uma forma de tratar todos os tipos de entrada de maneira idêntica (abstrair); • Automatizar o tratamento de input.

  6. Motivo pessoal

  7. Motivo Pessoal • 8ª Série: Usar o mouse de bolinha como um medidor de forças: acelerômetro; • 1º Ano: Usar a entrada analógica serial de joystick e o mouse para mapear a face de uma moeda.

  8. Objetivo

  9. Objetivos • Conhecer as formas de captura de dados de periféricos para games; • Entender os estados de um periférico de game; • Aprender a tratar inputs; • Generalizar os periféricos para um periférico virtual.

  10. Como interagir com o game. Input

  11. Teclado • Toda captura de dados é booleana: pressionado ou liberado; • A quantidade máxima de teclas pressionadas varia de teclado para teclado e geralmente são 3.

  12. Controle de Xbox • ThumbSticks variam entre -1.0f e 1.0f para cada eixo; • DPad são ButtonState: Pressed ou Released; • Os Triggers variam entre 0.0f e 1.0f; • Possui dois motores para vibração, um no lado esquerdo e outro no lado direito. Um grave e outro agudo; • Buttons são ButtonState. • Ex. Recicle

  13. Mouse • Os botões do mouse são ButtonState, podendo ser released ou pressed; • O valor do botão do meio, scrollwheel, é dado por um inteiro que é acumulado desde o início do jogo; • A posição do mouse é determinada a partir de duas variáveis que armazenam sua posição X e Y; • Observação: Implementamos uma biblioteca que permite capturar até 128 mouses simultaneamente.

  14. WM7 • O aparelho com Windows Mobile 7 possui: • Acelerômetros; • Touchscreen que suporta multitouching; • Motor que vibra o aparelho; • Cada toque possui posição, estado, id e pressão; • Microfone.

  15. Wiimote • O Wiimote é o sensor, enquanto que a barra é o emissor de infra-vermelho; • Possui posição na direção que está sendo apontado, velocidade e aceleração; • Pode-se controlar o output (leds e vibração); • A biblioteca utilizada por nós consegue controlar quatro sensores do Wiimote. Dada essas quatro informações deve-se calcular o centro da mira; • Extensões.

  16. Outros • DirectInput; • Tratamento direto com a memória (escrever um driver): multimouse e wiimote; • Projeto Natal; • Câmeras; • Realidade Aumentada.

  17. Problema • Qual é o problema de apenas verificar se a tecla está pressionada? • E se ele disparar um evento como mudar tela e a seguinte também usa essa tecla para mudar de tela? • E se quisermos tratar um combo? • Hadouken: Meia lua para baixo + soco. • Qual o problema de mandar o personagem andar o quanto que o thumbstick se dobrou? • DeadZone.

  18. Solução • Eventos: • Guardar estado anterior; • Verificar estados “JustPressed” ou “JustRelease”; • Combo: • Guardar lista de estados anteriores; • GamePad: • Região na qual a captura de dados é desprezada, chamada de deadzone.

  19. Deadzone

  20. GameComponent • Componentes independentes de um jogo que não sejam desenháveis na tela: • Engine de Física, Networking, Input e qualquer outro componente que se atualize sem desenhar na tela; • Possui métodos semelhantes ao do Microsoft.XNA.Framework.Game: • Initialize (); • Update ().

  21. DrawableGameComponent • Componentes independentes de um jogo que sejam desenháveis na tela: • Telas e Gerenciadores de Tela, Menus, Interfaces Gráficas; • Possui métodos semelhantes ao do Microsoft.XNA.Framework.Game: • Initialize (); • Update (); • Draw ().

  22. Modificadores • Modificadores de Acesso: • Public: • O membro declarado como public pode ser acessado de qualquer outra classe do jogo; • Private: • Só pode ser acessada dentro do escopo no qual foi declarada; • Internal: • Só pode ser acessada por membros do mesmo código; • Protected: • Só pode ser acessada da classe em que foi declarada ou de classes que herdem da primeira.

  23. Outros Modificadores • Static; • Override; • Const; • Extern; • Abstract; • Event; • Sealed; • Partial; • Readonly; • Unsafe; • Virtual; • Volatile.

  24. Static • Quando se declara algo como static, o mesmo é armazenado numa posição de memória, podendo-se utilizá-la e alterá-la sem ter de criar novas instâncias dela; • Não existe construtor; • Métodos e variáveis são acessados diretamente. publicstaticclassClasseExemplo {publicstatic Vector2 position; publicstaticInputStateGetState(){...} }

  25. Override • Quando uma classe herda de uma segunda e queremos re-implementar um método da primeira na segunda: • A Game1 herda da Game e caso queiramos chamar o método da primeira classe, utilizamos “base”: protectedoverridevoidInitialize() { base.Initialize(); }

  26. InputManager Genérico • Classe genérica que envelopa todos os tipos de input para que um programador possa utilizá-lo de maneira transparente; • Ao invés de sempre procurar saber qual o input, a posição do mouse e a posição do Wiimote seriam tratadas da mesma maneira; • Num caso extremo de um game simples, podemos tratar gamepad, mouse, wiimote, keyboard, entre outros inputs de maneira idêntica.

  27. InputState Genérico • Classe genérica que armazena todos os tipos de input para que um programador possa utilizá-lo de maneira transparente; • Ex. Solução para Direcionais: • Eixo X e Y como float. • Caso tecla Up for pressionada, Y = -1; • Caso tecla Downfor pressionada, Y = 1; • Caso gamepad mova o thumb para baixo: • Y = quantidade de deslocamento.

  28. Prática • Prática: • Programar um Mata-Moscasusandomais de um tipo de input simultaneamente; • Envelopartodosos inputs no mesmoInputState. • Desafio: • Utilizar Multi-Mouse e/ouWiimote

  29. Agradecimento spriteBatch.DrawString( Arial, "Obrigado Pela Atenção!", positionVect, Color.Black);

More Related