2. 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)
3. 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 *
4. 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
5. Unity3D
• Código básico para Mouse Look
function 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 rot
transform.eulerAngles = angulo_camera;
}
6. 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
7. 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);
}
8. 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);
}
9. 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);
}
10. Unity3D
• Adicionalmente câmera pode ser
Ortográfica (sem perspectiva)
• Específica para algumas visões / jogos
if (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;
}
11. 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
12. 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;
}
14. 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
15. 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;
18. 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;
}
19. Unity3D
• Render Port (view)
• Definição de tamanho
• Definição de posição na tela
• Valores de 0..1 (porcentagem da tela)
• Exemplo:
20. 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
21. 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