Curioso
Novato
Novato
Autor
Mensagens: 13
Registrado em: Qua Out 28, 2015 1:43 am
Karma: 16

Como parar objeto em determinado lugar da tela (x,y)?

Sáb Ago 25, 2018 7:57 pm

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?
 
fuzenrad
Programador
Programador
Mensagens: 6
Registrado em: Qui Jul 05, 2018 6:50 pm
Karma: 16

Re: Como parar objeto em determinado lugar da tela (x,y)?

Sáb Ago 25, 2018 8:35 pm

Manda andar sempre de 1 em 1 pixel e lança num loop for 0 to 24, dai fica perfeito.
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 122
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 290

Re: Como parar objeto em determinado lugar da tela (x,y)?

Sáb Ago 25, 2018 9:38 pm

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".
1
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Curioso
Novato
Novato
Autor
Mensagens: 13
Registrado em: Qua Out 28, 2015 1:43 am
Karma: 16

Re: Como parar objeto em determinado lugar da tela (x,y)?

Sáb Ago 25, 2018 10:20 pm

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.
2
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 122
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 290

Re: Como parar objeto em determinado lugar da tela (x,y)?

Dom Ago 26, 2018 1:45 am

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.
1
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
fuzenrad
Programador
Programador
Mensagens: 6
Registrado em: Qui Jul 05, 2018 6:50 pm
Karma: 16

Re: Como parar objeto em determinado lugar da tela (x,y)?

Dom Ago 26, 2018 6:16 am

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+
}
1
 
Curioso
Novato
Novato
Autor
Mensagens: 13
Registrado em: Qua Out 28, 2015 1:43 am
Karma: 16

Re: Como parar objeto em determinado lugar da tela (x,y)?

Dom Ago 26, 2018 8:28 pm

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

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes