Aula7 velocidade

576 visualizações

Publicada em

Aula de controle de velocidades para unity3D

Publicada em: Educação
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
576
No SlideShare
0
A partir de incorporações
0
Número de incorporações
332
Ações
Compartilhamentos
0
Downloads
9
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Aula7 velocidade

  1. 1. Projetos RAD : Unity 3D Velocidade, aceleração e fricção Augusto Bülow
  2. 2. Unity • Código básico de movimento (atual) – Pressiona tecla = move • Movimentos avançados – Velocidade com maior controle – Aceleração – Fricção – Mantém velocidade ( + transformações) = Criar variáveis para controle destes aspectos
  3. 3. Unity • Variáveis básicas: var aceleracao = 0.5; var friccao = 0.2; var velocidade_maxima = 3.0; var velocidade_atual = 0.0; • Utilizar Float (declarar valor com vírgula) – Habilitar transformações leves / decimais • Estamos criando física (manualmente) – RigidBody = esquema automático – Pode ser incorporado física manual (junto)
  4. 4. Unity function Update () { //Input - acelera velocidade atual if (Input.GetKey("w") || Input.GetKey(KeyCode.UpArrow)) { velocidade_atual += aceleracao * Time.deltaTime; } //limita velocidade maxima if (velocidade_atual > velocidade_maxima) { velocidade_atual = velocidade_maxima; } //Mover sempre com a velocidade var controller = GetComponent(CharacterController); controller.Move(Vector3(0, 0, velocidade_atual)); }
  5. 5. Unity • Necessidade de Fricção (manual) – Fricção = atrito, diminui a velocidade do corpo • Fricção = leva a inércia – Restrição a velocidade 0 ( repouso) – Evitar entrar em velocidade inversa //friccao manual - leva a repouso if (velocidade_atual > 0) { velocidade_atual -= friccao * Time.deltaTime; //maximo - levar a repouso - evita move contrario if (velocidade_atual < 0) { velocidade_atual = 0; } }
  6. 6. Unity • Mudança básica de fricção, aceleração transformamos o movimento do player em um caminhão de toneladas, ou em um carro de fórmula 1 • Atenção: aceleração sempre maior que fricção: – Senão não há movimento • Testar valores exemplo: – Aceleração 1.5 e Fricção 0.1
  7. 7. Unity • Inserindo controle básico de rotação pelo mouse • transform.Rotate(Vector3); var rotacao = 0.0; var forca_rotacao = 2; ... //Inserindo rotacao basica com mouse rotacao = Input.GetAxis("Mouse X") * forca_rotacao; transform.Rotate(Vector3(0, rotacao, 0));
  8. 8. Unity • Necessidade de transformar a forca de movimento (velocidade) em relação a orientação atual • transform.TransformDirection() • Necessário Vector3 – para transformação – para resultado
  9. 9. Unity var velocidade_vetor : Vector3; .... //uso de vetor - transforma em vetor velocidade_vetor = transform.TransformDirection(Vector3(0, 0, velocidade_atual)); //Move sempre com a velocidade var controller = GetComponent(CharacterController); //controller.Move(Vector3(0, 0, velocidade_atual)); controller.Move(velocidade_vetor);
  10. 10. Unity • Controlando velocidade pode-se, por exemplo, transformá-la no momento de uma colisão • Exemplos: – Colidiu = perde parte da velocidade – Colidiu = inverte a velocidade • Fazer testes básicos colisão / velocidade • Trabalhando a Física manualmente – física realística = RigidBody

×