Página 1 de 1

Recriar objeto destruido

Enviado: Sex Abr 20, 2018 6:29 pm
por chicoweb
Fala Galera quanto tempo que bom saber que essa comunidade ainda está de pé apesar de tantos trancos e barrancos :blz: :feliz:.

O lance é o seguinte:

- Eu tenho uma room com um objeto chamado obj_spaw, ele serve para indicar onde os inimigos vão nascer, eu simplesmente saio esparramando el pela room e pronto um outro objeto cuida de fazer monstros nascerem onde ele está.
- O que acontece é que a room é persistente (Tem que ser), então quando eu dou um room_start para reiniciar a fase esses obj_spaw não voltam mais.
- Tem alguma maneira de fazer somente eles renascerem exatamente onde estavam via código?

Seria algo assim:

Código: Selecionar todos

instance_recreate(obj_spaw)

Re: Recriar objeto destruido

Enviado: Sex Abr 20, 2018 8:52 pm
por J_Marlon
Os objetos obj_spaw são destruídos em algum momento? Se sim, é normal que não reapareçam nas rooms persistentes.

O mais perto de um "instance_recreate()" seria usar um objeto de controle para verificar quando uma instância não existe na room e então criá-la.

Algo como:

Código: Selecionar todos

if (!instance_exists(obj_spaw))
    instance_create(x, y, obj_spaw);
Outra forma mais simples, seria armazenar o xstart e ystart da instância para criar outra no mesmo local ao ser destruída.

Código: Selecionar todos

Evento Create:

xx = xstart;
yy = ystart;

Evento Destroy:

instance_create(xx, yy, obj_spaw)
Enfim, esses são só alguns exemplos básicos mas há muitas maneiras de contornar o problema que você falou.

Re: Recriar objeto destruido

Enviado: Sex Abr 20, 2018 9:21 pm
por chicoweb
J_Marlon escreveu:

Código: Selecionar todos

Evento Create:

xx = xstart;
yy = ystart;

Evento Destroy:

instance_create(xx, yy, obj_spaw)
Muito boa essa dica quase seviu o problema é que tem um evento assim:

Código: Selecionar todos

with obj_inimigo_spaw{
     // Cria o monstro no exato local do spaw
     ini = instance_create(x, y, obj_inimigo) 
     // Destroi o spaw pra não nascer monstro de novo
    instance_destroy()
}
Se eu der um create dentro do ondestroy como vc citou, esse código ai de cima vira um loop infinito.

Re: Recriar objeto destruido  Tópico resolvido

Enviado: Sex Abr 20, 2018 9:29 pm
por None
Olá, eu não tenho certeza se entendi a sua lógica
Você possui um objeto que controla a criação do objeto_inimigo_spaw e este objeto por sua vez cria o inimigo, mas quem criar o código dele é este primeiro objeto?

Se for isso há alguns jeitos bem simples, um é retirar este with que você esta usando e colocar o código no destroy event do spaw e por sua vez no destroy do inimigo você faz ele criar o spaw no xstart dele e no ystart dele.

Outro jeito seria usar o instance_change, você muda uma instância na outra, mas eu não gosto de usar o instance_change >_>

Re: Recriar objeto destruido

Enviado: Sex Abr 20, 2018 10:31 pm
por chicoweb

Código: Selecionar todos

e por sua vez no destroy do inimigo você faz ele criar o spaw no xstart dele e no ystart dele.
Como que eu não pensei nisso antes :nervoso:, muito simples por isso é bom consultar vocês kkk.
A lógica é: Quando o inimigo morre ele vira spaw de volta.
Nos que ficaram vivos não precisa porque eles vão continuar na fase.
Obrigado a todos essa lógica simples vai resolver, quando eu terminar de atualizar o game eu informo aqui se deu certo mesmo.