Página 1 de 1

Mudar depth de uma instance

Enviado: Seg Fev 27, 2017 9:07 am
por Lunion4saken
Bom dia,
Estou a algum tempo a tentar mudar a depth de instances, ou seja se o meu personagem estiver perto dessa instance ela ficara com depth 300 estando por baixo do background. Se estiver longe ela fica com depth -1 para ficar em cima de tudo.

Código: Selecionar todos

if block1=0{
 block1=instance_nearest(x,y,obj_fog)
 block1.depth=300
}else{
 block1.depth=-1
 block1=instance_nearest(x,y,obj_fog)
 block1.depth=300
}
Eu fiz desta maneira apenas para o bloco que está debaixo de mim, sendo que a primeira parte do código é para não bugar. Sempre que tento usa-lo diz que:

Pop :: Execution Error - Variable references invalid object (-4).depth

Eu penso que não de para usar o comando depth desta maneira. Atualmente estou a experimentar o gamemaker 2, mas tentei também na versão 1.4 e não resultou. 

Alguém sabe que código é que eu deveria tentar para isto resultar?

Re: Mudar depth de uma instance

Enviado: Seg Fev 27, 2017 3:05 pm
por TootyDev
Esse Tópico ficou meio confuso mas pelo o que eu entendi você quer que se o personagem chegar perto ele fique com o Depth de 300 e se ficar longe fique -1

Tem 2 Tipos de fazer essa checagem:
1(Por meio de Colisão):

Código: Selecionar todos

if place_meeting(x+4,y,obj_fog){
block1.depth = 300;
}
else if place_meeting(x-4,y,obj_fog){
block1.depth = 300;
}
else if place_meeting(x,y-4,obj_fog){
block1.depth = 300;
}
else if place_meeting(x,y+4,obj_fog){
block1.depth = 300;
}else{
block.depth = -1;
}
2(Por meio do distance_to_object):

Código: Selecionar todos

if distance_to_object(obj_fog) < 4{
block1.depth = 300;
}else{
block1.depth = -1;
}

Re: Mudar depth de uma instance

Enviado: Ter Fev 28, 2017 7:45 am
por Lunion4saken
Eu já usei esse método com o block1=instance_nearest(x,y,obj_fog), o problema é que não me esta a deixar usar o comando block1.depth, dando o erro Pop :: Execution Error - Variable references invalid object (-4).depth

Re: Mudar depth de uma instance

Enviado: Ter Fev 28, 2017 6:01 pm
por TootyDev
Tente não usar números dentro de nomes de variáveis, tente usar os arrays ou mude o nome da variável de block1 para block_um e veja se o erro desaparece.

Re: Mudar depth de uma instance

Enviado: Qua Mar 01, 2017 8:23 am
por Lunion4saken
Tentei e não é esse o problema está a dar o mesmo erro.

Re: Mudar depth de uma instance

Enviado: Qua Mar 01, 2017 9:21 am
por Dust
ja tentou fazer com distance_to_object(objeto_x)? Algo do tipo:

Código: Selecionar todos

if distance_to_object(obj_player)<=10 {depth=300} else {depth=-1}

Re: Mudar depth de uma instance

Enviado: Qua Mar 01, 2017 11:19 am
por junior.rod2
Estranho esse erro, já checou se o tal do obj_fog esta na room antes de chamar esse código ai.
Se a resposta do amigo acima não resolver o problema, considere postar o editável do projeto para a gente dar uma olhada.

Re: Mudar depth de uma instance

Enviado: Qua Mar 01, 2017 2:40 pm
por Lunion4saken
Thx junior.rod2, esqueci-me que o obj_fog é criado no room atravez do obj_creation. e no momento em que o player é criado o obj_fog ainda não existe, bastou criar uma variavel que diz que não fazes nada até o obj_creation terminar.

Dust isso resultava, mas teria 100+ objectos a cada step a ver se estavam ou não a x pixeis do meu personagens o que causaria bastante lag.

Re: Mudar depth de uma instance

Enviado: Qua Mar 01, 2017 3:28 pm
por junior.rod2
Fico feliz que o seu problema foi resolvido, é incrível com as vezes deixamos passar algo pequeno que acaba prejudicando o a execução do projeto inteiro.
Bom, problema resolvido e tópico trancado...