Quero começar esta lição agradecendo a todos os que tem mandado PMs e
e-mails com agradecimentos e perguntas. Isso é de grande valor para mim,
pois eu tenho aprendido tanto quanto tenho ensinado.
Na última lição faláva-mos de janelas. Hoje falaremos de Imagens.
Todos nós sabemos que é impossível fazer um game sem imagens. O próprio
Tileset, os chars, os panoramas... até mesmo o texto que você escreve
como diálogo é uma imagem. Para aqueles que já leram o Apêndice sobre a
classe bitmap, talvez fique mais claro o que eu falarei hoje.
Vamos começar pela Classe Sprite. A Classe Sprite é
responsável diretamente pelo Tileset e pelos Chars(herói e eventos).
Nela, carregamos uma imagem para ser usada e abusada. Observe esta linha
da Classe Scene_Title:
1 - A Classe Sprite é declarada
2 - É definida uma imagem para ela através da Função RPG::Cache
É assim que se tem uma imagem no título do game. o Sprite é uma classe
variante, que possui muitas funções de grande importancia, como no caso
das x e y, que definem a posição da imagem.
Você ainda possui aquele exemplo feito nas lições anteriores?
abra-o, vá no editor de Scritps, e vá na sessão Scene_Title, e procure a
linha 36(a do nosso exemplo).
Logo abaixo da 37 escreva assim:
@sprite.x += 250
Rode o Game. O fundo está deslocado, essa era a intenção. Mas observe
que ficou um fundo preto na tela. O Sprite comporta apenas o tamanho da
imagem. Podemos mexer nele de forma a ocultar o espaço vazio...
Logo abaixo da x escreva assim:
@sprite.zoom_x = 2.5
Rode o Game. A imagem ficou esticada. Essas são apenas 2 das funções
da Classe Sprite, eu farei uma apêndice sobre ela detalhando-a.
Mas a imagem do title neste caso é uma imagem fixa, e se eu quisesse ela móvel ???
Bem, podemos umsa uma função da classe Sprite que serve basicamente para isso, mover a imagem dentro do conteiner. CONTEINER??
Sim, na declaração @sprite = Sprite.new você criou um
conteiner do tipo Sprite para mostrar a figura. Há mais tipos de
conteiners de imagem, que serão mostrados depois. Usando o função @sprite.ox ou ]@sprite.oy
podemos mover a imagem dentro do conteiner. Quando usamos x e y movemos
o conteiner, como é o caso das janelas. Procure o procedimento update da classe Scene_Title. Dentro dele escreva assim:
@sprite.ox += 1
Rode o game. A imagem vai andar até sumir. Ela some porque a imagem sai do campo da tela, mas ela continua lá.
Quando precisamos de imagens que andem, usamos uma outra classe, A classe Plane.
A Classe Plane nos permite que uma imagem se mova e, quando esta passa
do limite do conteiner, ela é repetida, dando a impressão de
continuação. Vamos fazer um teste? Vá na linha 36 e troque
@sprite = Sprite.new por @sprite = Plane.new.
Rode o Game. O fundo acaba e começa novamente. Isto é usado nos
panoramas, porque o mapa pode ser maior que a tela, e nos fogs, que
possuem movimento. Se você observou já um fog em funcionamento, você
nunca sabe aonde é a "Emenda" por que é uma imagem feita para isso. Para
que você entenda melhor esta diferença(que eu acho que você já
entendeu) vamos fazer um title animado. Remova todas as linha que você
colocou e conserte a linha 36. Baixe estas imagens e importe para seu
projeto na pasta title:
Agora mãos á massa:
No lugar da linha 36 e 37, escreva assim:
Rode o Game. Bonito não? Agora vem o legal. Vá novamente no procedimento update e escreva assim:
Rode o Game. LEGAL !!
Mas o que fizemos ??
Declaramos duas imagens como Plane, e no procedimento update, onde o scene mantém a atualização da tela, colocamos:
@sprite2.ox -= 1 A cada atualização da tela, diminui 1 na ox.
@sprite3.ox += 2 A cada atualização da tela, aumenta 2 na ox.
Se variar estes números, a velocidade é maior, e se por 0(zero) ele(o plane) para.
Scene?? atualização de tela?? Bem, acho que não dá mais, vamos ter que entrar nessa parte... Scenes.
CONCLUSÃO :
Hoje vimos um pouco(bem pouco) sobre Sprites e Planes. Vou ter q
fazer aulas menores, porque não dá mais só explicar. Se você não
praticar, difícilmente vai entender. Nossa pincelada nesse assunto foi
pequena, eu pretendo voltar e falar mais. A intenção também foi de
quebrar o parâmetro janela que tínhamos entrado.
Eu devo falar mais um pouco sobre janelas, Sprites e Planes, antes
de entrarmos em Scenes. Deverei postar duas apêndices, uma falando da
classe Sprite e outra da Classe Plane.
Por hoje é só.
Até a próxima e obrigado.
e-mails com agradecimentos e perguntas. Isso é de grande valor para mim,
pois eu tenho aprendido tanto quanto tenho ensinado.
Na última lição faláva-mos de janelas. Hoje falaremos de Imagens.
Todos nós sabemos que é impossível fazer um game sem imagens. O próprio
Tileset, os chars, os panoramas... até mesmo o texto que você escreve
como diálogo é uma imagem. Para aqueles que já leram o Apêndice sobre a
classe bitmap, talvez fique mais claro o que eu falarei hoje.
Vamos começar pela Classe Sprite. A Classe Sprite é
responsável diretamente pelo Tileset e pelos Chars(herói e eventos).
Nela, carregamos uma imagem para ser usada e abusada. Observe esta linha
da Classe Scene_Title:
1 - A Classe Sprite é declarada
2 - É definida uma imagem para ela através da Função RPG::Cache
É assim que se tem uma imagem no título do game. o Sprite é uma classe
variante, que possui muitas funções de grande importancia, como no caso
das x e y, que definem a posição da imagem.
Você ainda possui aquele exemplo feito nas lições anteriores?
abra-o, vá no editor de Scritps, e vá na sessão Scene_Title, e procure a
linha 36(a do nosso exemplo).
Logo abaixo da 37 escreva assim:
@sprite.x += 250
Rode o Game. O fundo está deslocado, essa era a intenção. Mas observe
que ficou um fundo preto na tela. O Sprite comporta apenas o tamanho da
imagem. Podemos mexer nele de forma a ocultar o espaço vazio...
Logo abaixo da x escreva assim:
@sprite.zoom_x = 2.5
Rode o Game. A imagem ficou esticada. Essas são apenas 2 das funções
da Classe Sprite, eu farei uma apêndice sobre ela detalhando-a.
Mas a imagem do title neste caso é uma imagem fixa, e se eu quisesse ela móvel ???
Bem, podemos umsa uma função da classe Sprite que serve basicamente para isso, mover a imagem dentro do conteiner. CONTEINER??
Sim, na declaração @sprite = Sprite.new você criou um
conteiner do tipo Sprite para mostrar a figura. Há mais tipos de
conteiners de imagem, que serão mostrados depois. Usando o função @sprite.ox ou ]@sprite.oy
podemos mover a imagem dentro do conteiner. Quando usamos x e y movemos
o conteiner, como é o caso das janelas. Procure o procedimento update da classe Scene_Title. Dentro dele escreva assim:
@sprite.ox += 1
Rode o game. A imagem vai andar até sumir. Ela some porque a imagem sai do campo da tela, mas ela continua lá.
Quando precisamos de imagens que andem, usamos uma outra classe, A classe Plane.
A Classe Plane nos permite que uma imagem se mova e, quando esta passa
do limite do conteiner, ela é repetida, dando a impressão de
continuação. Vamos fazer um teste? Vá na linha 36 e troque
@sprite = Sprite.new por @sprite = Plane.new.
Rode o Game. O fundo acaba e começa novamente. Isto é usado nos
panoramas, porque o mapa pode ser maior que a tela, e nos fogs, que
possuem movimento. Se você observou já um fog em funcionamento, você
nunca sabe aonde é a "Emenda" por que é uma imagem feita para isso. Para
que você entenda melhor esta diferença(que eu acho que você já
entendeu) vamos fazer um title animado. Remova todas as linha que você
colocou e conserte a linha 36. Baixe estas imagens e importe para seu
projeto na pasta title:
Agora mãos á massa:
No lugar da linha 36 e 37, escreva assim:
- Código:
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title("Morning1")
@sprite2 = Plane.new
@sprite2.bitmap = RPG::Cache.title("Cloud01")
@sprite3 = Plane.new
@sprite3.bitmap = RPG::Cache.title("Cloud02")
Rode o Game. Bonito não? Agora vem o legal. Vá novamente no procedimento update e escreva assim:
- Código:
@sprite2.ox -= 1
@sprite3.ox += 2
Rode o Game. LEGAL !!
Mas o que fizemos ??
Declaramos duas imagens como Plane, e no procedimento update, onde o scene mantém a atualização da tela, colocamos:
@sprite2.ox -= 1 A cada atualização da tela, diminui 1 na ox.
@sprite3.ox += 2 A cada atualização da tela, aumenta 2 na ox.
Se variar estes números, a velocidade é maior, e se por 0(zero) ele(o plane) para.
Scene?? atualização de tela?? Bem, acho que não dá mais, vamos ter que entrar nessa parte... Scenes.
CONCLUSÃO :
Hoje vimos um pouco(bem pouco) sobre Sprites e Planes. Vou ter q
fazer aulas menores, porque não dá mais só explicar. Se você não
praticar, difícilmente vai entender. Nossa pincelada nesse assunto foi
pequena, eu pretendo voltar e falar mais. A intenção também foi de
quebrar o parâmetro janela que tínhamos entrado.
Eu devo falar mais um pouco sobre janelas, Sprites e Planes, antes
de entrarmos em Scenes. Deverei postar duas apêndices, uma falando da
classe Sprite e outra da Classe Plane.
Por hoje é só.
Até a próxima e obrigado.