GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Dúvida em código

4 participantes

Ir para baixo

Dúvida em código Empty Dúvida em código

Mensagem por Denbs Dom 27 Jan 2013, 20:32

Iae galera,
to com uma pequena dúvida em um código que vi em tutoriais em algumas engines,
eles davam uma explicação mas não entendi por completo como funciona.
Aqui está o código:
Código:
 if keyboard_check(bláblá..){if place_free(x+---hspeed---,y,bláblá,blaá{
blábláblá acontece}}

O que eu quis enfatizar foi o uso do hspeed checando um espaço vazio.Eu
quero entender não só esse uso, mas de qualquer forma que use uma
mistura de variáveis diferentes(como posição x e velocidade horizontal),
espero que entendam minha dúvida,
Obrigado.
Denbs
Denbs

Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por theguitarmester Dom 27 Jan 2013, 20:35

o que é uma VARIAVEL(no caso real)? é um numero.

logo, esse numero pode ser aplicado em qualquer lugar.


explique mais, porque não entendi muito bem o que quer saber.
theguitarmester
theguitarmester

Games Ranking : Nota C

Notas recebidas : B + C
Data de inscrição : 28/02/2012
Reputação : 139
Número de Mensagens : 2211
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 4 Moedas x 0

Ouro x 2 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 1
Plataformas :
  • Unity


http://guitarmester.no.comunidades.net/index.php?pagina=19362978

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por RafaelCazarotto Dom 27 Jan 2013, 20:39

a parte do place_free checa se a posiçao a sua frente é livre isso é usado para as colisões é um sistema otimo =] explicando melhor
se a tecla blablabla for pressionada e se na frente blablabla pixeis esta livre então
{
blablabla
}
é isso que acontecde ( usei os blablabla's hehehe)
vlw espero ter ajudado
RafaelCazarotto
RafaelCazarotto

Games Ranking : Nota C

Notas recebidas : D-D-D-C-C-B
Data de inscrição : 15/03/2012
Reputação : 13
Número de Mensagens : 564
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por Willy Dom 27 Jan 2013, 20:46

Hspeed, como deve saber, é a velocidade horizontal de um objeto.
Assim sendo, esse hspeed é equivalente a checar um numero expecifico em pixels.

Por exemplo, se o seu objeto se move horizontalmente usando hspeed com velocidade 4:

Isso:
Código:
place_free(x+hspeed,y)
é o mesmo que:
Código:
place_free(x+4,y)

Esse código só funciona se você usar hspeed para se movimentar. Se usar "x+=" não vai funcionar, pois o hspeed vai estar valendo zero.
Willy
Willy

Games Ranking : Nota A

Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Reputação : 264
Número de Mensagens : 1890
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

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

http://willy-gmbr.blogspot.com/

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por Denbs Dom 27 Jan 2013, 20:52

Willy, indo mais profundamente, qual seria uma utilidade pra isso?qual a diferença se uso isso checando colisão na parede?
Denbs
Denbs

Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por Willy Dom 27 Jan 2013, 21:14

Isso é indicado quando for fazer uma velocidade que não seja fixa (ou seja, que nunca seja apenas 4, mas que varie esse valor para mais ou para menos.)

Imagine que, você tem o objeto de um carro. Ele começa lento e vai aumentando sua velocidade aos poucos.
Se o carro estiver bem rápido e tiver uma parede em seu caminho, o carro vai ignorar a parede, passando direto. Isso ocorreria, se por exemplo, usasse place_free(x+1,y).
Mas, caso esteja usando hspeed, o provavelmente a parede vai ser percebida, e então, o carro vai bater. Digo "provavelmente" pois dependendo da velocidade do carro, ele ignora mesmo assim. Mas isso é assunto pra outra historia (se quiser, eu tento explicar).

Isso é meio dificil de explicar com palavras... Vou fazer uma pequena engine pra demonstrar a diferença.
Willy
Willy

Games Ranking : Nota A

Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Reputação : 264
Número de Mensagens : 1890
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

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

http://willy-gmbr.blogspot.com/

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por Denbs Dom 27 Jan 2013, 21:23

Willy, agora estou entendendo o raciocínio, esperando engine ;D, vlw.
Denbs
Denbs

Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por Willy Dom 27 Jan 2013, 21:34

Pronto, talvez saia mais confuso ainda. XD
Engine

Bom, na engine, existem 3 cubos que se movem com a mesma velocidade até a parade localizada à direita da tela.
Sendo que, de cima para baixo, o primeiro cubo usa place_free usando hspeed, o segundo usa um valor fixo, porém, checa um pouco mais que sua velocidade. Já o terceiro, usa um sistema de colisão "x+=" combinado com repeat, o que deixa uma colisão perfeita.

Explicando o que acontece:
O primeiro bloco está "antecipando" sua velocidade antes de andar, porém, por ser um valor alto, o bloco pode se atrofiar na parede.
O segundo antecipa um pouco mais que sua velocidade, impendindo sua colisão com a parede, porém, fica claro que ele nem chegou a colidir.
O terceiro se move de 1 em 1 px, porém, ele faz isso 8x mais rapido (graças ao repeat). Por ser 1px de espaço por vez, não há como passar o bloco ou ficar antes dele.

Caso use friction, o place_free(x+hspeed,y) pode ser mais indicado. Infelizmente o sistema de colisão do GM não é muito bom, portanto não espere bons resultados.

Duvidas é só falar. blz
Willy
Willy

Games Ranking : Nota A

Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Reputação : 264
Número de Mensagens : 1890
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

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

http://willy-gmbr.blogspot.com/

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por Denbs Dom 27 Jan 2013, 21:52

Beleza, entendi perfeitamente o que você quis dizer. Apenas quero que responda algumas coisas:
->Ao usar repeat(Cool- ele executa o código 8 vezes em um segundo?
-> caso estivesse x+2 ele ainda poderia entrar na parede pois estaria "pulando" um pixel?
->usando o ultimo método(repeat) o pc usa mais memória?"se esforça mais"?

Desculpe se estou perguntando muito =P, vlw
Denbs
Denbs

Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por Willy Dom 27 Jan 2013, 22:11

Sim, o repeat executa a mesma ação 8x, mas não por segundo, e sim, por step. Apesar da velocidade "aparentemente" ser a mesma, o repeat passa pixel por pixel, deixando a colisão perfeita.

Caso use x+2, ele sempre ficaria 1px antes da parede, ficando uma pequena linha imaginaria de 1px de largura entre a parede e o objeto. Aconcelho a deixar sempre x+1. Caso queira que o objeto vá mais rápido ou devagar, mude o valor do 8. Faça um teste, coloque um número grande, como 60, e veja como a colisão será perfeita.

Com relação a memória, acredito que sim. Mas em um código pequeno como este quase não se tem impacto. Mas tome cuidado ao usar repeat, ele pode travar o pc facilmente, dependendo do código que for repitido.

Não se preocupe em fazer perguntas, estou aqui para ajudar. blz
Willy
Willy

Games Ranking : Nota A

Notas recebidas : C + B + A + A
Data de inscrição : 08/06/2009
Reputação : 264
Número de Mensagens : 1890
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

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

http://willy-gmbr.blogspot.com/

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por Denbs Dom 27 Jan 2013, 23:51

Valeu pela ajuda =D, pode trancar aqui
Denbs
Denbs

Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios : Dúvida em código Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Dúvida em código Empty Re: Dúvida em código

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos