Movimento do Cacto e do Chão
Neste tutorial iremos adicionar os obstáculos, além de adicionar movimentação dos obstáculos e do chão.
Código Completo
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movimentar : MonoBehaviour
{
public Vector2 direcao;
public float velocidade;
private void Update()
{
transform.Translate(direcao * velocidade * Time.deltaTime);
}
}Adicionando Obstáculos
Inicialmente vá até a Unity, pois iremos separar as imagens dos obstáculos pré adicionadas, para isto.
Vá até
Project> Clique na pastaAssets> Selecione a pastaSprites> SelecioneCactosFinos.
Após executar os passos acima, será necessário separar os cactos que estão juntos na imagem.
Selecione
CactosFinos> Vá até a guiaInspector> Desça atéSprite Mode> Selecione a opçãoMultiple> Desça e clique emApply> Selecione a opçãoSprite Editor.
Uma tela com 6 cactos será aberta, clique em
Slice> Altere oTypede Automatic para Grid By Cell Count > No campoColumn & Rowaltere o valor deCque estará como 1 para 3 > Clique emSlice
Isto fara com que nossa imagem seja divida em 3 partes iguais.
Voltando para tela inicial da Unity verifique se a divisão da imagem foi feita corretamente em Sprites. Expandindo
CactosFinosverifique se as imagens (CactosFinos_0, CactosFinos_1 e CactosFinos_2) foram criadas. Clique emCactosFinos_0e arraste atéSampleScene.
Após executar este passo, perceba que o cacto foi levado até a nossa cena, porém a escala das imagens estão diferentes. Nosso Dino está muito maior que cacto. Será necessário fazer a alteração da escala do Cacto.
As dimensões da imagem do nosso Dino são 761x94, e as dimensões da imagem do cacto recém adicionado são 34x35. Fazendo uma conta rápida, dividindo a altura do nosso Dino pela altura do cacto (94/35=2,68), podemos ver que o Dino é quase 3 vezes maior, então iremos alterar os valores da escala do cacto para 2,68.
Selecione
CactosFinos_0> Vá até a guiaInspector> EmTransformdesça até a opçãoScalee altere os valores de X,Y e Z para 2.68.
Antes de iniciar nosso código iremos fazer uma pequena alteração em nosso chão, deixando ele mais alinhado com o cacto e com o Dino.
Vá até a guia
Hierarchy> clique emChãoe vá até nossaScene> Use a teclaWpara usar o modo de movimentação e alinhe o Chão com os pés do Dino.
Explicando Código
Se observarmos o game original, podemos tirar duas conclusões. A primeira delas é que o cenário está se movimentando, fazendo com que o Dino tenha apenas que pular os obstáculos. E a segunda, é que o Dino se movimenta junto com a câmera pulando os obstáculos e vendo mais partes do mapa conforme ele avança. Nas duas situações o game irá funcionar, porém em nosso game iremos usar a forma que o os obstáculos se movimentam.
Vá até Unity > Na guia
HierarchyselecioneCactosFinos_0> Vá até a guiaInspectore desça atéAdd Component> Dê o nome do script de "Movimentar"> TecleEnterduas vezes.
Sempre que um Script novo é criado pelo Add Component é fica localizado dentro da pasta Project/Assets. Para que fique organizado, clique no script recém criado e arraste para cima da pasta Scripts.
Clique duas vezes no
Scriptrecém criado (Movimentar). Iremos iniciar a criação do nosso script de movimentação.
O que nós queremos fazer em nosso Script é que nosso obstáculo se movimente, porém ainda não sabemos qual é a direção e ela será definida na Unity(Inspector).
Inicialmente iremos adicionar uma variável publica, pois queremos que ele se movimente para uma direção(Horizontal/Vertical). Para isto usaremos a seguinte variável:
public Vector2 direcao;iremos adicionar também uma variável publica que definirá a velocidade em que nosso obstáculo se movimenta.
public float velocidade;A princípio não usaremos a função Start, então apague as linhas 10,11,12,13,14,15,16 e o comentário que está na linha 17. Iremos utilizar apenas a função Update. Certifique-se que a função Update está na linha 11.
Vá até a linha 11 e antes de
void Update()adicioneprivateque define qual é modificador de acessos e de variáveis. Verifique se oprivateestá escrito com letra minúsculas. Salve as alterações feitas comCtrl + S.
Iremos utilizar as seguintes funções:
transform.Translate(direcao * velocidade * Time.deltaTime); transform: Guarda as informações de posição do objeto.
translate: Movimenta o objeto em uma direção.
direcao: Direção do movimento.
velocidade: Velocidade do movimento.
Time.deltaTime: Nos trás o tempo absoluto de frame a frame.
Desta forma temos o código completo de movimentação do nosso cacto. Salve (Ctrl +S) e volte para Unity.
Configuração de Movimentação
Já na Unity espere compilar os dados e verifique se o script está funcionando corretamente, caso ocorra algum erro (apresentado no console), verifique se existe algum erro de digitação em nosso script.
Vá até
Inspectore desça atéMovimentaçãoiremos adicionar os valores para que nosso cacto se movimente. Com oPlaydesativado, altere o valor de X para -1. O -1 fará com o cacto se mova para esquerda. E altere a velocidade para 3.
Dê play na cena e verifique a movimentação do Cacto. Caso ele esteja muito perto do Dino, selecione
CactosFinos_0> Vá até aScenee arraste o cacto levemente para direita. Desta forma você irá pode verificar melhor a movimentação do cacto.
Adicionando Movimento ao Chão
Voltando a analisar o jogo original, podemos notar que o chão se move junto com os obstáculos. E para fazer com que o chão se movimente também, iremos utilizar o mesmo script que criamos para o cacto.
Vá até
SampleSceneselecione Chão > Desça atéProjecte abra a pastaScripts> Selecione o scriptMovimentar> Arraste até o lado esquerdo deAdd Componente solte.Com o chão selecionado, desça até
Movimentaçãoiremos adicionar os valores para que nosso chão se movimente. Com oPlaydesativado, altere o valor de X para -1. O -1 fará com o chão se mova para esquerda. E altere a velocidade para 3.
Concluindo
Salve a cena e faça os últimos testes para garantir que tudo está funcionando como esperado.
Agora que o código de movimentação do cacto está pronto, suba as modificações no GitHub através de um Commit e um Push, para que elas fiquem salvas na nuvem.
Last updated
Was this helpful?