AJUDA - ANGRY BIRDS

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

AJUDA - ANGRY BIRDS

Mensagem por Overflow em Dom 27 Maio 2012, 12:49



fala, galera do gmbr,

então, eu to criando uma engine do angry birds e estou
com um problema e queria sabe se vocês sabem resolver
esse problema,

No jogo oficial do angry birds, quando você puxa o
estilingue, ele tem um certo tamanho, ou seja, a corda
do estilingue se estica até um certo ponto, e depois
para, eu queria sabe como que se faz esse comando


no meu projeto, a corda do estilingue não tem tamanho definido, assim, ela fica se movimentando para todos os lados

OBS - a corda é feita com uma draw_line, então pode ser que se definir o tamanho da draw_line resolva...
mas, não endendo muito de draw para GML... Alguem ajuda?????


Download da DEMO
(só possui uma fase)
http://www.mediafire.com/?bfxx9u0b91ixm1p

Overflow

Número de Mensagens : 42
Data de inscrição : 22/03/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por TRFN em Dom 27 Maio 2012, 13:01

Talvez você devesse transformar o tamanho da "corda" em variáveis,para que você colocasse um limite na variável,o que possivelmente poderia funcionar.

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por Overflow em Dom 27 Maio 2012, 13:03

TRFN escreveu:Talvez você devesse transformar o tamanho da "corda" em variáveis,para que você colocasse um limite na variável,o que possivelmente poderia funcionar.


eu ja defini a draw_line como uma variavel, so que ela parou de funcionar, ou seja, ela não se esticava Sad

Overflow

Número de Mensagens : 42
Data de inscrição : 22/03/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por DrFelipe em Dom 27 Maio 2012, 13:06

Olha, cara, eu não entendo praticamente nada de draw no GM, mas pode ser que eu possa te ajudar.
Não sei se existe algum comando para verificar o tamanho da corda, mas se tiver, tenta fazer isso:
Código:
if tamanho_da_corda > 50 {tamanho_da_corda = 50}
Isso aí impediria a corda de passar de 50 pixels, mas aí você teria de dar um jeito de trocar "tamanho_da_corda" por algo que represente o tamanho atual do tamanho da corda.
Também tem outro jeito (que eu acabei de pensar), e que eu acho que seria bem mais fácil. Esse método que eu acabo de criar se baseia em não permitir que o mouse vá muito longe enquanto está arrastando a corda. Ficaria mais ou menos isso:

Código:
if mouse_check_button(mb_left) && mouse_x > 150 {window_mouse_set(150,mouse_y)}

Isso vai fazer com que o mouse não passe dos 150 pixels no eixo X se o jogador estiver clicando. Basta alterar os valores para o seu jogo e isso deve criar uma limitação para a corda. Também é possível fazer isso com o eixo Y.

DrFelipe

Número de Mensagens : 16
Data de inscrição : 30/04/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por TRFN em Dom 27 Maio 2012, 13:08

Eu acho que algo do tipo funcionaria :
Código:
draw_line(x , y , x + EsticaX , y + EsticaY);
Ai bastaria você colocar um limite nas variáveis EsticaX e EsticaY :
Código:
if(EsticaX > 100)then EsticaX = 100;
else if(EsticaY > 100)then EsticaY = 100;
Assim teriamos um Limite de Tamanho em 100 tanto para X quanto para Y.

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por cidmarcos em Dom 27 Maio 2012, 13:14

Puxa, eu realmente nao entendo muito de draw mesmo! eu acho q eu simplesmente ia colocar objetos sem sprite ao redor do estilingue. e faria akele comando básico de colisão.
Event Collision Corda Action Move Fixed 0

Algo do Gênero.

____________________________________________________________________________________
EDIT
: Olha, baixei o seu jogo, gostei muito da engine, embora eu tenho em mente que uma cópia o
tanto 'idêntica' não dê muito 'futuro' para o jogo, se é que me entende, fora a criatividade.. Tá PERFEITO!
cheers Nem precisa fazer aquele Limite mano, se você for ver bem, caso você limite, o AngryBird, NUNCA
vai chegar ao porquinho, até porque só chega lá se esticar bem a corda.


