Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

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

Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por andersonrdias em Ter 08 Jun 2010, 14:09

Estou criando um jogo e gostaria de saber como criar uma forma de detectar com precisão aonde um dano (tiro por exemplo) atingiu uma sprite. Se existe uma forma de dividir uma sprite em partes, e como isso, saber qual parte foi atingida.

Exemplo de aplicação: Um personagem é atingido no braço, então eu substituiria a sprite do personagem por outro parecido, só que com o braço ferido. Mas isso só seria interessante se o sistema identificasse que foi o braço que foi atingindo, e não a perna ou cabeça.

Tenho pouca experiência e é a primeira vez que peço a ajuda aqui. Por isso me desculpem se estiver postando no lugar errado ou algo assim. Alias, pesquisei primeiro e não encontrei nenhum tópico parecido.

andersonrdias

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

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por Cainã em Ter 08 Jun 2010, 14:47

Olá e seja bem-vindo ao fórum.

Você pode criar um objeto principal (por exemplo o corpo) e criar outros objetos para os membros (mãos, pernas, cabeça).

Em seguida você faz os objetos seguirem o objeto principal em determinadas posições. O sistema de ações e eventos pode ser usado bem facilmente.

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por andersonrdias em Ter 08 Jun 2010, 16:16

Obrigado pela resposta.Valeu mesmo.
Bom, só fica uma duvida, alguém sabe como fazer um objeto principal e outros secundários sem movimentarem em sincronia? Fico imaginando se não ficara meio que desajustado sprites diferentes agirem como se fosse uma única sprite. Tipo, sprites braço, perna e cabeça agirem em sincronia com a sprite tronco.
Ou, se existe alguma forma de criar uma sprite invisível que fique exatamente sobre estes pontos. Se elas ficarem invisíveis, creio que o conjunto não ficara correndo o risco de ficar desconjuntado e servira ao mesmo propósito.

andersonrdias

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

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por giosepeluiz em Ter 08 Jun 2010, 16:26

andersonrdias escreveu:Obrigado pela resposta.Valeu mesmo.
Bom, só fica uma duvida, alguém sabe como fazer um objeto principal e outros secundários sem movimentarem em sincronia? Fico imaginando se não ficara meio que desajustado sprites diferentes agirem como se fosse uma única sprite. Tipo, sprites braço, perna e cabeça agirem em sincronia com a sprite tronco.
Ou, se existe alguma forma de criar uma sprite invisível que fique exatamente sobre estes pontos. Se elas ficarem invisíveis, creio que o conjunto não ficara correndo o risco de ficar desconjuntado e servira ao mesmo propósito.

A sprite pode ser uma inteira, mas com objetos invisíveis seguindo nos braços, pernas, cabeça, etc... (basta desmarcar "visible" no obj)

giosepeluiz

Número de Mensagens : 110
Idade : 26
Data de inscrição : 21/05/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.orkut.com.br/Main#Profile?uid=12612551030963156921

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por Cainã em Ter 08 Jun 2010, 16:42

Realmente este método seria mais eficiente, usar objetos invisíveis para as partes do corpo. Do jeito que eu tinha falado seria necessário coordenar os movimentos das partes para formar o movimento, desse não, basta apenas utilizar objetos de controle.

Cainã

Número de Mensagens : 1335
Idade : 22
Data de inscrição : 07/03/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://cai.na.tl/

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por Denis Lemos em Ter 08 Jun 2010, 16:48

Na verdade, você faz um objeto para o corpo do perssonagem, e outro objeto para o braço do perssonagem:

E no STEP do braço você coloca um código para o braço seguir o corpo em tal posição do corpo:
Ex:
Código:

x=obj_corpo.x+10
y=obj_corpo.y+10

Depois é só ir regulado onde está o número 10, até que fique na posição desejada, se você fizer as sprites certinho não ficará desconjuntado !

Aqui tem um video de um jogo que estou fazendo desse modo, os 2 braços do player são 2 objetos diferentes, que faço seguir o corpo onde ele for !
http://www.gamemakerbrasil.com/galeria-de-projetos-f5/dino-land-2-projeto-pausado-por-enquanto-t8010.htm?highlight=dino+land

Mas para fazer isso, não é muito difícil, mas tem que se saber pelo menos o básico do GM, se você é iniciante, começe com algo mais simples, senão não vai conseguir entender nossa explicação !

Vou fazer uma uma engine com o exemplo básico para os mesmbros que querem fazer isso, pois não vi nenhuma do tipo no fórum, e notei que muita gente quer aprender !!!
Então espere, que depois posto ela na seção de engines !

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por giosepeluiz em Ter 08 Jun 2010, 17:04

Denis Lemos escreveu:Na verdade, você faz um objeto para o corpo do perssonagem, e outro objeto para o braço do perssonagem:

E no STEP do braço você coloca um código para o braço seguir o corpo em tal posição do corpo:
Ex:
Código:

x=obj_corpo.x+10
y=obj_corpo.y+10

