Menu

10 – Tutorial Intermediário – HUD

Então caros indies? Preparados pra fazer um novo post? O de hoje é bem simples, é só um simples HUD com a contagem de HP, MP e habilidades.

Para isso, vamos utilizar as imagens do Flare Hud criadas por Mumu e disponibilizadas gratuitamente através do site OpenGameArt:

http://opengameart.org/content/flare-hud
Basicamente nós vamos utilizar são as imagens Frame.png e button_1(frame).png

button_1(frame) Frame

Então já pode adiciona-las com os nomes:
habilidade_ui
barra_ui

20- Tutorial HUD

Depois pode criar uma nova scene só para a gente criar essa HUD (Heads-Up Display). Caso você tenha baixado o meu projeto, já existe uma fase de teste com chão e tudo mais, que você pode utilizar:

21- Tutorial HUD

Aqui o trabalho será simples. Primeiro crie um Canvas na sua aba Hierarchy (UI >> Canvas). E dentro dele crie um objeto vazio (Create Empty) o qual chamaremos de HUD e deverá ocupar todo o espaço do Canvas se esticando:

22- Tutorial HUD

Dentro desse HUD vamos criar outros dois objetos vazios chamado BarraHP e BarraMP. E os posicionem na parte superior esquerda da tela:

23- Tutorial HUD

Dentro da BarraHP, iremos adicionar um Slider e vamos remover o seu Handle Slide Area:

24- Tutorial HUD

Em Slider, diminuam o tamanho e tirem a opção Interactable:

25- Tutorial HUD

Em Background, troquem a cor para uma escura (Ou uma imagem escura se tiverem).

Em Fill Area vamos remover os espaçamentos em Left e Right:

26- Tutorial HUD

Em Fill, vamos tirar o Width (vai se tornar zero) e vamos aplicar a cor vermelha:

27- Tutorial HUD

Caso resolvam mexer lá no Value do Slider já verão a barrinha indo do maior valor para o menor. Porém a barrinha por si só, é feia. Então vamos adicionar novamente a BarraHP um imagem (UI >> Image), qual chamaremos de Barra. Nesta imagem iremos utilizar o sprite barra_ui e em seguida ajustar melhor nossa barra:

29- Tutorial HUD

Lembre-se de sempre deixar a Barra abaixo do objeto Slider, assim ela ficará na frente. Depois é só ir ajustando o tamanho para que ela fique mais ou menos igual ao Slider:

30- Tutorial HUD

31- Tutorial HUD

32- Tutorial HUD

