Unir sprites

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

Idéia Unir sprites

Mensagem por petterwin em Qui 16 Jan 2014, 16:02

Bom tarde, meu primeiro post!
No meu primeiro projeto, o player principal tem como objetivo andar para os lados direito e esquerdo e pular e atirar em relacão as cordenadas x, y do mouse. A minha duvida é, como fazer o corpo andar e a cabeça olhar para essas cordenadas do mouse? A minha ideia era editar o sprite tirando a cabeca e criar um novo sprite, unindo-o ao corpo, formando o player, mas não sei como unir os dois sprites.
Obrigado!

petterwin

Número de Mensagens : 5
Data de inscrição : 16/01/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por Lighter em Qui 16 Jan 2014, 17:03

Faça:

obj_cabeca
obj_corpo

*PARA UNIR AS SPRITES*

No evento create do corpo coloque esse código:
Código:

instance_create(x,y,obj_cabeca) //isso fara o objeto cabeça ser criado no x e y do objeto corpo.
global.esquerda = false //variavel para ter certeza que ele esta andando para esquerda
global.direita = false //variavel para ter certeza que ele esta andando para direito

No evento step do obj_corpo coloque esse código:
Código:

if keyboard_check(vk_left) then //caso aperte <-
 x-=3//ele anda para a esquerda (3p)
 global.esquerda = true //ele anda para esquerda

else
 global.esquerda = false //se não ele nao anda

if keyboard_check(vk_right) then //caso aperte ->
 x+=3 // ele anda 3 pixels para a direita //ele anda para direita
 global.direita = true

else
 global.direita = false//se não ele não anda

No evento step do obj_cabeca coloque esse código:

Código:

x = obj_corpo.x // esse código fara o obj_cabeca andar de acordo com o obj_corpo
y = obj_corpo.y

*PARA A CABEÇA OLHAR PARA O ANGULO DO MOUSE*

No step do obj_cabeca acrescente mais esse código
Código:

image_angle = point_direction(x,y,mouse_x,mouse_y) //obj_cabeca olhar para o angulo do mouse

*PARA O PERSONAGEM OLHAR PARA DIREÇÃO QUE ESTA ANDANDO*

No step do obj_cabeca e do obj_corpo coloque esse código
Código:

if global.direita = true then //caso ele esteje andando para a direita
 image_xscale = 1 //o objeto estara virado para direita

else //se não

if global.esquerda = true then // ele ira vira para esquerda
 image_xscale = -1//o objeto estara virado para esquerda

Lighter

Ranking : Sem avaliações
Número de Mensagens : 307
Idade : 18
Data de inscrição : 16/01/2014
Reputação : 29
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://google.com

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por petterwin em Qui 16 Jan 2014, 17:33

Muito obrigado sprite. Me ajudou bastante!


Última edição por petterwin em Qui 16 Jan 2014, 19:21, editado 2 vez(es)

petterwin

Número de Mensagens : 5
Data de inscrição : 16/01/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por lucas.limeira.92 em Qui 16 Jan 2014, 19:16

se fizer só isso, a cabeça vai ficar atrasada.
a sprite do objeto cabeça é desenhada no x e y do objeto cabeça, que fica seguindo o objeto corpo, isso acontece por default. se colocar o evento draw no objeto cabeça, o gm vai parar de desenhar a cabeça automaticamente. você vai precisar mandar ele desenhar a cabeça no evento draw do objeto cabeça. parece inútil, mas assim você vai poder mudar onde e como a sprite vai ser desenhada. é só colocar draw_sprite(sprite_index,image_index,obj_corpo.x,obj_corpo.y) no evento draw, que a sprite do objeto cabeça vai ser desenhada no x e y do objeto corpo, ao invez de ser desenhada no objeto que está seguindo ele, e isso acaba com o delay.

lucas.limeira.92

Número de Mensagens : 64
Data de inscrição : 01/05/2013
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por Lighter em Qui 16 Jan 2014, 19:21