Depois é só ir regulado onde está o número 10, até que fique na posição desejada, se você fizer as sprites certinho não ficará desconjuntado !

Aqui tem um video de um jogo que estou fazendo desse modo, os 2 braços do player são 2 objetos diferentes, que faço seguir o corpo onde ele for !
http://www.gamemakerbrasil.com/galeria-de-projetos-f5/dino-land-2-projeto-pausado-por-enquanto-t8010.htm?highlight=dino+land

Mas para fazer isso, não é muito difícil, mas tem que se saber pelo menos o básico do GM, se você é iniciante, começe com algo mais simples, senão não vai conseguir entender nossa explicação !

Vou fazer uma uma engine com o exemplo básico para os mesmbros que querem fazer isso, pois não vi nenhuma do tipo no fórum, e notei que muita gente quer aprender !!!
Então espere, que depois posto ela na seção de engines !

O mais facil para iniciantes é usar objetos invisiveis...
Mas esse método não está errado ;)

giosepeluiz

Número de Mensagens : 110
Idade : 26
Data de inscrição : 21/05/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.orkut.com.br/Main#Profile?uid=12612551030963156921

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por Denis Lemos em Ter 08 Jun 2010, 17:35

Acho que dá na mesma, pois deixar os objetos invisíveis e depois visíveis na hora que o player estiver armado por exemplo, teria que ter uma variável para controlar se ele estará armado ounão, e por esta variável dizer para o objeto com o braço armado ficar invisível ou não, então por esta mesma variável em vez de dizer para ele ficar invisível ou visível, só setar uma sprite do braço desermado, se for false, ou uma sprite do braço armado se for true !

Pois as variáveis de controle teriam que ser usadas da mesma maneira para dizer se os objetos serão visíveis ou invisíveis, sendo que por elas pode-se apenas trocar as sprites do objeto braço, usando apenas um objeto para isso, em vez de criar varios objetos braços para deixá-los visíveis na hora certa !

Denis Lemos

Número de Mensagens : 938
Idade : 28
Data de inscrição : 17/05/2009
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por victor_aco em Ter 08 Jun 2010, 17:40

Quanto menos sprite o jogo tiver, mais leve e melhor fica... Você pode usar a função de colisão com o retângulo. Mas q isso? Você cria um retângulo invisível tendo como referencia a origem do player. Assim você pode criar vários retangulos pelo sprtie. O código é assim:
Código:
if collision_rectangle(x+31,y,x+35,y+32,obj_inimigo,true,0){health-=5}

Para saber mais sobre essa função da uma olhada nas aulas do Alex FC: http://www.gamemakerbrasil.com/game-maker-f36/tutorial-de-colisoes-parte-1-t3562.htm

victor_aco

Número de Mensagens : 666
Idade : 21
Data de inscrição : 25/03/2010
Reputação : 2
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por giosepeluiz em Ter 08 Jun 2010, 17:44

Denis Lemos escreveu:Acho que dá na mesma, pois deixar os objetos invisíveis e depois visíveis na hora que o player estiver armado por exemplo, teria que ter uma variável para controlar se ele estará armado ounão, e por esta variável dizer para o objeto com o braço armado ficar invisível ou não, então por esta mesma variável em vez de dizer para ele ficar invisível ou visível, só setar uma sprite do braço desermado, se for false, ou uma sprite do braço armado se for true !

Pois as variáveis de controle teriam que ser usadas da mesma maneira para dizer se os objetos serão visíveis ou invisíveis, sendo que por elas pode-se apenas trocar as sprites do objeto braço, usando apenas um objeto para isso, em vez de criar varios objetos braços para deixá-los visíveis na hora certa !

Sim, isso é verdade... Mas alinhar objetos nas sprites é mais fácil do que alinhar sprites entre si...

victor_bh escreveu:uanto menos sprite o jogo tiver, mais leve e melhor fica... Você pode usar a função de colisão com o retângulo. Mas q isso? Você cria um retângulo invisível tendo como referencia a origem do player. Assim você pode criar vários retangulos pelo sprtie. O código é assim:
CÓDIGO:
if collision_rectangle(x+31,y,x+35,y+32,obj_inimigo,true,0){health-=5}


Para saber mais sobre essa função da uma olhada nas aulas do Alex FC: http://www.gamemakerbrasil.com/game-maker-f36/tutorial-de-colisoes-parte-1-t3562.htm

Perfeito... Vamos melhorando mais e mais o código...
Valeu Victor ;)
Não basta o jogo ser bonito, tem que ser leve tbm...

giosepeluiz

Número de Mensagens : 110
Idade : 26
Data de inscrição : 21/05/2010
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.orkut.com.br/Main#Profile?uid=12612551030963156921

Voltar ao Topo Ir em baixo

Re: Tem como dividir uma sprite em partes, e com isso detectar qual parte foi atingida?

Mensagem por Conteúdo patrocinado Hoje à(s) 09:39


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