Entrar
Últimos assuntos
» player não consegue andarpor 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
Página 1 de 1
Dúvida em código
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:
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.
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- Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Dúvida em código
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.
logo, esse numero pode ser aplicado em qualquer lugar.
explique mais, porque não entendi muito bem o que quer saber.
Re: Dúvida em código
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
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- Games Ranking :
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 :
x 0 x 0 x 0
x 1 x 0 x 1
x 0 x 0 x 0
Re: Dúvida em código
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:
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.
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)
- 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.
Re: Dúvida em código
Willy, indo mais profundamente, qual seria uma utilidade pra isso?qual a diferença se uso isso checando colisão na parede?
Denbs- Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Dúvida em código
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.
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.
Re: Dúvida em código
Willy, agora estou entendendo o raciocínio, esperando engine ;D, vlw.
Denbs- Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Dúvida em código
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.
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.
Re: Dúvida em código
Beleza, entendi perfeitamente o que você quis dizer. Apenas quero que responda algumas coisas:
->Ao usar repeat(- 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
->Ao usar repeat(- 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- Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Dúvida em código
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.
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.
Re: Dúvida em código
Valeu pela ajuda =D, pode trancar aqui
Denbs- Data de inscrição : 19/01/2011
Reputação : 0
Número de Mensagens : 204
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» Duvida com codigo ?
» Duvida com codigo
» dúvida em código
» [Resolvido] Dúvida no meu código
» Dúvida sobre um código
» Duvida com codigo
» dúvida em código
» [Resolvido] Dúvida no meu código
» Dúvida sobre um código
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos