Como Fazer Um Objeto Spawnar Aleatoriamente

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Como Fazer Um Objeto Spawnar Aleatoriamente

Mensagem por Chingling152 em Dom 07 Set 2014, 12:30

No Meu Game Spawna Recursos Randomicamente

Criei Um Objeto (obj_spw)
E O Lugar Onde Ele Spawna(obj_local)

No obj_local Deixei Vazio

E No obj_spw
coloquei assim No Create
Código:

isp=0
spsp=900
E Assim No Step
Código:

isp+=1

if isp=spsp{
instance_create(random(obj_local),random(obj_local),HP)
instance_create(random(obj_local),random(obj_local),Municao)
}

Só Que Ele Spawna Em Todos Os obj_locais

Mas Eu Quero Que Ele Escolha Apenas 2 Deles 1 Para O objeto Municao E O Outro Para O Objeto HP

:| Da Um Help Aê


Última edição por Markituh em Dom 07 Set 2014, 12:57, editado 1 vez(es) (Razão : Remoção da tag hide pra code)

Chingling152

Número de Mensagens : 73
Idade : 17
Data de inscrição : 10/05/2014
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Como Fazer Um Objeto Spawnar Aleatoriamente

Mensagem por Markituh em Dom 07 Set 2014, 13:54

Olha, do jeito que você está fazendo ele realmente vai spawnar em todos os locais. Porque quando você usa o identificador do objeto (tipo "obj_local") isso vai ser aplicado para todos as instâncias deste objeto local. Só uma coisa: os dois primeiros argumentos do instance_create não deveriam ser "obj_local.x" e "obj_local.y"? Esse random(obj_local) não parece tem muito sentido GMLístico não Laughing

Seguinte, você vai precisar de duas funções: instance_number e instance_find. A primeira diz quantos instâncias de um determinado objeto existem e a segunda pega a enésima instância do objeto e retorna a ID dele pra você, para aí então você poder usar tranquilamente pra spawnar os itens. Vai ficar assim:
Código:
isp += 1

if isp=spsp {
    qtd = instance_number(obj_local);
    local_hp = instance_find(obj_local,irandom(qtd-1));
    
    // Loopzinho pra nao spawnar no mesmo local
    while true {
        local_municao = instance_find(obj_local,irandom(qtd-1));
        if local_municao <> local_hp then break;
    }
    
    instance_create(local_hp.x, local_hp.y, HP);
    instance_create(local_municao.x, local_municao.y, Municao);
    isp = 0;
}

Daí ele vai colocar HP e munição aleatoriamente em locais diferentes! E um isp = 0 ali no final pra reiniciar o contador. Creio que deve ser isso que você quer Very Happy
Abraços o/

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum