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 Update 
function 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 BASICO 
var forca_horizontal = Input.GetAxis("Horizontal"); 
var forca_vertical = Input.GetAxis("Vertical"); 
//CRIAMOS VAR = VELOCIADE DO MOVIMENTO 
var 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 linha 
transform.position = Vector3(0,0,0); 
}
Unity : Script 
• Input = Teclas especificas 
Input.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)

Aula3 input

  • 1.
    Projetos RAD :Unity 3D Scripts Parte I Augusto Bülow
  • 2.
    Unity • RegraPLAY: – 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
  • 3.
    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
  • 4.
    Unity : Script • Criar um Script: – Assets -> Create -> JavaScript – Renomear Script (organização): Move1 • Duplo click para edição (UniSciTE : Editor scripts)
  • 5.
    Unity : Script • Scripts iniciam com função Update function 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...
  • 6.
    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
  • 7.
    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)
  • 8.
    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); }
  • 9.
    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
  • 10.
    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
  • 11.
    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...
  • 12.
    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
  • 13.
    Unity : Script function Update () { //CAPTURA INPUT BASICO var forca_horizontal = Input.GetAxis("Horizontal"); var forca_vertical = Input.GetAxis("Vertical"); //CRIAMOS VAR = VELOCIADE DO MOVIMENTO var 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); }
  • 14.
    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 () { ....
  • 15.
    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; }
  • 16.
    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 linha transform.position = Vector3(0,0,0); }
  • 17.
    Unity : Script • Input = Teclas especificas Input.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; }
  • 18.
    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)