Fazer Obj se mexer mudando o Sprite

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Fazer Obj se mexer mudando o Sprite

Mensagem por Leon Hoshigaki em Sex 27 Ago 2010, 15:15

Oi galerinha...Sou eu dinovo!

Bom,minha duvida é,como faço pra,por exemplo,qd eu pressiono a tecla esquerda,o personagem anda um passo a esquerda,e muda o sprite?
Eu ja tentei de um jeito,so q ele fika se mexendo sozinho(ñ mudando de lugar,mas se mexendo no lugar q ele tah),e qd eu ando ele para numa posição fixa e muda de lugar...Q comandos eu uso?

Leon Hoshigaki

Número de Mensagens : 6
Data de inscrição : 22/08/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Fazer Obj se mexer mudando o Sprite

Mensagem por Luan Maia em Sex 27 Ago 2010, 15:25

Existe muitos tópicos sobre isso, use o busca! Mas eu recomendo à você ler os tutoriais do RedDragon. Então jogue a preguiça pro lado e leia. xD
Tutoriais do RedDragon

flw

Luan Maia

Ranking : Sem avaliações
Número de Mensagens : 399
Idade : 20
Data de inscrição : 01/07/2010
Notas recebidas : D+C+C+D
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://blogluanmaia.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Fazer Obj se mexer mudando o Sprite

Mensagem por Assassino em Qua 01 Set 2010, 21:36

Use este simples Tuto de AlexFc para as Sprites:
AlexFc escreveu:
Alex FC escreveu:
Aula 15 - Introdução a jogos - Sprites


Bom, nesta aula ensinarei as funções básicas do editor e configurador de sprites.

Para criar uma sprite clique no ícone com um pacman vermelho desenhado.

Depois de ter clicado a seguinte janela será aberta:




Este é o painel de configuração da sprite.

Nomeando uma sprite:


O nome da sprite criada é "sprite0". Mude o nome para que ele se identifique com a imagem. Coloque "pac_dir", quanto menor o nome da sprite melhor. Nesse fiz uma abreviação de "pacman_direita". Não use acentos ou letras maiúsculas, isso pode fazer o jogo não funcionar.

Abrindo uma imagem:

Para abrir uma imagem que esteja no seu computador clique em "Load Sprite".

Salve a imagem abaixo e abra ela:



Informações da imagem logo abaixo do botão "Load Sprite":


Width: Largura em pixels.

Height:
Altura em pixels.

Number of subimages: Caso a imagem seja animada (.gif) aqui será mostrado o numero de imagens que forma a animação.

Depois de feito, vamos configura-la:

Precise collsion checking: marque esta opção quando a sprite é um personagem ou objeto que não tem forma de quadrado.

Smooth Edges: Borrar cantos da sprites.

Preload texture: carregar sprite na memória logo que o jogo iniciar.

Origin:

x: x inicial da sprite.
y: y inicial da sprite.

center: centralizar os dois pontos.

Bounding Box:

Deixe em automatic, raramente você vai usar as outras opções.

Transparent: indica se alguma cor da sprite deve ser considerada como sendo transparente. O fundo é determinada pela cor do primeiro pixel à esquerda na inferior da imagem. Portanto, certifique-se que nenhum pixel da imagem tem essa cor.

Botão "Edit Sprite": Abrirá um editor de imagens.

Com o editor você concerteza vai se dar bem, não precisa de explicações detelhadas.

Bom, agora que aprendemos a importar imagens para nosso jogo, vamos aprender a manipula-las ao nosso gosto. Baixe a engine a baixo:

http://www.fileden.com/files/2009/5/31/2462226/Aula_15_sprites.rar

Execute ela, veremos um simples movimento em quatro direções. Então para tal tarefa precisaríamos de 4 sprites ( direita, esquerda, baixo e cima), mas raciocine um pouco, a sprite direita e esquerda são as mesmas, só que invertidas. Então usaremos somente 1 sprite para a esquerda e para a direita, o GM tem uma variável que chama-se image_xscale que nos ajudará nessa tarefa de inverter a imagem.

