Página 1 de 1

Draw em cada Instance

Enviado: Qui Nov 03, 2016 11:11 am
por kzards
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:

Re: Draw em cada Instance

Enviado: Qui Nov 03, 2016 11:17 am
por Rodrigo Santiago
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
}

Re: Draw em cada Instance

Enviado: Qui Nov 03, 2016 11:31 am
por kzards
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]

Re: Draw em cada Instance

Enviado: Qui Nov 03, 2016 12:43 pm
por cledson252010
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...

Re: Draw em cada Instance

Enviado: Sex Nov 04, 2016 10:25 am
por kzards
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?