Publicação

Criação de um Parallax Scrolling com Unity 5.X

foto de
Wiliam Nascimento Wtn CONTEÚDO EM DESTAQUE

Um dos efeitos mais legais e fáceis de reproduzir na Unity é o efeito de parallax scrolling.
Esse efeito visa iludir o jogador para que o mesmo tenha a impressão de que o personagem principal está se movimentando e que esse movimento é responsável por todo o deslocamento do background da cena.
É claro que esse deslocamento não é feito de qualquer maneira, ele precisa respeitar algumas regras.
Mas que regras são essas?
Veremos isso logo abaixo:


•    O personagem principal deve estar em movimento.
Isso é meio obvio, pois para ter um deslocamento do background o personagem principal precisa estar em movimento na cena.
•    O background se move sempre na direção oposta da direção do personagem.
Isso imita o mundo real, pois se estamos andando na direção de um objeto qualquer é fato que logo ultrapassaremos esse objeto e o mesmo ficará para trás.
•    Quanto mais perto um objeto esta do personagem mais rápido ele se move.
Temos aqui outra situação que imita o mundo real, certamente andando de carro você já se pegou olhando pela janela e reparando que as árvores no canto da estrada passam muito rápido, diferente da montanha que demora para passar.
•    Quanto mais longe um objeto está do personagem mais lentamente ele se move.
Aqui temos o exemplo da montanha que passa pelo vidro de um carro bem lentamente, diferente de objetos que estão mais próximos do carro.


Seguindo essas premissas conseguiremos criar um efeito de deslocamento muito profissional, pois vamos imitar ao máximo uma situação do mundo real.
É claro que no mundo real o background não se move apenas a pessoa se move, mas em um jogo precisamos dar uma forcinha para o background fazer seu trabalho.
Agora chega de teoria e vamos colocar a mão na massa.

Preparando a Unity para o exemplo de Parallax Scrolling

Para criar um exemplo de parallax é necessário antes de tudo definir quais serão as imagens de background que serão usadas.
No meu caso vou usar as seguintes imagens exatamente na ordem que aparecem aqui:




Dê o nome de Scroll a esse arquivo e dentro dele adicione o seguinte código:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Scroll : MonoBehaviour {

    private Renderer back;
    private float vel;
    private  string nomeBack;

    void Start () {

        back = GetComponent<Renderer> ();
        nomeBack = this.gameObject.tag;

    }

    // Update is called once per frame
    void Update () {



        switch (nomeBack)
        {

        case "ceu1":
            vel = 0.1f;
            break;

        case "ceu2":
            vel = 0.5f;
            break;

        case "ceu3":
            vel = 1.0f;
            break;

        }

        Vector2 offset = new Vector2 (vel * Time.deltaTime, 0);

        back.material.mainTextureOffset += offset;

    }
}



E aí está o código que faz a mágica acontecer!


Vamos então entender como ele funciona.

Primeiro criamos as variáveis que serão usadas no processo, sendo back para manipular o offset das imagens, o vel para controlar as três velocidades de deslocamento e a nomeBack para pegar as tags de cada um dos Quads.

private Renderer back;
private float vel;
private  string nomeBack;


No método Start vou iniciar as variáveis back e nomeBack, para poder trabalhar com o Renderer e a tag dos objetos em cena.

void Start () {

        back = GetComponent<Renderer> ();
        nomeBack = this.gameObject.tag;

    }


Por último, no método update crio um switch para verificar a tag do objeto que estou usando que como vimos vai da tag ceu1 até ceu3.
Em cada tag definimos um valor específico de velocidade, começando com uma velocidade baixa e aumentado até chegar no Quad mais próximo da câmera.
Depois disso já teremos as velocidades ajustadas.

void Update () {



        switch (nomeBack)
        {

        case "ceu1":
            vel = 0.1f;
            break;

        case "ceu2":
            vel = 0.5f;
            break;

        case "ceu3":
            vel = 1.0f;
            break;

        }


...
    }
}


Para finalizar criamos uma variável do tipo vector2 com o nome de offset e a ela atribuímos o cálculo responsável pela velocidade de deslocamento horizontal da imagem.
Esse cálculo é usado logo abaixo na nossa mainTextureOffset.

Vector2 offset = new Vector2 (vel * Time.deltaTime, 0);

back.material.mainTextureOffset += offset;

Prontinho, isso já é o suficiente para criar um efeito de parallax Scrolling que com pequenos ajustes em relação a movimentação do personagem principal pode ser usado em seu game.

E isso, aí está  um exemplo simples de parallax scrolling para ser adaptado ao seu jogo.

Quer aprender mais e se tornar um Game Developer? Acesse:

https://www.portalgsti.com.br/cursos/curso-completo-de-jogos-2d-para-android-com-unity-5-c-sharp/



Comentários