Aula3 input

18
Projetos RAD : Unity 3D Scripts Parte I Augusto Bülow

description

Uso de metodos de entrada no unity3d

Transcript of Aula3 input

Page 1: Aula3   input

Projetos RAD : Unity 3D Scripts Parte I

Augusto Bülow

Page 2: Aula3   input

Unity

• Regra PLAY:– Edição durante Play mode é temporária

(perdida quando desligamos play)

– Intenção:• Testar novos parâmetros durante gameplay

– Ganho tempo, resultados experimentados diretamente

• EX: mudar velocidades player

Page 3: Aula3   input

Unity : Script

• Scripts : – Controle do jogo (interatividade)– Ações game baseadas em tempo / local

– Ações game baseadas em intenção : Input

• Input: – Avaliar teclas e controles (mouse e joy)– Executar ações necessárias

Page 4: Aula3   input

Unity : Script

• Criar um Script:– Assets -> Create -> JavaScript– Renomear Script (organização): Move1

• Duplo click para edição(UniSciTE : Editor scripts)

Page 5: Aula3   input

Unity : Script

• Scripts iniciam com função Updatefunction Update() { }

• Update() – vai rodar função (o que estiver dentro) a cada

ciclo de jogo - a cada tela renderizada

• Várias funções nomes próprios, auto executadas com respectivos eventos, EX:– Awake(): quando executado a primeira vez– OnCollisionEnter(): quando colide– Etc...

Page 6: Aula3   input

Unity : Script

• Movimento básico de objeto =

alterar propriedades transform do objeto, Position X, Y, Z

• Perceber intenção = Input • Gerar o movimento baseado no Input

Page 7: Aula3   input

Unity : Script

• Captar Input Básico:– Input.GetAxis("Horizontal“)– Input.GetAxis(“Vertical”)

• Recebe (auto) teclas WASD, Setas (cursores) e Joysticks (Joypad)

• Valores de Retorno: -1.. 0 ..1• 0 = sem move• Joystick = valores intermediários / max

• Teclas = valor Maximo direto (1, 0 ou -1)

Page 8: Aula3   input

Unity : Script

• Codificando:

function Update () {

//CAPTURA INPUT BASICO

var forca_horizontal = Input.GetAxis("Horizontal");

var forca_vertical = Input.GetAxis("Vertical");

//MOVE COM TRANSLATE = movimento traduzido transform.Translate(forca_horizontal, 0, forca_vertical);

}

Page 9: Aula3   input

Unity : Script

• transform.Translate• Movimento traduzido = pela orientação do

objeto (ângulo para onde aponta)

• 3 parametros: X, Y, Z• Forma direta = altera o objeto a qual o script

está atachado• Atachar Script = drag-drop sobre objeto

Page 10: Aula3   input

Unity : Script

• Movimento provavelmente rápido• Necessidade de definir velocidades

adequadas• Necessidade de perceber o Frame Rate

– Rodando a 60 FPS ( 60 updates por segundo)– Rodando a 200 FPS ( 200 por segundo)= Resultados muito diferentes pelo FPS

• EX: adicionar um grau a rotação, sem controle de FPS rotaria de acordo com o número de updates

Page 11: Aula3   input

Unity : Script

• Correção de valores pelo FPS

“ Time.deltaTime “• Geral:

– multiplicamos valores pelo deltaTime = garantia de adaptação a diferentes FRAME RATES

• Onde usar:– Movimentos, rotações, timer e cálculos em geral...

• Onde NÃO Usar:– Cálculos fixos, estatísticas:

• número de tiros, pontos...

Page 12: Aula3   input

Unity : Script

• Adaptando nosso Script Básico de movimento

• Capturamos / Percebemos o Input

• Multiplicamos o Input– pela velocidade (max. que queremos)– pelo tempo (Time.deltaTime)

• Necessidade para adaptação a FRAME RATE

Page 13: Aula3   input

Unity : Script

function Update () {//CAPTURA INPUT BASICOvar forca_horizontal = Input.GetAxis("Horizontal");var forca_vertical = Input.GetAxis("Vertical");

//CRIAMOS VAR = VELOCIADE DO MOVIMENTOvar velocidade = 10;

//MULTIPLICAMOS INPUT POR VELOCIDAE E TEMPO forca_horizontal *= velocidade * Time.deltaTime;forca_vertical *= velocidade * Time.deltaTime;

//PASSA COMO TRANSLATE = movimento traduzido transform.Translate(forca_horizontal, 0, forca_vertical);}

Page 14: Aula3   input

Unity : Script

• Variáveis Exposed / Não• Exposed:

– Colocadas fora de funções (início do Script)– Podem ser acessadas / alteradas pelo Inspector

//fora de funções = var exposed var velocidade = 10;

function Update () {....

Page 15: Aula3   input

Unity : Script

• Inputs adicionais:Input.GetButtonDown("Jump")Input.GetButtonDown(“Fire1")

• Retorno: 1 = pressionado• Ex: fire1, leva objeto para ponto da cena

if (Input.GetButtonDown("Fire1")) {transform.position.x = 0; transform.position.y = 0; transform.position.z = 0;

}

Page 16: Aula3   input

Unity : Script

• Vector3(X, Y, Z)– Vetor de 3 posições – Muito utilizado, passagem de três parâmetros diretamente

if (Input.GetButtonDown("Fire1")) {//transform.position.x = 0;//transform.position.y = 0;//transform.position.z = 0;

//MESMO RESULTADO = única linhatransform.position = Vector3(0,0,0);}

Page 17: Aula3   input

Unity : Script

• Input = Teclas especificasInput.GetKey(“x”);

• Ex. Teclas O e P modificam rotação Y básica do objeto

if (Input.GetKey("o")) {transform.rotation.y -= 1 * Time.deltaTime;

}

if (Input.GetKey("p")) {transform.rotation.y += 1 * Time.deltaTime;

}

Page 18: Aula3   input

Unity : Script

• Controle de velocidades, fatores = Utilizar Variáveis

• Expor Variáveis = facilidade• Testar

– Modificar a rotação, usando velocidade por variável

– Expor a variável (permite alterar pelo inspector)