lucas.limeira.92 escreveu:se fizer só isso, a cabeça vai ficar atrasada.
a sprite do objeto cabeça é desenhada no x e y do objeto cabeça, que fica seguindo o objeto corpo, isso acontece por default. se colocar o evento draw no objeto cabeça, o gm vai parar de desenhar a cabeça automaticamente. você vai precisar mandar ele desenhar a cabeça no evento draw do objeto cabeça. parece inútil, mas assim você vai poder mudar onde e como a sprite vai ser desenhada. é só colocar draw_sprite(sprite_index,image_index,obj_corpo.x,obj_corpo.y) no evento draw, que a sprite do objeto cabeça vai ser desenhada no x e y do objeto corpo, ao invez de ser desenhada no objeto que está seguindo ele, e isso acaba com o delay.

Legal eu não sabia disso, vou arrumar meu code! vlw!

Lighter

Ranking : Sem avaliações
Número de Mensagens : 307
Idade : 18
Data de inscrição : 16/01/2014
Reputação : 29
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://google.com

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por petterwin em Qui 16 Jan 2014, 19:24

Obrigado,
Tem como eu limitar a altura do movimento da cabeca, porque ela ta rodando 360 graus? Exemplo, se a cabeca olha para cima demais, o mouse_x e o mouse_y desabilita?
Obrigado

petterwin

Número de Mensagens : 5
Data de inscrição : 16/01/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por Lighter em Qui 16 Jan 2014, 19:33

altere o evento step da cabeça, coloque um limite de angulo

Código:

if image_angle<=90 and image_angle>=270 then
 image_angle = point_direction(x,y,mouse_x,mouse_y) //obj_cabeca olhar para o angulo do mouse

Ajudei? vc pode me ajudar tbm, apenas click: http://epicfreeprizes.com/?ref=5444911

Lighter

Ranking : Sem avaliações
Número de Mensagens : 307
Idade : 18
Data de inscrição : 16/01/2014
Reputação : 29
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://google.com

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por petterwin em Qui 16 Jan 2014, 19:40

Sprite escreveu:altere o evento step da cabeça, coloque um limite de angulo

Código:

if image_angle<=90 and image_angle>=270 then
 image_angle = point_direction(x,y,mouse_x,mouse_y) //obj_cabeca olhar para o angulo do mouse

Ajudei? vc pode me ajudar tbm, apenas click: http://epicfreeprizes.com/?ref=5444911

Olá, usando esse codigo mesmo mudando os angulos a cabeca fica travada, nao movimenta de acordo com o mouse, mas ela vira para os lados. Obs: Ja cliquei no link!  Laughing 

petterwin

Número de Mensagens : 5
Data de inscrição : 16/01/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por Lighter em Qui 16 Jan 2014, 19:42

huahau, obrigado é e grande ajuda... estou criando uma engine para te ajudar melhor com o limite de angulo.. jaja posto mais um comentario

Lighter

Ranking : Sem avaliações
Número de Mensagens : 307
Idade : 18
Data de inscrição : 16/01/2014
Reputação : 29
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://google.com

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por Lighter em Qui 16 Jan 2014, 20:14

No step do obj_cabeca coloque:
Código:

if mouse_x>obj_cabeca.x{
 image_angle = point_direction(x,y,mouse_x,mouse_y)}

apesar de ser um código muito simples, quebrei um pouco a cabeça Very Happy. mas tai!

Lighter

Ranking : Sem avaliações
Número de Mensagens : 307
Idade : 18
Data de inscrição : 16/01/2014
Reputação : 29
Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

http://google.com

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por petterwin em Qui 16 Jan 2014, 20:22

Funcionou perfeito! Obrigado ;))))

petterwin

Número de Mensagens : 5
Data de inscrição : 16/01/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Idéia Re: Unir sprites

Mensagem por Conteúdo patrocinado Hoje à(s) 06:42


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