Você usará o seu endereço de e-mail para login.
As senhas devem ter pelo menos 6 caracteres de comprimento.
Digite sua senha novamente para confirmação.
Aula 8: Criando HUDs e Sprites Parte 1
www.mundorpgmaker.comThis work is licensed under a Creative Commons Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Unported License.
Índice de todas as aulas aqui
8.0 - O que são HUDs e Sprites?
HUDs são informações exibidas no mapa constantemente, seja por uma imagem legal, por uma janela, etc. Elas geralmente mostram o HP, MP, e EXP do herói enquanto este anda pelo mapa do jogo.Elas enchem a tela do jogo e são muitos úteis! Um exemplo de HUD é essa que eu fiz:
E quanto a Sprites? Sprites são objetos especiais, que mostram imagens na tela do jogo. Até agora, o único aparato gráfico que tinhamos era as windows. Nesta aula, aprenderemos a usar imagens que estão na pasta do jogo.Vamos lá?
8.1 - Sobrescrevendo métodos
Antes de fazer nosso Sprite ou Window que fará parte da window, teremos de parar para pensar um pouco...Depois de terminarmos, como colocaremos ela(a HUD) no mapa?Se se lembram bem, para colocarmos um window numa scene(nesse caso Scene_Map), precisamos colocar o código que cria a HUD antes do código fixo.Considerando isso, podemos colocar HUD na scene de três formas básicas:
Modificando diretamente
O que é meio óbvio...É só ir direto no Scene_Map do editor de scripts. Lá temos o método main escrito, criaremos nossa HUD lá. Depois colocaremos a atualização da nossa window no método update. Depois colocaríamos o dispose da HUD depois código fix.Acontece que isso não é viável e não é correto.Já pensou? Na hora de o pessoal usar seu script, você faria uma página enorme de instruções, dizendo que o cara tem de adicionar linhas a tal script...Não é legal.
Redeclarando os métodos
classScene_Map def main end def update endend
Daí era só digitar os novos métodos da Scene_Map. Porém...também não é legal. Fazendo isso, desconsideramos o método main e update da Scene_Map.Tudo o que eles faziam antes é perdido, e perde lugar para o nosso novo método main e update. Isso quer dizer que o mapa deixará de fazer tudo...Deixará de atualizar os eventos, nem chegará a criar os gráficos...um desastre.Só sobra uma alternativa.
Usando o alias
Usar o alias é muito legal. Muitos scripter enpacam na hora de usar o alias(confesso que quando eu fazia script na RMB eu nem conseguia usar o alias). Com o alias, podemos modificar métodos como fizemos acima, só que sem perder o que eles faziam antes.Podemos modificar o update do Scene_Map sem perder ele.Usar o alias pode ser bem complicado...Veremos isso logo na frente, com a prática.Porém, para facilitar, irei mostrar a forma geral do alias:
alias metodo_novo metodo_a_se_mudar def metodo_a_se_mudar #comandos metodo_novo #comandosend
8.2 - Criando sprites
Sprites são objetos que manipulam imagem, basicamente.Se você tem uma imagem e quer exibí-la, usar um Sprite é a solução.Para criar um Sprite de forma bem simples, usamos o código:
sprite =Sprite.new
Como podem ver, criar um sprite é MUITO simples. Porém, depois de criar um Sprite, devemos atribuir a ele a imagem que ele exibe.Antes de atribuir a imagem, devemos primeiro carregá-la:
imagem = RPG::Cache.picture("Nome da imagem")
Nesse caso, carregamos uma imagem na pasta Pictures, com o nome especificado.Depois de carregar a imagem, devemos atribuir ela ao sprite:
sprite.bitmap = imagem
Então, para criar um sprite e atribuir uma imagem a ele, usamos:
sprite =Sprite.new imagem = RPG::Cache.picture("Nome da imagem") sprite.bitmap = imagem
Porém, estou falando isso de forma bem superficial. Um Sprite tem muito mais capacidades: é possível mudar a posição do Sprite na tela, fazer animações com ele, e muito mais.Porém, para nossa HUD, é necessário saber só disso.
8.3 - HUD com windows
Antes de colocar uma window como uma HUD, devemos primeiro definí-la.Fiz aqui uma window bem simples, que mostra o nome do primeiro membro do grupo de personagens:
classWindow_NomeExemplo<Window_Base def initialize super(0,0,160,64) self.contents =Bitmap.new(width -32, height -32) @actor= $game_party.actors[0] refresh end def update super if@actor!= $game_party.actors[0] @actor= $game_party.actors[0] refresh end end def refresh self.contents.clear draw_actor_name(@actor,0,0) endend
A única novidade aqui é o método update da nossa window. Nele, detectamos se foi mudado o primeiro personagem do grupo(por exemplo, trocar do Ash para o Trevor).Se foi mudado, ela re-imprime o nome do primeiro actor.
Colocando a window no mapa
Como eu havia dito, para colocar uma window no mapa a melhor opção é o alias.Usaremos o alias no método main e no método update, pois queremos modificar os dois.O problema dos scripters iniciantes é perceber exatamente o que o alias faz. O alias simplesmente copia o método desejado.Quando não usamos o alias, informações são perdidas, o alias simplesmente copia essas informações.Vamos fazer um pequeno teste do alias, antes de usá-lo.Primeiro, vamos criar um método hipotético(coloque ele acima de todos os scripts, inclusive acima de Main):
def show_message p "Olá!"end show_message
Teste o jogo. Aparecerá a mensagem "Olá!".Agora suponhamos que um outro scripter queira modificar nosso método, adicionando essa linha:
p "Olá de novo!"
Se ele não usasse o alias, dessa forma(apague o código de antes e coloque esse):
def show_message p "Olá!"enddef show_message p "Olá de novo!"end show_message
Ao testar o método(teste agora) ele exibiria somente "Olá de novo!", ou seja, ação p "Olá!" seria perdida.Se ele usasse o alias, o que seria inteligente(remova todo o código e coloque esse e teste):
def show_message p "Olá!"endalias old_show_message show_message def show_message old_show_message p "Olá de novo!"end show_message
Teríamos que as duas mensagens são exibidas, "Olá!" e "Olá de novo!".Suponhamos que um outro scripter queira modificar nosso método também, adicionando a linha:
p "Olá pela terceira vez!"
Se ele usasse o alias(delete o código de antes, ponha esse e teste):
def show_message p "Olá!"endalias old_show_message show_message def show_message old_show_message p "Olá de novo!"endalias old_show_message2 show_message def show_message old_show_message2 p "Olá pela terceira vez!"end show_message
Observe o que o alias faz.Ele possibilita que adicionemos coisas a certos métodos, mesmo sem saber como eles funcionam.Na primeira vez, copiamos o método main antigo e deixamos ele com o nome de old_show_message. Da segunda vez, copiamos o método main de novo e deixamos a cópia com o nome de old_show_message2. Além disso, observe: usar alias possibilitou que os scripts dos dois carinhas funcionassem juntos. Usar alias é muito necessário na COMPATIBILIDADE DE SCRIPTS.Então, use o alias sempre que puder!Se não entendeu como usar, pelo amor de deus, fale comigo nesta aula que tirarei a dúvida.Então, simples e diretamente, para adicionar nossa window no mapa usamos o alias. Ficará assim nosso código da scene:
classScene_Map alias initialize_hud_exemplo main def main @window_hud=Window_NomeExemplo.new initialize_hud_exemplo @window_hud.dispose end alias update_hud_exemplo update def update @window_hud.update update_hud_exemplo endend
Se não entendeu esse código, então é porque não entendeu o alias direito...Então, peça ajuda aqui no tópico especificando o que não entendeu.Nosso código final ficará assim:
classWindow_NomeExemplo<Window_Base def initialize super(0,0,160,64) self.contents =Bitmap.new(width -32, height -32) @actor= $game_party.actors[0] refresh end def update super if@actor!= $game_party.actors[0] @actor= $game_party.actors[0] refresh end end def refresh self.contents.clear draw_actor_name(@actor,0,0) endendclassScene_Map alias initialize_hud_exemplo main def main @window_hud=Window_NomeExemplo.new initialize_hud_exemplo @window_hud.dispose end alias update_hud_exemplo update def update @window_hud.update update_hud_exemplo endend
8.4 - HUD com sprites
Enganei você! Não ensinarei a fazer HUDs com sprites dessa vez...Fazer HUD com Sprites pode ser muito mais complicado do que parece: é feito exatamente da mesma forma ao encaixar no mapa, porém, ao contrário da HUD com windows, seria necessário explicar como imprimir barras de HP e MP usando Sprites, o que não dá para fazer nessa aula. Esperem pela próxima aula!
8.5 - Conclusão
Espero que tenham gostado da aula.Eu praticamente só falei de como colocar windows no mapa.Na aula que vem, falarei do que realmente interessa: usar a capacidade gráfica que o RGSS nos proporciona.Ensinarei a manipular Sprites, a usar Sprites como HUDs, e muito mais...
8.6 - Dever
Faça uma HUD usando uma window. Nessa HUD, mostre vários atributos interessante do personagem, como HP, MP e EXP. Se quiser, use os seguintes métodos no initialize da window:
self.opacity =0self.back_opacity =0
Use-os para deixar o fundo da window invisível, daí aparecerá apenas as informações da HUD.
Unblocked Games 66 dive in and enjoy endless hours of entertainment with a wide selection of games that cater to all ages and interests!