Conectar-se
Quem está conectado
41 usuários online :: 2 usuários cadastrados, Nenhum Invisível e 39 Visitantes

Cambalinho, ReisBlender

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 22/03/2012
Número de Mensagens : 42
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

AJUDA - ANGRY BIRDS

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)
mediafire.com ?bfxx9u0b91ixm1p
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 16/01/2012
Número de Mensagens : 970
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 2
Ver perfil do usuáriohttp://trfnsite.com

Re: AJUDA - ANGRY BIRDS

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.
avatar
Data de inscrição : 22/03/2012
Número de Mensagens : 42
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: AJUDA - ANGRY BIRDS

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
avatar
Data de inscrição : 30/04/2012
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: AJUDA - ANGRY BIRDS

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.
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 16/01/2012
Número de Mensagens : 970
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 2
Ver perfil do usuáriohttp://trfnsite.com

Re: AJUDA - ANGRY BIRDS

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.
avatar
Ranking : Nota D
Notas recebidas : E+D
Data de inscrição : 26/05/2012
Número de Mensagens : 177
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.facebook.com/DragaoDeOuroJogo

Re: AJUDA - ANGRY BIRDS

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)
avatar
Data de inscrição : 22/03/2012
Número de Mensagens : 42
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: AJUDA - ANGRY BIRDS

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
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 16/01/2012
Número de Mensagens : 970
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 2
Ver perfil do usuáriohttp://trfnsite.com

Re: AJUDA - ANGRY BIRDS

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.
avatar
Data de inscrição : 22/03/2012
Número de Mensagens : 42
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: AJUDA - ANGRY BIRDS

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)
}
avatar
Data de inscrição : 30/04/2012
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: AJUDA - ANGRY BIRDS

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? ._.
avatar
Data de inscrição : 22/03/2012
Número de Mensagens : 42
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: AJUDA - ANGRY BIRDS

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
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 16/01/2012
Número de Mensagens : 970
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 1
   : 0
   : 2
Ver perfil do usuáriohttp://trfnsite.com

Re: AJUDA - ANGRY BIRDS

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)
avatar
Data de inscrição : 30/04/2012
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: AJUDA - ANGRY BIRDS

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.
avatar
Data de inscrição : 22/03/2012
Número de Mensagens : 42
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Ver perfil do usuário

Re: AJUDA - ANGRY BIRDS

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)
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum