# CGRA 2020/2021 ## Group T01G09 ## Project Notes Project developed by: | Name | Number | E-Mail | | ---------------- | --------- | ------------------ | | Rafael Camelo | 201907729 | up201907729@fe.up.pt| | Mário Ferreira | 201907727 | up201907727@fe.up.pt| ---- Observações: * Decidimos aumentar o tamanho do MyFish, visto apenas 0.5 unidades de comprimento como sugerido no enunciado este ficaria misculo comparado com o resto, atualmente tem cerca de 1.5 unidades de comprimento. * Para representar o ninho, optámos por modificar a textura utilizada para o fundo da areia e mudámos a cor, na área correspondente do ninho, no mapa de altura do fundo de areia. O ninho tem de raio aproximadamente 9 unidades. * Implementámos colisões com os pilares representados e limites no mapa definidos pelo tamanho do fundo de areia. * Permitimos que o peixe pare em qualquer ponto ao longo da subida/descida (ao invés de apenas permitir que ele esteja no limite superior ou limite inferior). Para tal, se o peixe estiver no movimento de subida, usando a tecla 'l', este movimento para. A mesma lógica se aplica ao movimento de descida, usando a tecla 'p' para parar este movimento * Como funcionalidades adicionais decidimos implementar as Algas , o lançamento de Rochas e criar mais peixes animados. - Para as Algas implementamos a classe MySeaweed, esta classe desenha 3 algas (piramides) proximas umas das outras com cores que variam entre verde escuro e verde claro. - Para o lançamento de rochas é preciso o peixe controlado pelo utilizador estar fora do ninho, a um máximo de 7 unidades dele e o peixe não pode estar no patamar da areia (SeaFloor), pois assim apenas largaria a rocha no mesmo local que a lançou (9 < distancia(Peixe -> CentroNinho) < 16 e Peixe.Ycoord > 0). Para lançar a rocha, se todos os criterios anteriores se verificarem, o utilizador tem clicar na tecla 'C' (a mesma para apanhar ou largar no ninho), a pedra vai descrever uma trajétoria parabólica até chegar ao patamar da areia e aí vai para uma das posições pré determinadas no ninho. - Para os peixes animados definimos a sua posição inicial, velocidade (constante) e ângulo de viragem. Estes dois últimos valores definem o raio da trajetória do peixe. ## Screenshots #### Detalhes do Peixe #### Peixe Peixe com textura em 60% do corpo e barbatanas animadas: Visto de frente. ![screenshot1-1](imagens/Screenshots/proj-t01g09-1-1.png) Visto de costas. ![screenshot1-2](imagens/Screenshots/proj-t01g09-1-2.png) #### Fundo de areia e ninho Fundo de areia com alturas e ninho representados. ![screenshot2-1](imagens/Screenshots/proj-t01g09-2-1.png) ![screenshot2-2](imagens/Screenshots/proj-t01g09-2-2.png) #### Superfície da Água Superfície da água com distorção e alturas. ![screenshot3-1](imagens/Screenshots/proj-t01g09-3-1.png) ![screenshot3-2](imagens/Screenshots/proj-t01g09-3-2.png) #### Pedras Várias pedras com diferentes tamanhos espalhadas aleatóriamente pelo fundo de areia, com visão panoramica. ![screenshot4-1](imagens/Screenshots/proj-t01g09-4-1.png) Detalhes de uma pedra. ![screenshot4-2](imagens/Screenshots/proj-t01g09-4-2.png) #### Pilares Pilares com textura de madeira. ![screenshot5-1](imagens/Screenshots/proj-t01g09-5-1.png) ![screenshot5-2](imagens/Screenshots/proj-t01g09-5-2.png) #### Elementos Adicionais Grupo de três pirâmides com cores diferentes (verde claro ou verde escuro) representando algas. ![screenshot6-1](imagens/Screenshots/proj-t01g09-6-1.png) ![screenshot6-2](imagens/Screenshots/proj-t01g09-6-2.png) #### Recolha de Pedras e Largar no Ninho Rochas depois de largadas no ninho. ![screenshot7-1](imagens/Screenshots/proj-t01g09-7-1.png) Peixe depois de recolher uma pedra. ![screenshot7-2](imagens/Screenshots/proj-t01g09-7-2.png) #### Funcionalidades Adicionais ##### Lançamento de Rochas Peixei apanhou uma rocha e deslocou-se até perto do ninho, subindo até a altura maxima. ![Screenshot8-1](imagens/Screenshots/proj-t01g09-8-1.png) O utilizador clicou no 'C' lançando a rocha, esta encontra-se no meio da água ![screenshot8-2](imagens/Screenshots/proj-t01g09-8-2.png) A rocha chegou ao patamar da areia e foi colocada numa posição predeterminada no ninho ![screenshot18-3](imagens/Screenshots/proj-t01g09-8-3.png) ##### Peixes Animados Podemos ver um peixe animado proximo e de lado para a camara, conseguimos observar tambem um peixe virado para a camara no centro da areia, esse seria o peixe controlado pelo utilizador e por fim vemos ao fundo um outro peixe animado. ![screenshot8-4](imagens/Screenshots/proj-t01g09-8-4.png) Agora vendo o nosso pedaço de oceano de cima, podemos observar os mesmo 3 peixes da captura de ecrã anterior, os dois animados a esquerda a fazer um movimento circular e o controlado pelo user no centro do pedaço de areia. ![screenshot8-5](imagens/Screenshots/proj-t01g09-8-5.png) ##### Algas Temos aqui uma captura de ecrã com algas muito próximas da camara. ![screenshot8-6](imagens/Screenshots/proj-t01g09-8-6.png) Desenvolver este projeto foi uma experiência muito agradavél. Sentimos que o trabalho desenvolvido ao longo das aulas práticas foi bastante útil para a elaboração deste projeto, no sentido que enventualmente usamos tudo o que foi lecionado nas TPs. Para além disto, os enunciados para o projeto (e para os trabalhos semanais) eram muito explícitos e ao mesmo tempo davam alguma liberdade para nós, desenvolvedores, adicionarmos/modificarmos certos aspetos. Inicialmente tivemos algumas dificuldades em compreender como os *shaders* funcionam, mas pelo final do projeto já eramos capazes de implementar e usar bem *shaders*. O trabalho foi divido igualmente por nós, pois tivemos sempre, com raras exceções, juntos em chamada a desenvolver código.