Última edição por cidmarcos em Dom 27 Maio 2012, 13:36, editado 1 vez(es)

cidmarcos

Ranking : Nota D
Número de Mensagens : 177
Idade : 21
Data de inscrição : 26/05/2012
Notas recebidas : E+D
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.facebook.com/DragaoDeOuroJogo

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por Overflow em Dom 27 Maio 2012, 13:21

Poxa, nenhum deles funcionou por que...

1º Draw_line quando coloca < , > , <=, >= ela aumenta a largura, e não o comprimento,
2º é que quando usa a variavel EsticaX e EsticaY, some a draw_line, e não tem nenhuma corda =(
3º é que se for usar como objeto, teria que faser GIF para poder se esticas, e se movimentar

Overflow

Número de Mensagens : 42
Data de inscrição : 22/03/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por TRFN em Dom 27 Maio 2012, 13:23

Mostre o código usando para fazer a linha no draw line........
Ai eu teria uma noção do teu método....
Se quiser,pode ser por MP.

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por Overflow em Dom 27 Maio 2012, 13:25

draw_sprite(sprite_index,image_index,x,y)
//draw_self()

if global.sling=true{
draw_line(x-14,y,obj_birds.x,obj_bird.y)
draw_line(x+14,y,obj_birds.x,obj_bird.y)
}

Overflow

Número de Mensagens : 42
Data de inscrição : 22/03/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por DrFelipe em Dom 27 Maio 2012, 13:31

Overflow escreveu:Poxa, nenhum deles funcionou por que...

1º Draw_line quando coloca < , > , <=, >= ela aumenta a largura, e não o comprimento,
2º é que quando usa a variavel EsticaX e EsticaY, some a draw_line, e não tem nenhuma corda =(
3º é que se for usar como objeto, teria que faser GIF para poder se esticas, e se movimentar

E você ao menos considerou a possibilidade de usar o meu método de bloquear o mouse? ._.

DrFelipe

Número de Mensagens : 16
Data de inscrição : 30/04/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por Overflow em Dom 27 Maio 2012, 13:32

DrFelipe escreveu:
Overflow escreveu:Poxa, nenhum deles funcionou por que...

1º Draw_line quando coloca < , > , <=, >= ela aumenta a largura, e não o comprimento,
2º é que quando usa a variavel EsticaX e EsticaY, some a draw_line, e não tem nenhuma corda =(
3º é que se for usar como objeto, teria que faser GIF para poder se esticas, e se movimentar

E você ao menos considerou a possibilidade de usar o meu método de bloquear o mouse? ._.

??????????
não sei como se bloqueia o mouse


if draw_line < 10 {
mouse.y,mouse.y = false
}

se for assim, nao funciona

Overflow

Número de Mensagens : 42
Data de inscrição : 22/03/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por TRFN em Dom 27 Maio 2012, 13:35

Acho que isso pode funcionar :
Código:
draw_sprite(sprite_index,image_index,x,y);
Limite = 100;
if(!variable_local_exists("XStart"))then XStart = -1;
if(!variable_local_exists("YStart"))then YStart = -1;

if(global.sling){
    if(XStart = -1)then XStart = obj_birds.x;
    if(YStart = -1)then YStart = obj_bird.y;
    if(distance_to_point(XStart , 0) > obj_birds.x + Limite)then obj_birds.x = XStart + Limite;
    else if(distance_to_point(XStart , 0) < obj_birds.x - Limite)then obj_birds.x = XStart - Limite;
    if(distance_to_point(0 , YStart) > obj_bird.y + Limite)then obj_bird.y = YStart + Limite;
    else if(distance_to_point(0 , YStart) < obj_bird.y - Limite)then obj_bird.y = YStart - Limite;
    draw_line(x-14,y,obj_birds.x,obj_bird.y)
    draw_line(x+14,y,obj_birds.x,obj_bird.y)
    } else {
        XStart = -1;
        YStart = XStart;
    }


Última edição por TRFN em Dom 27 Maio 2012, 13:43, editado 1 vez(es)

___________



TRFN

Ranking : Nota C
Número de Mensagens : 970
Idade : 21
Data de inscrição : 16/01/2012
Notas recebidas : C
Reputação : 33
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 2

http://trfnsite.com

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por DrFelipe em Dom 27 Maio 2012, 13:40

Overflow escreveu:
DrFelipe escreveu:
Overflow escreveu:Poxa, nenhum deles funcionou por que...

1º Draw_line quando coloca < , > , <=, >= ela aumenta a largura, e não o comprimento,
2º é que quando usa a variavel EsticaX e EsticaY, some a draw_line, e não tem nenhuma corda =(
3º é que se for usar como objeto, teria que faser GIF para poder se esticas, e se movimentar

E você ao menos considerou a possibilidade de usar o meu método de bloquear o mouse? ._.

??????????
não sei como se bloqueia o mouse


if draw_line < 10 {
mouse.y,mouse.y = false
}

se for assim, nao funciona

Eu postei como fazer isso...
*flash back*

DrFelipe escreveu:Olha, cara, eu não entendo praticamente nada de draw no GM, mas pode ser que eu possa te ajudar.
Não sei se existe algum comando para verificar o tamanho da corda, mas se tiver, tenta fazer isso:
Código:
if tamanho_da_corda > 50 {tamanho_da_corda = 50}
Isso aí impediria a corda de passar de 50 pixels, mas aí você teria de dar um jeito de trocar "tamanho_da_corda" por algo que represente o tamanho atual do tamanho da corda.
Também tem outro jeito (que eu acabei de pensar), e que eu acho que seria bem mais fácil. Esse método que eu acabo de criar se baseia em não permitir que o mouse vá muito longe enquanto está arrastando a corda. Ficaria mais ou menos isso:

Código:
if mouse_check_button(mb_left) && mouse_x > 150 {window_mouse_set(150,mouse_y)}

Isso vai fazer com que o mouse não passe dos 150 pixels no eixo X se o jogador estiver clicando. Basta alterar os valores para o seu jogo e isso deve criar uma limitação para a corda. Também é possível fazer isso com o eixo Y.

DrFelipe

Número de Mensagens : 16
Data de inscrição : 30/04/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

Mensagem por Overflow em Dom 27 Maio 2012, 13:44

TRFN escreveu:Acho que isso pode funcionar :
Código:
draw_sprite(sprite_index,image_index,x,y);
Limite = 100;
if(!variable_local_exists("XStart"))then XStart = -1;
if(!variable_local_exists("YStart"))then YStart = -1;

if(global.sling){
    if(XStart = -1)then XStart = obj_birds.x;
    if(YStart = -1)then YStart = obj_bird.y;
    if(distance_to_point(XStart , 0) > obj_birds.x + Limite)then obj_birds.x = XStart + Limite;
    else if(distance_to_point(XStart , 0) < obj_birds.x - Limite)then obj_birds.x = XStart - Limite;
    if(distance_to_point(0 , YStart) > obj_bird.y + Limite)then obj_bird.y = YStart + Limite;
    else if(distance_to_point(0 , YStart) < obj_bird.y - Limite)then obj_bird.y = YStart - Limite;
    draw_line(x-14,y,obj_birds.x,obj_bird.y)
    draw_line(x+14,y,obj_birds.x,obj_bird.y)
    } else {
        XStart = -1;
        YStart = XStart;
    }

PERFEITO ... Smile
vlw... (resolvido)

Overflow

Número de Mensagens : 42
Data de inscrição : 22/03/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: AJUDA - ANGRY BIRDS

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


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