Obrigado por visitar a The Game Makers Brasil 😁 Use o fórum de Dúvidas para fazer perguntas. Se está em busca de aprender dê uma olhada nos tutoriais.

Draw em cada Instance

Perguntas? A comunidade te ajuda a resolver.
Avatar do usuário
kzards
Novato
Novato
Reações: 0
Mensagens: 7

Draw em cada Instance

Mensagem por kzards » Qui Nov 03, 2016 11:11 am

Oi gente, estou com um probleminha envolvendo Draw e Instances.

Crie dois objetos, um objeto chamado obj_dano e um chamado objeto_controle
 Create do Controle coloquei

Código: Selecionar todos

atacou  = false
global.dano  = 0
No step

Código: Selecionar todos

if mouse_check_button(mb_left) {
atacou = true
}
if atacou = true {
instance_create(mouse_x,mouse_y, obj_dano)
global.dano = random(10)
}
No Draw do obj_dano

Código: Selecionar todos

if instance_exists(dano) {

draw_text(x,y,global.dano)
}
É isso, o problema é que, eu gostaria que o Draw fosse feito em cada uma das instancias criadas do obj_dano, mas ele só aparece na primeira que eu criei, não sei se tem que usar algo tipo instance_id ou instance_find. HELP! :fight:

Avatar do usuário
Rodrigo Santiago
Colaborador
Colaborador
Reações: 0
Mensagens: 273

Re: Draw em cada Instance

Mensagem por Rodrigo Santiago » Qui Nov 03, 2016 11:17 am

Bem, neste caso parece que você não soube usar muito bem instance_exists. Este método retorna se o objeto passado nele existe na room, ou seja , você deve passar um id de objeto (que vc pega no instance_create ou no evento de colisão com other

Tente o seguinte :
Create do Objeto Dano :

Código: Selecionar todos

dano = 0; 
Draw do Objeto Dano :

Código: Selecionar todos

draw_text(x,y,dano);
Step do Objeto Controler :

Código: Selecionar todos

if (mouse_check_button(mb_left)) {
  atacou = true
}
if (atacou = true) {
var tempId = instance_create(mouse_x,mouse_y, obj_dano)
tempId.dano = random(10); // aki estou acessando aquela variavel que criei, apenas nesse único objeto
}
Espero que tenha ajudado, mas, cuidado, no seu codigo parece q depois de clicar ele vai criar infinitos danos !!! Será que é isso que você quer?

Não seria melhor :

Código: Selecionar todos

if (mouse_check_button(mb_left)) {
  var tempId = instance_create(mouse_x,mouse_y, obj_dano)
  tempId.dano = random(10); // aki estou acessando aquela variavel que criei, apenas nesse único objeto
}

Avatar do usuário
kzards
Novato
Novato
Reações: 0
Mensagens: 7

Re: Draw em cada Instance

Mensagem por kzards » Qui Nov 03, 2016 11:31 am

Cara muito obrigado, vou testar aqui!!

Sobre esse infinitos danos foi porque esqueci de escrever aí no codigo  atacou = false. pra fazer essa variável se ativar a cada clique e não com um clique só.

Edit:
na linha 

Código: Selecionar todos

var tempId = instance_create(mouse_x,mouse_y, obj_dano)
[font={defaultattr}]


tá dando unexpected symbol in expression, ali onde começa a palavra instance, só que se eu mudar a varivavel tempId de local pra global o problema some, não to entendo porque isso tá acontecendo.[/font]

Avatar do usuário
cledson252010
Novato
Novato
Reações: 0
Mensagens: 11
Localização: Manaus

Re: Draw em cada Instance

Mensagem por cledson252010 » Qui Nov 03, 2016 12:43 pm

Qual a versão do Game Maker que você utiliza, porque no Game Maker 8 não dá para atribuir um valor à uma variável tipo var na mesma linha.
Tente o seguinte:
Ao invés de usar global, você cria a variável, salta uma linha, então atribui o respectivo valor.
Exemplo:

Código: Selecionar todos

var tempId;
tempId = instance_create(mouse_x,mouse_y,obj_dano);
Eu sofria também com isso...

Avatar do usuário
kzards
Novato
Novato
Reações: 0
Mensagens: 7

Re: Draw em cada Instance

Mensagem por kzards » Sex Nov 04, 2016 10:25 am

Não sabia disso, hehe, eu uso o 8 sim, preciso mudar pro studio urgentemente, o problema é que o projeto tá muito adiantado já, seria um dia todo só pra isso, criem um programa pra fazer essa transferência heuheuheu.
Muito obrigado tá? :feliz2:

Edit:

Depois de implementar o que foi dito acabei com um problema reverso. Agora ao invés do Draw ser feito apenas na primeira instancia do objeto ele é feito somente na última, então se eu criar 3 ele só aparece na terceira, sabe como faço pra deixar ele fixo em cada instancia?

Responder

Quem está online

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