Buscar

EXERCÍCIOS DE FIXAÇÃO PRINCÍPIOS DO DESENVOLVIMENTO DE GAMES

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 16 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

EXERCÍCIOS DE FIXAÇÃO PRINCÍPIOS DO DESENVOLVIMENTO DE GAMES 
AULA 01: Introdução ao Desenvolvimento de Games
Questão 1
Qual resposta define melhor a importância da programação no desenvolvimento de jogos?
a) Permite dar vida aos personagens.
b) Serve para criar game engines.
xc) Proporciona interação, lógica e comunicação entre todos os elementos do jogo.
d) Capturar a entrada do usuário para controlar os personagens.
e) Realizar os cálculos matemáticos necessários para o jogo ser executado.
Justificativa
As outras alternativas definem apenas aspectos pontuais da utilização de programação no desenvolvimento de jogos. Na verdade, a programação, além de prover as ferramentas necessárias para que os desenvolvedores criem o jogo, é o que faz todos os elementos estéticos, de narrativa, mecânicas e tecnológicos funcionarem em conjunto.
Questão 2
Qual o papel de uma Game Engine no desenvolvimento de um jogo?
xa) Prover ferramentas e abstração sobre a plataforma em que o jogo está sendo executado
b) É um framework com funções para desenhar os elementos na tela.
c) Simular o comportamento físico dos objetos e detectar suas colisões.
d) Acelerar o desempenho do jogo.
e) Facilitar toda a lógica de programação necessária para criação de um jogo.
Justificativa
Game Engines são um conjunto de softwares responsáveis por permitir a criação e a execução dos jogos. Também criam uma camada de abstração sobre o hardware em que o jogo está sendo executado, para que os desenvolvedores do jogo em si não precisem se preocupar com detalhes da plataforma.
Questão 3
Qual a vantagem de um sistema de FPS variável?
a) Permitir que o jogador escolha a taxa de FPS desejada.
b) Permitir que o jogo rode sempre acima de 60FPS.
xc) Acelerar a execução do jogo quando for necessário, por exemplo, quando surgirem muitos elementos ao mesmo tempo na tela.
d) Permitir que o jogo seja executado sempre na maior taxa que o hardware suportar.
e) Proporcionar uma melhor sincronização entre as etapas do game loop.
Justificativa
Com FPS fixo, o jogo tenta manter sempre a mesma taxa de atualização, deixando, muitas vezes, o processador e placa de vídeo ociosos entre os frames. Com uma taxa de FPS variável, o game loop é executado sem interrupção, alcançando a maior taxa que o hardware suportar naquele momento. É claro que, dependendo da situação dentro do jogo, do nível de processamento e quantidade de elementos na tela, a taxa pode cair durante o decorrer do jogo.
Questão 4
O que é mostrado nas abas Hierarchy, Scene, Inspector e Project do Unity, respectivamente?
a) Nome dos objetos, Visual dos objetos, Componentes, Arquivos.
b) Componentes, Nome dos objetos, Visual dos objetos, Arquivos.
c) Arquivos, Componentes, Visual dos objetos, Nome dos objetos.
xd) Nome dos objetos, Visual dos objetos, Arquivos, Componentes.
e) Componentes, Visual dos objetos, Nome dos objetos, Arquivos.
Justificativa
A aba Hierarchy mostra o nome dos objetos da cena, podendo agrupá-los de forma hierárquica; a aba Scene exibe os mesmos objetos, porém de forma visual, permitindo editá-los de forma fácil; a aba Inspector mostra os componentes e propriedades do objeto selecionado; e a aba Project mostra os arquivos e pastas do projeto.
AULA 02: Programação de scripts
Questão 1
No Unity, quando são chamados os eventos Start e Update, respectivamente?
a) Chamado a cada início de frame; Chamado a cada final de frame.
b) Chamado quando o jogo é iniciado; Chamado a cada frame.
c) Chamado quando o objeto começa a se mover; Chamado quando o objeto altera sua posição.
d) Chamado a cada frame; Chamado quando o jogo é iniciado.
xe) Ambos são chamados na atualização de cada frame;
Justificativa
O evento Start é chamado pelo Unity apenas uma vez quando o jogo é iniciado. Já o evento Update é chamado a cada atualização, ou seja, a cada frame. Isso ocorre para cada componente ou script de todos os objetos da cena.
Questão 2
Qual o código correto para calcular a direção normalizada entre dois pontos (“a” e “b”), em direção ao ponto “a”?
a) Vector3 dir = Vector3. Normalize(a, b);
b) Vector3 dir = (a – b) / Vector3. Distance(a, b);
c) Vector3 dir = (a – b). Normalized;
d) Apenas as alternativas (b) e (c) estão corretas;
xe) Apenas as alternativas (a), (b) e (c) estão corretas;
Justificativa
Para a direção entre dois pontos fazemos a subtração entre eles, subtraindo o destino pela origem. A normalização de um vetor trata-se de mudar seu comprimento para 1 (um), mantendo sua direção e sentido. Fazemos isso dividindo o tamanho pelo seu comprimento. Em código, isso pode ser feito pela propriedade . Normalized ou dividindo diretamente pela distância entre os dois pontos.
Questão 3
Qual a necessidade de utilização do atributo Time.deltaTime?
xa) Para compensar o fato de que cada dispositivo pode ter uma taxa de atualização diferente.
b) Para calcular a velocidade levando em consideração a velocidade do processador.
c) Para otimizar o cálculo de movimentação dos objetos.
d) Para converter as unidades de m/s para km/h.
e) Para não deixar a movimentação lenta.
Justificativa
O Unity adota um modelo de FPS variado. Ou seja, dispositivos diferentes podem apresentar uma taxa de atualização diferente. Time.deltaTime nos diz quando tempo se passou desde o último frame; assim, podemos usar essa informação para compensar um valor de velocidade de um objeto. Fazendo isso, nosso objeto se move com a mesma velocidade, independente do FPS.
Questão 4
Sabendo que o Unity utiliza o padrão SI (Sistema Internacional de Unidades) para suas unidades, em qual unidade seria medida a aceleração de um objeto?
xa) m/s
b) s/m
c) v/s
d) m/s/s
e) ac
Justificativa
No padrão SI, distâncias são medidas em metros e tempo em segundos. Assim, a velocidade é medida em metros por segundo (m/s). Já a aceleração, que se trata da mudança de velocidade sobre o tempo, é medida em (m/s/s).
AULA 03: Programação de comportamentos básicos
Questão 1
A partir dos conceitos vistos durante a aula, qual a maior vantagem da utilização de Programação Orientada a Componentes (POC) no desenvolvimento de jogos?
a) POC permite a criação de uma API muito mais poderosa e otimizada.
xb) POC permite criar uma hierarquia de classes e objetos diferenciada que otimiza a criação de código para os elementos de um jogo.
c) POC permite a utilização de várias linguagens durante o desenvolvimento de um jogo, no caso do Unity, JavaScript e C#.
d) POC é um paradigma que evita a utilização de Programação Orientada a Objetos com o intuito de aumentar a legibilidade dos códigos escritos.
e) POC permite a criação de um elemento de jogo a partir da combinação de diversos componentes, cada um com sua função, aumentando o reúso e desacoplamento.
Justificativa
A Programação Orientada a Componentes (POC) é um paradigma de programação que se apoia na Orientação a Objetos com o intuito de aumentar o reúso de código e o desacoplamento. Com a POC, podemos criar elementos de um jogo com a simples combinação de componentes existentes, sem precisar criar uma hierarquia de classes muito complexa.
Questão 2
Prefab é um termo utilizado em diversas game engines. Ele é utilizado para denominar objetos “pré-fabricados”. Tecnicamente, do que é formado um prefab?
xa) Prefab é um arquivo formado por todos os atributos e configurações de um objeto.
b) Prefabs são scripts utilizados para gerenciar as cópias de um determinado objeto.
c) Prefab é um objeto capaz de instanciar outros objetos na cena de um jogo, ou seja, fabricá-los.
d) UPrefab é um espaço de memória reservado para objetos que devem ser constantemente replicados no decorrer do jogo.
e) Prefabs são objetos pré-fabricados embutidos na game engine que podemos utilizar na criação do nosso jogo. Por exemplo, o Cube do Unity que já possui um modelo 3D e um colisor.
Justificativa
Prefabs são utilizados em diversas game engines. Eles são uma forma de armazenar em arquivos todas as configurações e componentes de um objeto. Dessa forma, esse arquivo pode ser utilizado para gerar novas cópias desse objeto durante o jogo.
Questão3
Uma tarefa comum em diversos jogos é criar várias cópias de um objeto no cenário. No Unity, que função utilizamos para criar cópias de um GameObject?
a) gameObject.Clone()
xb) Instantiate(objeto, posição, rotação)
c) new GameObject( objeto )
d) Copy(objeto, posição, rotação)
xe) objeto.Duplicate()
Justificativa
A função Instantiate serve para criar novas instâncias de um objeto, ou seja, cópias dele. Ela é utilizada tanto para duplicar um objeto existente na cena quanto um existente no projeto.
Questão 4
Existem diversas formas de capturar a entrada do jogador, como teclado, mouse, touch ou joystick. No teclado, por exemplo, o jogador pressiona uma tecla e depois a solta. Se queremos que uma determinada ação seja executada enquanto o jogador estiver segurando uma tecla, o que devemos fazer?
xa) Criar um “Button” com essa tecla no InputManager e verificar se ele está sendo pressionado com a função GetButton.
b) Utilizar as funções GetKeyDown para ligar a ação e GetKeyUp para desligar.
c) Criar um “Axis” com essa tecla no InputManager e verificar seu valor com a função GetAxis.
d) Utilizar a função GetKey para saber se a tecla está sendo pressionada a cada Update.
e) Todas as alternativas estão corretas.
Justificativa
O Unity permite diversas formas de capturar a entrada do usuário. Diretamente pelo teclado com as funções GetKey (tecla pressionada), GetKeyDown (tecla pressionada nesse frame) e GetKeyUp (tecla solta nesse frame). Ou através do menu InputManager que cria uma abstração das entradas do usuário. Essa abstração pode vir na forma de um “Button”, para saber se algo foi pressionado, ou de um “Axis”, para saber o valor de um eixo. Mesmo utilizando um “Axis”, um conjunto de teclas pode ser definido para controlar seu valor. Dessa forma, todas as alternativas estão corretas.
AULA 04: Introdução à simulação física
Questão 1
Dentro da área de simulação física em jogos, temos vários tipos de simulação, de corpo rígido (rigidbody), de corpo macio (softbody) e simulação de fluidos, por exemplo. Qual afirmação está ERRADA sobre simulação de corpos rígidos?
a) Rigidbodies resistem à aplicação de forma devido a sua inércia.
xb) Rigidbodies se deformam com o impacto.
c) A colisão de rigidbodies depende do formato do seu colisor.
d) Rigidbodies podem ser afetados pela gravidade.
e) Um rigidbody pode ter vários colisores compondo sua forma física.
Justificativa
A simulação física de corpos rígidos (rigidbodies), como o nome já diz, não permite a deformação dos objetos ao colidirem. Por essa simplificação, a simulação pode ser feita com um custo computacional bem menor.
Questão 2
Em jogos que utilizam alguma simulação física com rigidbodies, podemos movê-los de diversas formas. As principais formas envolvem a manipulação de sua velocidade ou aplicando alguma força. Dependendo da situação de cada jogo, uma forma é mais adequada que outra. Qual afirmação está correta sobre a manipulação de rigidbodies?
a) A alteração da velocidade de um rigidbody pode causar aceleração infinita no objeto.
b) A aplicação de força ignora a inércia do objeto.
xc) A alteração da velocidade ou aplicação de força geram os mesmos resultados, porém um deles exige mais processamento.
d) A alteração da velocidade gera resultados mais fisicamente realistas.
e) A aplicação de força só funciona se o objeto estiver previamente parado.
Justificativa
De fato, a alteração da velocidade de um rigidbody ignora sua inércia, causando uma aceleração infinita do objeto, o que pode aparentar uma simulação menos realista para o jogador.
Questão 3
Imagine que dois objetos físicos, em certo momento, colidem, permanecem em colisão durante alguns frames, e no final se separem. Esse processo gera vários eventos. Qual opção descreve uma sequência válida de eventos gerados durante uma colisão como foi descrita? Considere que cada objeto possui exatamente um colisor.
a) OnCollisionEnter, OnCollisionExit, OnCollisionStay, OnCollisionStay, OnCollisionStay.
b) OnCollisionEnter, OnCollisionExit, OnCollisionEnter, OnCollisionExit, OnCollisionStay.
c) OnCollisionEnter, OnCollisionEnter, OnCollisionStay, OnCollisionExit, OnCollisionExit.
xd) OnCollisionEnter, OnCollisionStay, OnCollisionStay, OnCollisionStay, OnCollisionExit.
e) OnCollisionStay, OnCollisionStay, OnCollisionStay, OnCollisionStay, OnCollisionStay.
Justificativa
Durante uma colisão entre dois objetos, no momento que entram em contato um evento OnCollisionEnter ocorre. Para cada novo frame que eles permanecem em contato, um evento OnCollisionStay é chamado. E por fim, um evento OnCollisionExit é chamado quando os objetos se separam. Caso os objetos possuam mais de um colisor, esses eventos podem se repetir para cada colisor que fizer contato com o outro objeto.
Questão 4
A detecção de colisão com gatilhos (trigger) ocorre de forma um pouco diferente da colisão normal. Qual das opções abaixo NÃO É característica da colisão com gatilho?
a) A colisão é detectada sem alterar a trajetória dos objetos envolvidos.
b) Utiliza as funções OnTrigger(Enter/Stay/Exit) em vez de OnCollision(Enter/Stay/Exit).
c) 0 As funções de detecção recebem um parâmetro do tipo Collider, em vez de Collision.
d) Precisa que os dois objetos envolvidos possua o componente Rigidbody.
e) Pode ocorrer entre dois colisores, ambos marcados como trigger.
Justificativa
Tanto a colisão normal quanto a colisão com gatilhos precisam apenas que pelo menos um dos dois objetos envolvidos possua um componente Rigidbody.
AULA 05: Programação de mecânica Shoot’em Up
Questão 1
Se quisermos manter constante a velocidade de um objeto físico, qual a forma correta de fazer isso?
a) Não é possível constante manter a velocidade de um objeto, devido à inércia.
xb) Alterar a velocidade na função Update, pois ela é executada a cada frame, igual à física.
c) Aplicar uma força constante ao objeto.
d) Devemos remover seu Rigidbody.
e) Alterar a velocidade na função FixedUpdate, em sincronia com a física.
Justificativa
A função Update, é executada com FPS variado, em sincronia com as funções de renderização. A física, para ser estável, deve ser executada com FPS fixo. Para atualizar comportamentos físicos continuamente, existe a função FixedUpdate que é chamada com uma taxa constante em sincronia com a física.
Questão 2
Algumas lógicas dentro de um jogo devem ocorrer repetidamente a cada período de tempo, não a cada frame. Como fazer para uma função “F” ser chamada a cada 1 segundo?
a) while (true) F();
b) InvokeRepeating (“F”, 0, 1);
c) while (true) { F(); Wait (1000);}
xd) while (true) Invoke (“F”, 1);
e) InvokeRepeating(“F”);
Justificativa
Para chamar uma função repetidamente a cada período de tempo, utilizamos a função InvokeRepeating, passando como parâmetro o nome da função a ser chamada, o tempo para começar a ser chamada e o tempo de repetição.
Questão 3
Em um jogo com constante criação de objetos, o consumo de memória pode ser um problema, principalmente depois de muito tempo de jogo. Marque a opção que NÃO É uma solução para esse problema.
a) Desativar objetos quando saem do campo de visão, e reaproveitá-los em outros lugares em vez de criar novos objetos.
xb) Reduzir o número de objetos criados por segundo.
c) Assim que criar os objetos, determinar um tempo para serem destruídos.
d) Limitar a quantidade de objetos do mesmo tipo que podem existir na cena.
e) Para objetos que se movem continuamente, destruí-los quando saírem do cenário.
Justificativa
No caso de objetos que são criados continuamente, se não forem destruídos, em algum momento poderão causar um estouro de memória, travando ou fechando o jogo. Reduzir a taxa de criação desses objetos apenas adia esse evento. O correto é, de fato, controlar a quantidade de objetos em jogo e destruir os que não forem mais necessários.
Questão 4
Para destruir um GameObject inteiro, utilizamos a função Destroy, que recebe como parâmetro o objeto a ser destruído. Qual a forma correta de utilizá-la?
a) Destroy(this);
b) this.Destroy();
c) Destroy(gameObject);
d) Destroy();
xe) gameObject.Destroy();
JustificativaA função estática Destroy recebe como parâmetro o objeto a ser destruído. Esse objeto pode ser qualquer um manipulado pelo Unity. Desde GameObjects a componentes. Utilizando Destroy(this) em um script, apenas o componente referente ao script é destruído, mas o GameObject continua. Para destruir um um GameObject, é preciso passá-lo como parâmetro: Destroy(gameObject).
AULA 06: Programação de mecânicas com cenário infinito
Questão 1
Existem diversos jogos forever run de sucesso. Entre os mais famosos, podemos citar Jetpack Joyride e Subway Surfers. Tendo esses jogos como exemplo, como podemos caracterizar a mecânica forever run?
a) Jogo de plataforma, em que o jogador deve correr e pular, desviando dos obstáculos e capturando itens.
b) Jogo em que o personagem corre infinitamente, cada vez mais rápido.
xc) Jogo em que o personagem se move automaticamente pelo cenário e o jogador precisa apenas desviar dos obstáculos e pegar itens.
d) Jogo caracterizado pela busca infinita por moedas.
e) Jogo de corrida em circuito fechado, proporcionando infinitas voltas.
Justificativa
Em jogos do tipo forever run o personagem se move automaticamente por um cenário infinito. Cabe ao jogador apenas tomar pequenas decisões para desviar de obstáculos e, geralmente, pegar itens.
Questão 2
Ainda sobre jogos do tipo forever run, o personagem precisa percorrer continuamente o cenário. Porém, geralmente, isso é feito sem mover o personagem fisicamente para frente. Como isso é feito?
a) Alterando apenas o mapeamento UV da textura.
b) Fazendo com que cenário e itens venham em sua direção.
c) Movendo o personagem para frente e retrocedendo a cada período de tempo.
d) Movendo o personagem para traz, invertendo a renderização da câmera.
xe) Utilizando efeito de paralaxe.
Justificativa
Em determinados jogos de cenário infinito, em vez de mover o personagem para frente, movemos os elementos e cenário em sua direção. Dessa forma, evitamos que a posição do personagem, após muito tempo de jogo, possua um valor muito alto atingindo os limites de precisão do tipo de dados float.
Questão 3
Dado que um objeto qualquer deseja mover 2 metros na direção de um transform target, qual código realiza esse movimento?
a) transform.position += target.position.normalized * 2
b) transform.position += target.position * 2
c) transform.Translate( target.position * 2)
d) transform.position += target.forward * 2
xe) transform.Translate( (target.position – transform.position).normalized * 2 )
Justificativa
Para mover um objeto em direção a outro, precisamos, primeiramente, calcular o vetor direção que aponta para o segundo objeto. Fazemos isso subtraindo a posição do segundo pelo primeiro. Essa direção possui o comprimento igual à distância entre os objetos. Para movimentarmos 2 metros, precisamos normalizar essa distância para depois multiplicar por 2.
Questão 4
Nessa aula, criamos o script DestruirForaDaTela que deve destruir o objeto caso sua posição x seja menor que -20. Nesse caso, assumimos que a posição x=-20 sempre estará fora da tela. O que pode ocorrer, de grave, em dispositivos com resoluções e dimensões de tela diferentes?
a) O objeto pode nunca ser destruído.
b) O jogador pode ver o objeto sendo destruído dentro da tela.
c) O objeto pode ficar escondido quando estiver fora da tela.
d) O jogador pode ver o objeto sendo destruído fora da tela.
xe) Pode ocorrer um erro de execução dependendo da proporção da tela.
Justificativa
Quanto mais larga (wide) a tela, maior o comprimento em metros que ela exibe do cenário. Portanto, pode ser que a posição -20 esteja localizada dentro da área visível da tela. Dessa forma, quando o objeto atingisse esse ponto, seria destruído dentro da tela, causando uma impressão errada para o jogador. O correto é utilizar as informações da câmera para saber qual porção do cenário é, realmente, visível para o jogador.
AULA 07: Criação de jogo de plataforma
Questão 1
Diferente de engines físicas específicas, engines físicas genéricas precisam se adaptar a qualquer situação. Isso pode gerar algumas imperfeições matemáticas. Por exemplo, as engines físicas PhysX e Box2D, utilizadas pelo Unity, permitem que dois objetos se sobreponham por alguns frames. O que esse efeito pode causar em alguns jogos?
a) Pode fazer com que objetos sobrepostos sejam impedidos de se mover.
b) Pode manter objetos em colisão por vários frames.
c) Pode permitir que um objeto passe completamente por dentro de outro.
d) Pode causar um rebatimento errôneo do objeto.
xe) Todas as alternativas são corretas.
Justificativa
Quando dois objetos colidem e se sobrepõem durante algum tempo, eles são automaticamente empurrados para se afastarem. Isso pode causar efeitos estranhos nos objetos e, caso eles se sobreponham muito, pode fazer com que um objeto passe pelo outro.
Questão 2
Em jogos nos quais os objetos se movimentam, arrastando-se por outros, qual a vantagem da utilização de colisores circulares?
a) Reduz a quantidade de cálculos necessários.
b) Evita que objetos “engalhem” um nos outros.
c) Possibilita utilizar um colisor com uma área maior que o próprio objeto.
d) Permite utilizar vários colisores ao mesmo tempo.
e) Evita que objetos se sobreponham.
Justificativa
Devido à forma arredondada de colisores circulares, torna-se muito mais difícil que ele se engalhe com outros objetos. Diferente de colisores retangulares, por exemplo.
Questão 3
Em determinadas situações, um objeto pode ter vários colisores. Porém, precisamos detectar a colisão com apenas um desses colisores. Neste caso, como proceder?
a) Criar um script para detectar a colisão apenas no objeto que possui o colisor.
xb) Marcar o colisor desejado como trigger.
c) Criar um script que verifique no parâmetro Collision qual collider gerou a colisão.
d) Percorrer os colisores, verificando qual está mais próximo do objeto com o qual colidiu.
e) Desativar a colisão com os outros colisores.
Justificativa
O evento OnCollisionEnter, recebe um parâmetro do tipo Collision, que dá informações sobre a colisão, mas não diz qual collider do próprio objeto sofreu a colisão. Para resolver esse problema, precisamos que o colisor esteja em um objeto separado, para um script detectar as colisões geradas apenas por ele.
Questão 4
Quando criamos uma plataforma móvel e colocamos um objeto em cima dela, o movimento lateral da plataforma não é capaz de levar o objeto em cima dela. Qual o motivo desse comportamento, que difere do mundo real?
a) O movimento de um objeto não influi no movimento do outro.
xb) A plataforma e o objeto não permanecem em contato por muito tempo.
c) Quando colidem, os dois objetos são afastados.
d) Sem um script, um objeto não tem como saber do movimento do outro.
e) O atrito entre a plataforma e o objeto não é suficiente para mover o objeto.
Justificativa
Quando dois objetos estão em colisão, entra em ação o atrito superficial. Esse atrito tenta impedir que um deslize sobre a superfície do outro. Esse mesmo atrito é utilizado quando uma plataforma se move lateralmente; o atrito entre os dois objetos, por padrão, não é suficiente para que o objeto acompanhe a plataforma.
AULA 08: Animação baseada em sprites
Questão 1
A animação baseada em sprites, apesar de simples, permite muitas possibilidades de efeitos, tanto que a maioria dos jogos 2D a utilizam. Marque a opção que NÃO É característica da animação baseada em sprites.
a) Pode atribuir um tempo diferente a cada sprite.
b) Pode utilizar um conjunto de imagens com as poses do personagem.
c) Pode executar ciclos contínuos de animação.
d) Pode girar e mover recortes dos sprites.
xe) Pode utilizar uma imagem só, com todas as poses do personagem.
Justificativa
A animação baseada em sprites fundamenta-se na troca dessas imagens a cada período de tempo. As imagens podem vir separadas ou unidas em uma única imagem chamada spritesheet. Animações que rotacionam e movem recortes dos sprites são chamadas cut-out e consistem em outra técnica de animação.
Questão 2
Ao criar animações no Unity, utilizamos, principalmente, as abas Animation e Animator.Qual a utilidade de cada uma, respectivamente?
xa) Criar sequências de animação; Gerenciar a transição entre as sequências de animação.
b) Criar sequências de animação e suas transições; Controlar a velocidade das animações.
c) Gerenciar a transição entre as sequências de animação; Criar sequências de animação.
d) Em ambas podemos criar animações, suas transições e a velocidade de execução.
e) Todas as respostas estão erradas.
Justificativa
Na aba Animation, criamos as sequências de animações. Na aba Animator, gerenciamos a transição entre essas animações. Em ambas podemos ajustar a velocidade de execução das animações.
Questão 3
Após criarmos as animações e suas transições, como, de fato, essas animações são executadas pelo Unity?
a) A aba Animator é responsável por gerenciar as animações que são executadas na aba Animation.
b) Um script é necessário para, a partir das informações contidas no Animator e no AnimationClip, executar as mudanças entre os sprites.
xc) O componente Animator executa as configurações contidas em um arquivo AnimatorController, que por sua vez possui um conjunto de animações armazenadas em arquivos do tipo AnimationClip.
d) O componente SpriteRenderer gerencia o conjunto de animações e suas transições.
e) O componente Animator possui um conjunto de animações armazenadas em arquivos do tipo AnimationClip.
Justificativa
As abas Animator e Animation apenas servem para editar as informações das animações e suas transições. Elas são armazenadas em arquivos do tipo AnimationContoller e AnimationClip. Para executar um AnimationController, é preciso um objeto com o componente Animator.
Questão 4
A transição entre animações pode ser controlada de diversas formas. Uma delas é a utilização de parâmetros que podem ser configurados na aba Animator. Como funcionam esses parâmetros?
a) Devem ser preenchidos através de algum script, para determinar a velocidade das animações
b) Controlam automaticamente em que instante de tempo as transições devem ocorrer.
c) São parâmetros passados pelo método Play, que controlam a transição entre as animações.
d) São atributos com que podemos arrastar outros objetos que servem como condição para a transição entre duas animações.
xe) Devem ser preenchidos através de algum script, e servem como condição para a transição entre duas animações.
Justificativa
Parâmetros de um Animator são variáveis que devem ser preenchidas via script, e servem como condição para a transição entre duas animações. Como exemplo, podemos configurar que uma transição ocorra quando determinado parâmetro tiver o valor true, ou quando seu valor for maior que zero.

Continue navegando