Criando Água ao estilo Minecraft
Estilosa
Estilosa
Detalhes
Criador: Tedi
Idéia Base: Minecraft e Terraria
Versão do GM: GM Lite e Pro
Dificuldade: Depende
Introdução
O que vai ser ensinado:
A idéia aqui é fazer um sistema de água como a do Minecraft, na qual a água escorre por objetos sólidos, mas quando não há nada a baixo, ou aos lados, ela cai, o sistema funcionou perfeitamente aqui no PC, só ocorreu um pequeno lag quando muitos objetos água se criaram.... {OPS, LAG CORRIGIDO}
Imagens:
O que realmente acontece aqui:
A idéia é:
-Checar se existe algum objeto abaixo do objeto água
Se não existir:
-Criar um objeto abaixo
Se Existir:
-Checar se existe algum objeto ao lado esquerdo
Se não existir
-Criar água ao lado esquerdo
-Checar se existe algum objeto ao lado direito
Se não existir
-Criar água ao lado direito
Let it rip:
Bem começamos criando as sprites:
Sprites
Crie 2 sprites:
spr_solido
spr_agua
Pronto, isso é bem simples...
Objetos
Crie 2 objetos
obj_solido
obj_agua
No obj_solido, apenas marque-o como Solid e coloque a sprite spr_solido
No obj_agua, coloque a sprite spr_agua
E no Create Event coloque o seguinte código:
(o codigo esta um pouco grande, mas é necessário para não ocorrer lag)
Explicação:
Aqui nós criamos 8 variáveis para nos auxiliar mais tarde.
place_meeting: Retorna True(verdadeiro) se houver um objeto na posição x e y indicada, ou False se não houver
Bem, agora vamos fazer a mágica da coisa, vamos fazer o script para checar espaços livres e criar objetos, mas, não será possível colocar no create event, pois:
O create event executa seus códigos ao iniciar o jogo, e se colocarmos nele, o jogo vai travar, pois estará criando e criando e criando objetos sem parar...
Por isso vamos fazer isso em um evento alarm (até fará o efeito parecido com o próprio minecraft, pois ele demora um pouco para criar a água (principalmente a lava)
Então, no create event ainda, coloque:
Explicação:
Alarm[0] - chama o evento alarm 0
Room_speed - é equivalente a 1 segundo (padrão são 30 frames)
Agora vamos a mágica da coisa, no evento Alarm 0 coloque:
Explicação no próprio código
Pronto, agora é só mapear sua room e ver o resultado =D
VOCEIS: PERAAEEEEEE, isso ta lagado pra caramba!!!!
TEDI: Claro (é porque eu sou um troll mesmo) É porque a agua, se sair da room, continua a se criar, lagando tudo ;D
Pra isso vc só precisa fazer:
Pronto, agora sim, mapeie a room, de os créditos a mim kkk
DUVIDAS, COMO SEMPRE, POSTE AQUI OK?!
Flws
Criador: Tedi
Idéia Base: Minecraft e Terraria
Versão do GM: GM Lite e Pro
Dificuldade: Depende
Introdução
O que vai ser ensinado:
A idéia aqui é fazer um sistema de água como a do Minecraft, na qual a água escorre por objetos sólidos, mas quando não há nada a baixo, ou aos lados, ela cai, o sistema funcionou perfeitamente aqui no PC, só ocorreu um pequeno lag quando muitos objetos água se criaram.... {OPS, LAG CORRIGIDO}
Imagens:
O que realmente acontece aqui:
A idéia é:
-Checar se existe algum objeto abaixo do objeto água
Se não existir:
-Criar um objeto abaixo
Se Existir:
-Checar se existe algum objeto ao lado esquerdo
Se não existir
-Criar água ao lado esquerdo
-Checar se existe algum objeto ao lado direito
Se não existir
-Criar água ao lado direito
Let it rip:
Bem começamos criando as sprites:
Sprites
Crie 2 sprites:
spr_solido
spr_agua
Pronto, isso é bem simples...
Objetos
Crie 2 objetos
obj_solido
obj_agua
No obj_solido, apenas marque-o como Solid e coloque a sprite spr_solido
No obj_agua, coloque a sprite spr_agua
E no Create Event coloque o seguinte código:
(o codigo esta um pouco grande, mas é necessário para não ocorrer lag)
- Código:
cima_solido=place_meeting(x,y-1,ob_solido)
baixo_solido=place_meeting(x,y+1,ob_solido)
esquerda_solido=place_meeting(x-1,y,ob_solido)
direita_solido=place_meeting(x+1,y,ob_solido)
cima_agua=place_meeting(x,y-1,ob_agua)
baixo_agua=place_meeting(x,y+1,ob_agua)
esquerda_agua=place_meeting(x-1,y,ob_agua)
direita_agua=place_meeting(x+1,y,ob_agua)
Explicação:
Aqui nós criamos 8 variáveis para nos auxiliar mais tarde.
place_meeting: Retorna True(verdadeiro) se houver um objeto na posição x e y indicada, ou False se não houver
Bem, agora vamos fazer a mágica da coisa, vamos fazer o script para checar espaços livres e criar objetos, mas, não será possível colocar no create event, pois:
O create event executa seus códigos ao iniciar o jogo, e se colocarmos nele, o jogo vai travar, pois estará criando e criando e criando objetos sem parar...
Por isso vamos fazer isso em um evento alarm (até fará o efeito parecido com o próprio minecraft, pois ele demora um pouco para criar a água (principalmente a lava)
Então, no create event ainda, coloque:
- Código:
alarm[0]+=room_speed
Explicação:
Alarm[0] - chama o evento alarm 0
Room_speed - é equivalente a 1 segundo (padrão são 30 frames)
Agora vamos a mágica da coisa, no evento Alarm 0 coloque:
- Código:
if baixo_solido=false and baixo_agua=false //Se não houver nenhum objeto abaixo
{
instance_create(x,y+32,ob_agua) //Cria um objeto agua
}
else
{
if esquerda_solido=false and esquerda_agua=false //Se não houver nenhum objeto a esquerda
{
instance_create(x-32,y,ob_agua) //Cria um objeto agua
}
if direita_solido=false and direita_agua=false //Se não houver nenhum objeto a direita
{
instance_create(x+32,y,ob_agua) //Cria um objeto agua
}
}
Explicação no próprio código
Pronto, agora é só mapear sua room e ver o resultado =D
VOCEIS: PERAAEEEEEE, isso ta lagado pra caramba!!!!
TEDI: Claro (é porque eu sou um troll mesmo) É porque a agua, se sair da room, continua a se criar, lagando tudo ;D
Pra isso vc só precisa fazer:
Pronto, agora sim, mapeie a room, de os créditos a mim kkk
DUVIDAS, COMO SEMPRE, POSTE AQUI OK?!
Flws
Eu vi esse tutorial na GMBR, fiz, e ficou muito bom, nota 10 :D
ResponderExcluir