Aula3 input
-
Upload
marcos-batista -
Category
Education
-
view
140 -
download
0
description
Transcript of Aula3 input
Projetos RAD : Unity 3D Scripts Parte I
Augusto Bülow
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
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
Unity : Script
• Criar um Script:– Assets -> Create -> JavaScript– Renomear Script (organização): Move1
• Duplo click para edição(UniSciTE : Editor scripts)
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...
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
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)
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);
}
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
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
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...
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
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);}
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 () {....
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;
}
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);}
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;
}
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)