OBS: Usando a variável image_xscale a imagem inverte-se sobre ponto inicial do x, então centralizei todos eles em todas as sprites. Tente deixar em 0, você verá que ao virar a direira ou esquerda parece que ele da um salto rápido para frente. A imagem abaixo explica os dois modos ( x centralizado e x não centralizado):



Você deve ter percebido que se não centralizarmos o x da imagem, a imagem invertida sai da posição atual. Então centralizamos todos os pontos x em todas as sprites para não haver esse bug. Perceba também que todas tem as mesmas medidas, isso também é para evitar possíveis bugs.

Agora vamos ver todas as variaveis de imagem que usaremos na movimentação do mario:

sprite_index: controla a sprite atual do objeto.

image_index: controla as subimagens.

image_speed: controla a velocidade da animação.

image_xscale: é a escala horizontal da imagem, essa variável que usaremos para inverter a imagem.

Agora va ao objeto mario no evento step, e abra o código, vamos ver a primeira parte:

Código:
//direita
if keyboard_check(vk_right)//se a tecla direita é pressionada
{
sprite_index=mario_hor//muda para sprite horizontal do mario
image_xscale=1//escala horizontal é normal
if place_free(x+4,y){x+=4}
}

Aqui você ve a variável image_xscale com valor 1. Isso significa que ela não vai mudar, pois afinal temos o mario virado para direita, então não mudamos a escala.

Agora a segunda parte:

Código:
//esquerda
else if keyboard_check(vk_left)//se a tecla esquerda é pressionada
{
sprite_index=mario_hor//muda para sprite horizontal do mario
image_xscale=-1//escala horizontal é invertida, logo se o mario estava virado pra direita vira para esquerda
if place_free(x-4,y){x-=4}
}

Continuamos a usar a mesma sprite, só que agora o valor é invertido -1. Isso faz com que a sprite inverta. Você pode utilizar qualquer valor nessa variável, mas lembre-se que a cada unidade o tamanho da sprite dobra. Se tivéssemos colocado -2, a sprite seria esticada horizontalmente e teria o dobro do tamanho anterior.

Nas outras partes do código, sempre utilizei image_xscale=1, para a sprite retornar ao normal, pois não precisamos inverter as outras sprites.

Para entender melhor essa e outras variáveis que comandam a imagem, fiz uma aula executável. Baixe ela no link a seguir:

http://www.fileden.com/files/2009/5/31/2462226/Aula_15_sprites.rar

Screenshot da aula:



Mas não devemos esquecer de uma coisa: Usar masks em nossos personagens. Mask é como se fosse a sprite original de seu objeto, mas ela não é vista. Geralmente usamos masks de forma retangular, pois a colisão com paredes fica muito melhor, sem travar nelas. Usamos uma mask em nosso mario, para ele não enroscar na parede ela tem o nome "mask_mario", veja que ela é retangular e tem o mesmo tamanho das sprites do mario. Ela também tem o x centralizado, pois é como se essa fosse a sprite permanente do mario, então na verdade ele é um retângulo com desenhos de mario. Retire a mask do mario e tente "deslizar" nas paredes, concerteza você ficará enroscado na parede, por isso o uso de masks é tão importante. Olhe este exemplo:



Enfim mais uma aula chega ao fim. Espero vocês na próxima. Vlw?

Próxima aula: Configurando como seu jogo será executado.

FLWS!

Agora veja uns comandos básicos=
Código:
if keyboard_check( ord( 'W' ) )y-=5
if keyboard_check( ord( 'S' ) )y+=5
if keyboard_check( ord( 'A' ) )x-=5
if keyboard_check( ord( 'D' ) )x+=5 //y=altura e x=lados -> y-=5,ou seja, 5 pixels acima
- Qualquer Dúvida só falar! pirat

Assassino

Número de Mensagens : 390
Idade : 20
Data de inscrição : 13/08/2010
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://rockstarfamilies.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Fazer Obj se mexer mudando o Sprite

Mensagem por Conteúdo patrocinado Hoje à(s) 08:37


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum