Página 1 de 1
Como parar objeto em determinado lugar da tela (x,y)?
Enviado: Sáb Ago 25, 2018 7:57 pm
por Curioso
Olá, pessoal. Como faço para interromper movimento de um objeto quando ele chegar em determinado lugar da tela? (GameMaker Studio).
Eu quero mover um objeto no eixo x após clicá-lo.
Assim: Se clicou no objeto, então: hspeed = -5.
if objeto.x = 525 {hspeed = 0}
Dessa forma, dá certo, mas se eu colocar mais velocidade, "hspeed=25" por exemplo, o objeto passa direto e não para.
Eu tentei por colisão com outro objeto, mas não é preciso quando aumento a velocidade e o resultado fica ruim.
Alguém tem uma ideia?
Re: Como parar objeto em determinado lugar da tela (x,y)?
Enviado: Sáb Ago 25, 2018 8:35 pm
por fuzenrad
Manda andar sempre de 1 em 1 pixel e lança num loop for 0 to 24, dai fica perfeito.
Re: Como parar objeto em determinado lugar da tela (x,y)?
Enviado: Sáb Ago 25, 2018 9:38 pm
por None
Basicamente o que foi dito acima, você apenas precisa adicionar a velocidade de movimento à equação, então você iria ver se a posição atual acrescida da velocidade chega lá, então você pode usar um laço de repetição para se aproximar 1 pixel por vez.
Se você clicar no link aqui de baixo eu explico como fazer este modelo de "colisão".
Re: Como parar objeto em determinado lugar da tela (x,y)?
Enviado: Sáb Ago 25, 2018 10:20 pm
por Curioso
Poxa, eu não entendi ou não sei como fazer... :( vou lhes mandar meu código resumido:
(...)
Se eu clicar no objeto:
if objeto.x = 860 && teste=false && toque = 1 //aqui é um teste que eu faço, mas acho que é irrelevante pra vcs...
{
hspeed=-5 //o negócio é aqui. :( Eu quero que essa velocidade seja maior, mas dá errado.
teste=true
toque = 0
}
if objeto.x = 525 && teste = true && toque = 2
{
hspeed = 5 //e aqui
teste= false
toque = 0
}
(...)
Aí quando o objeto está em 525 ou em 860, o hspeed=0. Como falei, dá certo com velocidade menores.
Re: Como parar objeto em determinado lugar da tela (x,y)?
Enviado: Dom Ago 26, 2018 1:45 am
por None
Você está querendo que ele vá da esquerda para direita e vice versa?
É só colocar então o (x + hspeed >= 860) hspeed = -5 resto do código.
If (x + hspeed <= 525) hspeed = 5 resto do código.
Este não é o melhor jeito de fazer e com velocidades maiores vai ficar nítido o problema.
Olhe o vídeo que eu te indiquei para entender melhor como fazer o laço de repetição.
Re: Como parar objeto em determinado lugar da tela (x,y)?
Enviado: Dom Ago 26, 2018 6:16 am
por fuzenrad
Cara, se com 5 de velocidade funciona, então faz um loop de 5 iterações apenas (0 to 4), que visualmente vai andar a 25, só troca o hspeed=5 por x+=5, tudo dentro do loop...
var i;
for (i = 0; i < 4; i += 1)
{
//COLE O SEU CODIGO AQUI DENTRO trocando hspeed por x+
}
Re: Como parar objeto em determinado lugar da tela (x,y)?
Enviado: Dom Ago 26, 2018 8:28 pm
por Curioso
Consegui :)
Eu tava desenvolvendo o método do None quando me veio à cabeça que eu poderia "corrigir" o posicionamento do objeto no momento da colisão. Vou continuar fazendo testes, pois pode não ser o melhor jeito de fazer esse tipo de coisa, mas por enquanto, o resultado ficou bom. Servirá como se fosse um menu lateral...
Eu lhes agradeço!!
None, seus vídeos são muito bons!
Até a próxima! hehe