21
Unity 3D: Câmeras

Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Embed Size (px)

Citation preview

Page 1: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity 3D:Câmeras

Page 2: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D

• Câmera = nossos olhos no game• Game: Mostra o que a câmera aponta

• Câmeras variadas = tipo de jogo• 1a pessoa, 3a pessoa, fixa, top / side view

• Entender câmera como objeto 3D• Posição : onde está no mundo• Ângulo : para onde aponta (o que focaliza)

Page 3: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D

• Em todos os momentos do jogo• Câmera em uma posição (X,Y,Z)• Câmera com uma rotação (X,Y,Z)• resultado = cena do jogo

• Câmera mostra a ação do jogo• Câmera essencial gameplay *

Page 4: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D

• Câmeras prontas : Unity• Standard Assets -> Camera Scripts• Mouse Look:

• movimento mouse = ângulos da câmera• Limites básicos de ângulos• Normal 1a pessoa

Page 5: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Código básico para Mouse Lookfunction Update () {

forca_angulo.y = Input.GetAxis("Mouse X");

forca_angulo.x = -Input.GetAxis("Mouse Y");

forca_angulo.z = 0;

//adiciono a forca aos angulos atuais da camera

angulo_camera += forca_angulo;

//limites nos angulo_camera

angulo_camera.x = Mathf.Clamp(angulo_camera.x, -30, 30);

//rotar a camera diretamente - uso eulerAngles facilita a rotacao

transform.eulerAngles = angulo_camera;

}

Page 6: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Smooth Look at

• Olhando para o player (alvo)• Fazer apontar para posição do foco

• Saber posição do alvo• Ajustar ângulos para visualizar alvo

• + Separar modos de câmera = var

Page 7: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Código para Smooth Look at

var foco : Transform;

function Update () {

if (Input.GetKeyDown("1")) { modo_camera = 1; }if (Input.GetKeyDown("2")) { modo_camera = 2; }if (modo_camera == 2) {

transform.LookAt(foco);}

Page 8: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Câmera em posição fixa, olhando o alvo

var foco : Transform;

function Update () {if (Input.GetKeyDown(“3")) { modo_camera = 3; }

if (modo_camera == 3) {transform.position.x = 0;transform.position.y = 10;

transform.position.x = 2;transform.LookAt(foco);}

Page 9: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Câmera em posição fixa, com ângulo fixo• Top View / Side View• Planejar e setar posição e ângulos (fixos)

function Update () {

if (Input.GetKeyDown(“4")) { modo_camera = 4; }if (modo_camera == 4) {

transform.position.x = 0;

transform.position.y = 20;transform.position.z = -20;transform.eulerAngles(30, 0, 0);

}

Page 10: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Adicionalmente câmera pode ser

Ortográfica (sem perspectiva)• Específica para algumas visões / jogosif (modo_camera == 4) {

transform.position.x = 0;

transform.position.y = 20;transform.position.z = -20;transform.eulerAngles = Vector3(30, 0, 0);

camera.orthographic = enabled;camera.orthographicSize = 10;}

Page 11: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Câmera 1a Pessoa

• Segue posição do player• Segue rotação do player• + ângulos adicionais : Mouse Look

• Não movem o player – apenas a câmera

• Altura adicional + posição dos olhos

Page 12: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Camera 1a Pessoa : Código Básico

var jogador : Transform;var altura_olhos = 0.5;

if (modo_camera == 5) {transform.position =

jogador.position;transform.position.y +=

altura_olhos;transform.rotation =

jogador.rotation; }

Page 13: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Camera 1a Pessoa : Código Básico +

Ângulo adicional (cima / baixo)

if (modo_camera == 5) {transform.position = jogador.position;

transform.position.y += altura_olhos;//rotação basica X inclinação (TILT) move mouse

aux_x += -Input.GetAxis("Mouse Y");angulo_camera.x = jogador.rotation.x + aux_x;angulo_camera.y = jogador.eulerAngles.y;

angulo_camera.z = jogador.eulerAngles.z;transform.eulerAngles = angulo_camera;}

Page 14: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Câmera 3a pessoa, seguir em posição

relativa ao player• Atrás, X distancia• Acima, Y distancia

• + Olhar para o player• Calcular posição relativa

• Em relação ao ângulo do player• Trigonometria

Page 15: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Posição relativa (em relação ao ângulo)• Trigonometria básica (Seno e Coseno)• Classe Mathf.• Sin e Cos = usam medidas em RAD• Converter Rad em Degrees

• Rad = ângulo * Mathf.Deg2Rad;• Grau = ângulo * Mathf.Rad2Deg;

Page 16: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3Dvar dist_segue = -2;var altura_segue = 2;

if (modo_camera == 6) {var angulo = jogador.eulerAngles.y * Mathf.Deg2Rad;transform.position.x = jogador.position.x + dist_segue * Mathf.Sin(angulo);

transform.position.y = jogador.position.y + altura_segue;

transform.position.z = jogador.position.z + dist_segue * Mathf.Cos(angulo);transform.LookAt(jogador);

}

Page 17: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Orbitar player = posição relativa (ao ângulo) +

ângulo adicional variável• Câmera Estilo Matrixif (modo_camera == 7) {

angulo_matrix += 1;

transform.position.x = jogador.position.x + dist_segue * Mathf.Sin(angulo_matrix * Mathf.Deg2Rad);

transform.position.y = jogador.position.y + altura_segue;transform.position.z = jogador.position.z + dist_segue * Mathf.Cos(angulo_matrix * Mathf.Deg2Rad);

transform.LookAt(jogador);}

Page 18: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Field of View (FOV) campo de visão• Abertura da lente (Câmera)• Funciona como

• Zoom (sniper, binóculo...)• Perspectiva maior (distância e velocidade)if (Input.GetKey("i")) {camera.fieldOfView += 5 * Time.deltaTime;}

if (Input.GetKey("o")) {camera.fieldOfView -= 5 * Time.deltaTime;}

Page 19: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Render Port (view)

• Definição de tamanho• Definição de posição na tela

• Valores de 0..1 (porcentagem da tela)• Exemplo:

Page 20: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Possibilidade de inserir mais câmeras de jogo

(independentes) • Cada câmera com suas definições de tamanho e posição • Cada câmera com sua posição e ângulos

Page 21: Unity 3D: Câmeras. Unity3D Câmera = nossos olhos no game Game: Mostra o que a câmera aponta Câmeras variadas = tipo de jogo 1a pessoa, 3a pessoa, fixa,

Unity3D• Definição de Corte (Clip)

• Distancia da camera objetos não são renderizados• Próximos e distantes• = performance• + necessidade de distancia por cenário e tipo de jogo

• Manter menor distancia possível (far)• Near – próximos a câmera• Far – distantes da câmera