Depois disso a ideia é reduzir o tamanho do objeto BarraHP (Imagino que os filhos estejam apenas centralizados como default, então eles devem seguir o caminho da barra normalmente.

Após reduzir para um tamanho bacana quase igual ao do desenho:

33- Tutorial HUD

Troque as ancoras (pivots, anchors) do Slider e Barra para centralizado e esticado.

34- Tutorial HUD

Com isso caso você precise esticar o BarraHP para a imagem ficar maior, o resto fica quase mais ou menos igual, só precisando fazer alguns ajustes se a imagem for muito grande.

Depois é só repetir o mesmo processo para a BarraMP (Se quiser pode duplicar a BarraHP), porém ao invés do fundo ser vermelho será azul ou outra cor que preferir:

35- Tutorial HUD

Com isso nossa barra já está feita. Só precisamos agora um novo objeto dentro de HUD que chamaremos de Habilidade1. A ideia aqui será bem parecida, porém mais fácil. Basta adicionar uma nova imagem (UI >> Image) e escolher um desenho ou ícone que você tiver.

Para os ícones de habilidades, você pode fazer uma busca no site da OpenGameArt e ver alguns legais. O que eu escolhi usar são esses 3 aqui:

sprite_habilidade1 sprite_habilidade2 sprite_habilidade3

Esses e muitos outros, vocês podem encontrar neste link gratuitamente produzido por Paulius Jurgelevičius:

http://opengameart.org/content/skill-item-and-spell-icons

Então após adicionar os 3 itens como sprite:

36- Tutorial HUD

Então é só adicionar uma imagem ao Habilidade1 com o ícone (chame o objeto de Icone):

37- Tutorial HUD

E depois adicionar o habilidade_ui como imagem para ser as bordas (Dê o nome de Bordas):

38- Tutorial HUD

Legal, né? Só precisamos agora dizer que tanto o Icone como Bordas se esticaram caso o objeto Habilidade1 mude de forma:

39- Tutorial HUD

Vamos coloca-lo agora ao lado das barras de HP e MP e um pouco menor e com o seu pivot na parte superior esquerda:

40- Tutorial HUD

Vamos duplicar esse objeto mais 2 vezes e adicionar as outras habilidades (Troca a imagem em Icone, o nome dos objetos para Habilidade2, Habilidade3 e os coloca mais para o lado direito) :

41- Tutorial HUD

E nosso HUD já está praticamente feito. Basta apenas criar o script. Então vamos criar um novo script (C#) chamado HUD dentro da pasta scripts/jogador:

42- Tutorial HUD

Esse Script é mais simples do que parece:

Script: HUD.cs

using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class HUD : MonoBehaviour {

    public Slider sliderHP;                            //Slider HP
    public Slider sliderMP;                            //Slider Magia
    public Image iconeHabilidade1;                     //Icone Habilidade 1
    public Image iconeHabilidade2;                     //Icone Habilidade 2
    public Image iconeHabilidade3;                     //Icone Habilidade 3
    private Status status;                             //Status do jogador
    private IHabilidade habilidade1;                   //Status do jogador
    private IHabilidade habilidade2;                   //Status do jogador
    private IHabilidade habilidade3;                   //Status do jogador
    private Color habilidadeDisponivel = Color.white;  //Icone na cor normal
    private Color habilidadeIndisponivel = Color.grey; //Icone meio transparente

Os Sliders serviram para a gente mover aquela barra semelhante ao que fizemos ao criar a barra de status na seleção dos personagens.

As imagens em iconeHabilidade1, iconeHabilidade2, iconeHabilidade3 serviram para a gente deixar sua cor mais escura, quando não tivermos mais MP ou nível para usa-la.

Status será o status do jogador que usaremos para trabalhar nosso HUD.

As IHabilidade, servirá para a gente saber se uma habilidade pode ou não ser usada através do método podeUsar().

As colors em habilidadeDisponivel e habilidadeIndisponivel, servem apenas para indicar se pode ou não usar a habilidade.

Tudo certo até então, porém o nosso IPersonagem não retorna as habilidades do personagem, então bora criar 3 métodos get em IPersonagem:

Script: IPersonagem.cs

using UnityEngine;
using System.Collections;

public interface IPersonagem {
    Status getStatus();
    void recebeDano(int dano);
    Sprite getSprite();
    string getNomePrefab();
    IHabilidade getHabilidade1();
    IHabilidade getHabilidade2();
    IHabilidade getHabilidade3();
}

No Script Jogador, vamos precisar criar também as variáveis habilidades lá além do gets:

Script: Jogador.cs

    protected IHabilidade habilidade1;
    protected IHabilidade habilidade2;
    protected IHabilidade habilidade3;

Script: Jogador.cs

    public IHabilidade getHabilidade1() {
        return this.habilidade1;
    }

    public IHabilidade getHabilidade2() {
        return this.habilidade2;
    }

    public IHabilidade getHabilidade3() {
        return this.habilidade3;
    }

E precisaremos também atualizar nossos scripts Personagem1 e Personagem2, removendo a declaração das classes de habilidade direto da variável para o método Awake (Afinal a variável já foi declarada em Jogador, não faz sentido ter ela de novo nos Personagens):

Script: Personagem1.cs

using UnityEngine;
using System.Collections;
using System;

public class Personagem1 : Jogador {

    public Ataque ataque;

    void Awake() {
        status = new Status(20, 6, 10);

        habilidade1 = new Slash();
        habilidade2 = new Berserker();
        habilidade3 = new Invencibilidade();
        
        habilidade1.setPersonagem(gameObject);
        habilidade2.setPersonagem(gameObject);
        habilidade3.setPersonagem(gameObject);
    }
...

Script: Personagem2.cs

using UnityEngine;
using System.Collections;
using System;

public class Personagem2 : Jogador { 

    public AtaqueAndante kunai;

    void Awake() {
        status = new Status(10, 12, 5); //HP 10 | MP 12 | Ataque 5

        habilidade1 = new AtaqueTriplo();
        habilidade2 = new PuloDuplo();
        habilidade3 = new Cura();

        habilidade1.setPersonagem(this.gameObject);
        habilidade2.setPersonagem(this.gameObject);
        habilidade3.setPersonagem(this.gameObject);
    }
...

Após ajustar os nossos scripts IPersonagem, Jogador, Personagem1 e Personagem2, podemos voltar ao script do HUD.

Aqui vamos ao método Start buscar as habilidades e status do jogador, para poder definir os valores nos Sliders e nas imagens:

Script: HUD.cs

    void Start () {
        //Busca os valores
        var personagem = GameObject.FindWithTag("Player").GetComponent();
        status = personagem.getStatus();
        habilidade1 = personagem.getHabilidade1();
        habilidade2 = personagem.getHabilidade2();
        habilidade3 = personagem.getHabilidade3();

        //Informa os valores nos slides
        sliderHP.maxValue = status.getHPMax(); //Define o valor máximo do Slider
        sliderMP.maxValue = status.getMPMax(); //Define o valor máximo do Slider
    }

Como nosso personagem pode ser qualquer prefab, então buscamos pela sua Tag Player. Em relação ao pessoal que baixar o projeto do jogo no final do post, peço que tomem cuidado, pois quando você zipa o projeto e abre em outro pc, é comum ele perder as marcações tags e layers. Tem outra forma de fazer sem perder, que é exportando os assets, porém isso só exporta o assets e não as configurações como os Inputs e outras coisas :/

Continuando, depois de pegar esses valores e informar qual é o valor máximo dos sliders, agora é hora de atualizar os campos através do método Update:

Script: HUD.cs

void Update () {
        //Atualiza Sliders
        sliderHP.value = status.getHP();
        sliderMP.value = status.getMP();

        //Atualizar Icones
        //Habilidade 1
        if (habilidade1.podeUsar())
            iconeHabilidade1.color = habilidadeDisponivel;
        else
            iconeHabilidade1.color = habilidadeIndisponivel;

        //Habilidade 2
        if (habilidade2.podeUsar())
            iconeHabilidade2.color = habilidadeDisponivel;
        else
            iconeHabilidade2.color = habilidadeIndisponivel;


        //Habilidade 3
        if (habilidade3.podeUsar())
            iconeHabilidade3.color = habilidadeDisponivel;
        else
            iconeHabilidade3.color = habilidadeIndisponivel;
    }

Com isso já passamos para o slider o valor do HP atual do personagem para ele aumentar o diminuir a barra. O mesmo para o MP.

Quanto às habilidades, verificamos se elas estão ativas. Se tiverem, usamos cor normal, caso não usamos a cor da habilidadeIndisponivel (Cinza).

E com isso já terminamos nosso script. Simples assim. Agora voltar ao unity e adicionar o script HUD ao objeto HUD e informar quem são os slides e ícones:

43- Tutorial HUD

Feito, isto pode jogar um prefab de algum personagem na Scene e testar:

45- Tutorial HUD

Se estiver tudo certo, transforme o objet HUD em um prefab para que você possa facilmente adiciona-lo em diferentes fases:

46- Tutorial HUD

E com isso terminamos mais um post! Está cada vez mais fácil né? A parte mais tensa já passou. Pode ser que ainda tenha alguns posts maiores como a criação dos primeiros inimigos e cenário, mas no geral os próximos tendem a ser nesse ritmo mais calmo, até porque eu não preciso mais explicar todas as funcionalidades como fazia no inicio do tutorial.

Nós vemos no próximo tutorial, aonde vou ensinar algo bem pequeno e simples. Pausar o jogo. Abraço ^^

Criador do Jogos Indie, amante de jogos, terror, música, anime e programação. Estudante de mestrado com foco em jogos na educação. Louco por Resident Evil e... sei lá, acho que é isso O.o

35 comments

  1. vc manda bem gostaria de ver mts mais jogos sues . tem canal no youtube

    • Ainda tenho muito a aprender, sempre vejo coisas novas e ficarei bastante feliz em passar esse conhecimento para vocês de forma simplificada nos tutoriais que faço ^^

      Quanto ao canal no youtuber, nem tenho nada relacionada a tutoriais não.

  2. Fabio Pimenta disse:

    Carlos, boa tarde. Antes de transformar o HUD em prefab, as barras de HP e MP estavam funcionando, depois de transformar em Prefab e arrastar de volta aparecem os erros :

    NullReferenceException: Object reference not set to an instance of an object
    HUD.Start () (at Assets/Scripts/Jogador/HUD.cs:29)

    status = personagem.getStatus();

    NullReferenceException: Object reference not set to an instance of an object
    HUD.Update () (at Assets/Scripts/Jogador/HUD.cs:45)

    sliderHP.value = status.getHP();

    • Fabio Pimenta disse:

      Rodei Debug antes e realmente está nulo, não entendo o porque pois o prefab do meu Personagem existe, está funcional e com a Tag “Player”.

      var personagem = GameObject.FindWithTag(“Player”).GetComponent();
      Debug.Log (personagem);
      status = personagem.getStatus();

      • Bom, duas coisas a se preocupar:

        1 – No Script do HUD ele busca o player no método Start?
        2 – No script do jogador ele define o status no método Awake?

        O Start acontece depois de todos os métodos Awake, então se a ordem ai estiver errada, ele não buscará nada

        • Fabio Pimenta disse:

          Os Scripts estão um pouco diferentes dos seus pois eu criei 1 Personagem só e concentrei as 6 Habilidades nele, mas fiz os devidos ajustes (Todas as 6 habilidades funcionam desde o Tutorial das Habilidades), seguem :

          Personagem1.cs //Definindo os Status no Awake

          void Awake() {
          status = new Status(20, 10, 10);

          habilidade1 = new BlueShot ();
          habilidade2 = new Berserker ();
          habilidade3 = new Invencibilidade();
          habilidade4 = new AtaqueTriplo();
          habilidade5 = new PuloDuplo();
          habilidade6 = new Cura();

          habilidade1.setPersonagem (gameObject);
          habilidade2.setPersonagem (gameObject);
          habilidade3.setPersonagem (gameObject);
          habilidade4.setPersonagem (gameObject);
          habilidade5.setPersonagem (gameObject);
          habilidade6.setPersonagem (gameObject);
          }

          HUD.cs //Sim ele busca o Player no Start

          void Start () {
          //Busca os valores
          var personagem = GameObject.FindWithTag(“Player”).GetComponent();
          Debug.Log (personagem); //Aqui ele retorna NULO
          status = personagem.getStatus();
          habilidade1 = personagem.getHabilidade1();
          habilidade2 = personagem.getHabilidade2();
          habilidade3 = personagem.getHabilidade3();
          habilidade4 = personagem.getHabilidade4();
          habilidade5 = personagem.getHabilidade5();
          habilidade6 = personagem.getHabilidade6();

          //Informa os valores nos slides
          sliderHP.maxValue = status.getHPMax(); //Define o valor máximo do Slider
          sliderMP.maxValue = status.getMPMax(); //Define o valor máximo do Slider
          }

          • Qual o valor no component que você busca? Não use o < e > porque eles são removidos nos comentários ^^

            E se você apenas buscar o objeto com a tag sem o GetComponent,ele também trás vazio?

            • Fabio Pimenta disse:

              var personagem = GameObject.FindWithTag(“Player”).GetComponent-IPersonagem-();
              var personagem2 = GameObject.FindWithTag(“Player”);

              Debug.Log (personagem); //Retorna Nulo
              Debug.Log (personagem2); //Retorna Personagem1(Clone) (UnityEngine.GameObject)

              Então parece que o problema é o GetComponent, agora porque será que só dá problema comigo ? Algo da adaptação ou da versão que uso ?

              Pelo que entendi preciso do GetComponent para ter acesso às habilidades pois sem ele não consigo acessar .getHabilidade1-6

              • Não, não, não creio que tenha relação não com a versão.

                Mas sim como o script do perosnagem foi feito. No caso o seu script lá do único personagem, como esta a chamada?

                “public class Personagem: MonoBehaviour, IPersonagem {“?

                E outra, se você apenas terá um único personagem não faz muito sentido ter uma interface. Pode fazer direto:

                GameObject.FindWithTag(“Player”).GetComponent<NomeDoScriptDoPErsonagem>();

                • Fabio Pimenta disse:

                  Personagem1.cs
                  public class Personagem1 : Jogador {

                  Jogador.cs
                  public abstract class Jogador : MonoBehaviour, IPersonagem {

                  Alterei onde tinha a Interface .GetComponent-IPersonagem-(); para .GetComponent-Personagem1-(); mas dá o mesmo erro 🙁

                  O curioso é que a HUD estava funcionando assim que foi criada (fiz o teste na Scene Teste) mas assim que arrastei para a pasta Resources/Prefabs, deletei da cena e adicionei de novo (dentro do Canvas) ela parou de funcionar.

                  Será que tem que instanciar algo ?

                  • É algo relacionado a ordem que é chamado de certeza. Se você puder salvar o projeto e mandar pro meu e-mail. De madrugada quando eu terminar de trabalhar aqui, eu dou uma olhada 😉

                    • Fabio Pimenta disse:

                      Blz Carlos, vou fazer isso, só um detalhe que observei :

                      Fazendo Debug.Log no seu projeto ele retorna Personagem1 (Personagem1)
                      Mas ao fazer no meu ele retorna Personagem1(Clone) (UnityEngine.GameObject)

                      Obrigado pela atenção !

                    • Fabio Pimenta disse:

                      Outra coisa que descobri Carlos.

                      Usei Debug.Log(GameObject.FindGameObjectsWithTag(“Player”).Length);
                      E ele retorna 8 !!!

                      Parece que está criando clones do meu Prefab, tanto que se eu remover o Personagem da Hierarchy, e deixar a Scene só com o HUD, Menu de Pausa e Câmera ele retorna 7, 1 a menos @.@

                      Que bruxaria é essa ? rsrsrsrs. De onde estão vindo esses Kage Bunshin no Jutsu (Clones de Naruto) ?

                    • Ai complica, só olhando o projeto para entender o que tem nele =P

  3. Fabio Pimenta disse:

    “Resolvi” o problema do HUD e clones do meu Prefab Personagem mudando a Tag de Player para qualquer outro nome. Não sei se tem fundamento mas me disseram que existe um bug antigo com a tag “Player” do Unity em que ele inicializa esses Clones do nada, então acho que é bom evitar de usar @.@

  4. Jonas disse:

    Ola amigo achei seu site navegando aki pela net e achei simplismente fantástico suas explicações, resolvi seguir seu tutorial de criaçao de jogos na unity mais estou com um problema aki, estou com a ultima versao da unity 5.3.3 toda vez q dou play no jogo o menu da UI (menu gameobject UI) some e tambem todas as imagens (UI.image) da aba play O.o já tentei instalar e desinstalar, ja tentei uma versao mais antiga e nada continua na mesma, alguma dica de como resolver?? PFVVVVV

  5. Jonas disse:

    Oii amigo obrigado pelo retrorno, consegui resolver aki 😀 mas, surgiu outro problema, nao estou conseguindo compilar o projeto para pc, quando escolho a opçao PC, Mac Linux o botão build e build e run ficam desabilitados 🙁 uma ajudinha amigo, obrigado pelo retorno.

    • O.o

      Antes você conseguia ou nunca conseguiu?

      Aparece alguma mensagem como modulo não instalado? Caso sim, reinstala o Unity e verifica se durante a instalação a opção Windows, Mac e Linux Build Support estão selecionadas.

  6. JonasP disse:

    mais uma vez obrigado pela atenção, já compilei alguma vezes sim, porem, tive que desinstalar e instalar novamente pq estava enfrentando um problema no canvas como falei anteriormente, o problema foi sanado mais agora estou com esse problema na compilação.
    AKI ESTÁ O PRINT DA UNITY
    http://tinypic.com/view.php?pic=292wx0z&s=9

  7. JonasP disse:

    Estou usando a versao mais atual 5.3.3 e com relaçao a essa tela que está no seu print ela não aparece pra mim quando vou instalar a UNITY O.o estou baixando do site oficial através dessa opção que está sublinhada de vermelho, obrigado pelo retorno
    PRINT LINK
    http://tinypic.com/view.php?pic=5vagyt&s=9#.VunEjtIrLIU

  8. Jonas disse:

    Continuando, atraves dessa opção ele gera um instalador de mais ou menos 200 mega e depois disso só é mostrado essas telas pro usuário.
    http://tinypic.com/r/14t0u3b/9

  9. Jonas disse:

    OBS: Caso nao consiga visualizar a primeira imagem
    http://tinypic.com/view.php?pic=xbalax&s=9#.VunuFvk97IU

  10. JonasP disse:

    obg amigo, fazer o download aki 😉

  11. Jonas disse:

    consegui resolver, obg pela atenção amigo ganhou mais um fã do site \o

  12. Jonas disse:

    Olá amigo seguindo seus ensinamentos e de outros que procuro na net estou quase terminando meu jogo \o/ mas estou com um pequeno bug aki, criei em sorting leyer algumas leyer (background, ground e foreground) coloquei o personagem em ground umas montanhas em background e agua em foregraund só que agora quando o personagem se movimenta ela fica piscando, vc poderia me dizer o que é isso?? Se é pq o jogo ta pesado ou etc?? Obrigado pelo retorno na resposta mais uma vez e aguardando mais tutorias do desse maravilhoso site.

    • Olha, isso está parecendo conflito de imagens na mesma posição. Faz tempo que eu não uso o sorting layer. Tenta mudar a posição do personagem em Z para -0.1. Se os demais conteúdos forem 0, então ele estará na frente deles.

  13. Jonilton disse:

    Realmente ocorreu o mesmo erro comigo, quando mudei a tag de “Player” para “Player2” voltou a funcionar.

  14. Jonas disse:

    -0.1?? a frente n seria 0.1 positivo? E a camera fica em 0 tbm??

  15. Jonas disse:

    eu tenho o sprite montanha, plataforma e agua e a camera vc acha que eu deveria colocar todas em defeautl no sorting layer e mexer apenas no eixo Z?? Se sim qual a ordem no eixo Z estou meio confuso, obg!

    • Atualmente eu estou preferindo fazer assim, mas ai fica gosto.

      Tirando a sua dúvida. Vamos esquecer o 2D e pensar o 3D. A camera ela sempre começa na começa z = -10. Z é a profundidade, ou seja, quanto mais para frente maior será o valor. Vamos pensar o seguinte, você está na posição -10. Se você andar para frente numa visão 3D, sua posição em Z vai aumentar né? Vai sair de -10 para 0, digamos. Agora se você andar para trás essa posição vai diminuir, saindo de -10 para -20. Ou seja, tudo que tiver mais a fundo terá um valor de Z maior, enquanto tudo que tiver mais perto da camera (ou seja mais para trás no cenário), terá um valor de Z menor.

      Sendo assim poderíamos por:
      Montanha – Z=1 (Mais ao fundo)
      Plataforma – Z=0.5 (No meio)
      Agua – Z=0 (Na frente de tudo)

      Se seu personagem vai ficar entre a agua e a plataforma, é só for um valor entre 0.5 e 0. Se for ficar em cima da plataforma, basta por 0.5 😉

  16. Jonas disse:

    Valeu pela dica amigo, caiu como uma luva ^^ só mais uma coisa rs, como diminuir a camera que esta em ortografic só nos lados(no eixo x) mantendo a camera na mesma distancia? Quando meu personagem chega na ultima plataforma da fase onde n dá maiss pra ele ir pra frente fica mostrando muito espaço no lado, tentei dimuir mais pelo q vi diminui tudo na mesma escala e quando tento ou a camera fica perto de mais ou longe de mais, valeu ^^

    E mais uma coisa, pelo que eu vii vc n possuir videos aulas só o site mesmo, eu poderia fazer video aulas das suas dicas dando o devido crédito ao site qual sua opinião a respeito?

  17. Breno disse:

    Boa noite Carlos, meu nome é Breno e faz pouco tempo que tenho começado a aprender a produzir jogo, seu site é muito legal e tem ensinado muito!

    estou produzindo um jogo estilo River Raid do atari, aquele do aviaozinho que move na vertical..
    já estou com algum caminho andado nesse jogo, mas meu problema é com a resolução.
    pretendo deixar o formato da tela parecida com os jogos de nave dos arcades.
    pesquisando algumas imagens achei essa aqui que me agradou: https://i.ytimg.com/vi/p0_6ixaLFHU/hqdefault.jpg

    ela tem um menu do lado direito e o resto é a tela de jogo, eu fiz aqui a tela desse jeito e para isso tive que deixar a proporção em 5:4. ficou do mesmo jeito que na imagem acima, realmente como eu queria.

    mas o meu maior problema é que se eu for rodar esse jogo em outro monitor, não vai ficar igual, testei em um segundo monitor aqui e cortou um pedaço do cenario a nave some da tela, coisas assim..
    gostaria que vc me ajudasse sobre como faço para que o jogo depois de compilado rode com a imagem igual em qualquer monitor. ou seja, a mesma aparencia do cenario no meu monitor vai aparecer em outros monitores, sem aumentar ou diminuir, cortar partes e tal

Deixe uma resposta

Parceiros

Steam Brasil LoboLimão Centro RPG Lab Indie
Mundo Gamer PodTerror

Anunciantes

Aglomerando - Agregador de conteúdo
Uêba - Os Melhores Links GeraLinks - Agregador de links Piadas Idiotas - São idiotas mas o faz rir Tedioso: Os melhores links LinkLog MeusLinks.com - Informação e conteúdo todos os dias para você! Agregador de Links - Madruga Links 4Blogs - Agregador de conteúdo Está no seu momento de descanso né? Entao clique aqui!