Página 1 de 1

[GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 12:21 am
por Muquirana
Estou participando da ludum dare e eu dei uma travada na implementação em uma mecanica do meu jogo, vamos la:
Imagem
Tenho essa parede e gostaria que a cada 5 ou 10 segundos ela descesse verticalmente, tentei usar alarm e o random_range(5,10) para os segundos, mas ela não descia, então usei o vspeed e ela desceu de uma vez, e também gostaria de saber como fazer ela acompanhar o player ( como se fosse uma hud ) para dar a impressão que ela está se fechando.
Obrigado.

Re: [GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 9:07 am
por None
Eu não sei como você está implementado a parede, mas já que você disse que o vspeed funcionou, use dois alarmes, um deles aplica valor ao vspeed e o outro será o vspeed.

Por exemplo
Alarme 0
Vspeed = 2;
Alarm1 = room_speed/4;

Alarme 1
Vspeed = 0;
Alarm0 = room_speed * choose(5,10);

Desse jeito ele desce um pouco e fica 5 ou 10 segundos até descer de novo.

Eu particularmente não usaria este método, mas a única coisa que eu sei sobre a sua parede é que o vspeed funcionou uma.vez para isso.

Em relação a hud, é a mesma coisa, eu não sei como você está implementado a parede, provavelmente (se você quer como uma hud) você deve ter que desenhar outra parede no draw gui.

Já se for apenas acompanhar o player fisicamente, é só usar o X do player como base, criar um offset (distância, margem) para o player e definir o X dela com base no do player e do offset.

Re: [GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 10:44 am
por Muquirana
None escreveu:Eu não sei como você está implementado a parede, mas já que você disse que o vspeed funcionou, use dois alarmes, um deles aplica valor ao vspeed e o outro será o vspeed.

Por exemplo
Alarme 0
Vspeed = 2;
Alarm1 = room_speed/4;

Alarme 1
Vspeed = 0;
Alarm0 = room_speed * choose(5,10);

Desse jeito ele desce um pouco e fica 5 ou 10 segundos até descer de novo.

Eu particularmente não usaria este método, mas a única coisa que eu sei sobre a sua parede é que o vspeed funcionou uma.vez para isso.

Em relação a hud, é a mesma coisa, eu não sei como você está implementado a parede, provavelmente (se você quer como uma hud) você deve ter que desenhar outra parede no draw gui.

Já se for apenas acompanhar o player fisicamente, é só usar o X do player como base, criar um offset (distância, margem) para o player e definir o X dela com base no do player e do offset.
Tentei implementar e agora ela está subindo e de uma vez só sem esperar os segundos.
E sobre ela acompanhar o player, seria fisicamente mesmo durante o level, dando a impressão do level todo estar sendo “ imprensado “

Re: [GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 11:50 am
por None
Você poderia colocar o código que você está usando para ver o que está sendo feito?

Re: [GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 11:58 am
por Muquirana
None escreveu:Você poderia colocar o código que você está usando para ver o que está sendo feito?
Ja ia dar um edit na mensagem anterior, bom consegui um resultado, a parede agora está descendo ( de uma vez sem esperar o tempo ), então vamos la:
alarm 0 event:
vspeed = 2;
alarm[1] = room_speed/4;

alarm 1 event:
vspeed = 0;
alarm[0] = room_speed * random_range(5,10);

step event:
vspeed = -alarm[1];

Imagem ( era pra ser um gif )

Re: [GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 12:27 pm
por None
Então você quer que ela fique descendo o tempo todo?
O que você quer é que ela aumente a velocidade caindo ou algo do tipo?

O seu step event está sobrescrevendo ambos os alarmes.

Se você quer a parede caindo sempre, basta dar um valor baixo para o vspeed dela e conforme o alarme é ativo você aumentar um pouco o valor do vspeed, nem precisa de dois alarmes neste caso.

Re: [GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 12:33 pm
por Muquirana
None escreveu:Então você quer que ela fique descendo o tempo todo?
O que você quer é que ela aumente a velocidade caindo ou algo do tipo?

O seu step event está sobrescrevendo ambos os alarmes.

Se você quer a parede caindo sempre, basta dar um valor baixo para o vspeed dela e conforme o alarme é ativo você aumentar um pouco o valor do vspeed, nem precisa de dois alarmes neste caso.
Quero q ela desça por exemplo : o jogador está andando pelo level, passa 5 segundos a parede desce 2 pixels, passa mais 5 segundos, ela desce +2 e assim vai, e caso o player demore de passar o level ele morre pela parede, e como as rooms terão tamanhos diferentes a parede acompanharia o player dando a impressão de ser a room toda.

Re: [GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 12:44 pm
por None
Neste caso é bem simples.

Start event
alarm[0] = room_speed * irandom_range(2, 4);

alarm[0] event
Y += 2;
alarm[0] = room_speed * irandom_range(2, 4);

Pronto, desta forma a cada 2-4 segundos a parede desce 2 pixels.
Isso funciona se a sua parede for um objeto único, se forem vários objetos você precisa evitar o random range individual, aí ou você usa um valor fixo de tempo ou usa um controlador para definir o tempo do alarme deles.

Re: [GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 1:45 pm
por Muquirana
None escreveu:Neste caso é bem simples.

Start event
alarm[0] = room_speed * irandom_range(2, 4);

alarm[0] event
Y += 2;
alarm[0] = room_speed * irandom_range(2, 4);

Pronto, desta forma a cada 2-4 segundos a parede desce 2 pixels.
Isso funciona se a sua parede for um objeto único, se forem vários objetos você precisa evitar o random range individual, aí ou você usa um valor fixo de tempo ou usa um controlador para definir o tempo do alarme deles.
Cara funcionou perfeitamente, você não tem ideia do alivio que eu to agora, consegui fazer essa paredona seguir o player também, obrigado de verdade, vou conseguir entregar a tempo

Re: [GMS2][Duvida] Objeto acompanhar o player pela view port e o mesmo objeto descer a cada 10 segundos

Enviado: Seg Ago 13, 2018 1:48 pm
por None
Fico feliz por ter sido útil :)
Posta o projeto aqui depois!