Avatar do usuário
Nat_2005
Novato
Novato
Autor
Mensagens: 6
Registrado em: Qua Mai 20, 2020 7:26 pm
Karma: 3

Spawn dos inimigos

Dom Jun 21, 2020 3:34 am

É um jogo de uma nave que tem que destruir rochas indo para sua direção (180). Não quero ficar adicionando rochas lá na frete para todas irem para direção da nave, queria fazer um sistema spawn; o jogo cria as rochas la na frente em um eixo Y aleatório, mas as rochas não estão sendo criadas. Alguém sabe o que aconteceu?

Criei um sprite, transformei em objeto (obj_spawn), ele deve criar rochas la na frente. O código de step dele é esse:

Step
if(random(100) > 90){
instance_create_layer(random_range(sprite_get_width(spr_rocha),room_width - sprite_get_width(spr_rocha)), -sprite_get_height(spr_rocha), "Instances", obj_rocha);
}


Obs: Esse código está muito comprido no Game Maker, se alguém souber uma forma de colocar parte dele em outra linha, ou uma forma mais curta de fazer um spawn, eu aceito ;-;
 
grononmc
Colaborador
Colaborador
Mensagens: 58
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 104

Re: Spawn dos inimigos

Dom Jun 21, 2020 1:57 pm

Pelo que vi, criando deve estar, só não deve estar no enquadramento da tela, pois você esta fazendo ele ser aleatório no eixo X e não no eixo Y, você colocou para ele ficar negativo no eixo Y então ele esta provavelmente para fora da tela, deveria ser assim.

var sprh = sprite_get_height(spr_rocha);
var ry = random_range(sprh, room_height-sprh);
if(random(100) > 90){
    instance_create_layer(0, ry, "Instances", obj_rocha);
}
 
Avatar do usuário
Nat_2005
Novato
Novato
Autor
Mensagens: 6
Registrado em: Qua Mai 20, 2020 7:26 pm
Karma: 3

Re: Spawn dos inimigos

Dom Jun 21, 2020 3:12 pm

Top, começaram a spawnar, mas as rochas estão dando spawn na esquerda, e saindo da tela, quero que elas deem spawn na direita da tela, pois a nave esta na esquerda.
Acho que entendi o código (só acho). O room_height se refere a ambos os lados da room, mas e se eu me refiro ao lado direito? É isso que eu deveria mudar para as rochas darem spawn na direita?

Obs: Minha nave deu uma esticada com esse código
 
grononmc
Colaborador
Colaborador
Mensagens: 58
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 104

Re: Spawn dos inimigos

Dom Jun 21, 2020 3:25 pm

Sim o room_height você utiliza para o eixo Y e o room_width para o X
Para nascerem no lado direito basta adicionar o room_width no eixo X.

instance_create_layer(room_width, ry, "Instances", obj_rocha);
 
Avatar do usuário
Nat_2005
Novato
Novato
Autor
Mensagens: 6
Registrado em: Qua Mai 20, 2020 7:26 pm
Karma: 3

Re: Spawn dos inimigos

Dom Jun 21, 2020 4:12 pm

Top man, ta dando certinho. Vlw.
Tu sabe como resolver esse negocio da nave estar esticando? Isso já aconteceu comigo em outro jogo, e consegui resolver, mas nesse código ai, eu não sei não.
 
grononmc
Colaborador
Colaborador
Mensagens: 58
Registrado em: Dom Fev 14, 2016 9:19 pm
Karma: 104

Re: Spawn dos inimigos

Dom Jun 21, 2020 4:51 pm

Deve ser o image_xscale e o image_yscale, só tentar mundar eles com o tamanho padrão que é 1.
image_xscale = 1;
image_yscale = 1;

Qualquer coisa coloca eles no final de todo o código no step.

O problema também pode ser no Draw, você pode estar usando o draw_sprite_ext(), nele possui o image_xscale/y, talvez tenha alguma variável erra lá.
1