Conectar-se
Quem está conectado
9 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 9 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 21/03/2010
Número de Mensagens : 345
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

como fazer checar se na posição do mouse não tem nenhum objeto (por código)?

em Ter 28 Fev 2012, 14:31
É que eu tava fazendo um jogo com movimentação pelo mouse. Só que aí me deparei com o problema: o personagem segui o clique do mouse em QUALQUER ponto da tela. Por exemplo, se eu clicasse em um botão, ele seguia em direção ao botão. Então eu queria que ele só seguisse se não houvesse nenhum objeto no local onde eu cliquei. Poderiam me dar o código pra isso? (E sim, necessariamente precisa ser em código, plz) E antes que vocês achem um tópico assim e mandem eu procurar, eu nem sabia o que escrever. Então fiz esse tópico. Ajudem.
avatar
Ranking : Nota A
Data de inscrição : 19/01/2012
Número de Mensagens : 78
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 2

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: como fazer checar se na posição do mouse não tem nenhum objeto (por código)?

em Ter 28 Fev 2012, 14:35
acredito que um...

Código:

if place_free(cursor.x,cursor.y)
{
//codigo de movimentação aqui
}

... Pode resolver. (Não lembro se era "cursor" ou "mouse", então se não der certo tente o outro).
avatar
Ranking : Nota A
Notas recebidas : B-A-A
Data de inscrição : 13/01/2010
Número de Mensagens : 1087
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 30

Prêmios
   : 2
   : 1
   : 0
Ver perfil do usuáriohttp://www.mathaeuz.deviantart.com

Re: como fazer checar se na posição do mouse não tem nenhum objeto (por código)?

em Ter 28 Fev 2012, 14:39
Mas para usar place_free para verificar em um PONTO o objeto que usar o comando deve ter uma mascara de colisão de um ponto, e o objeto a ser clicado deve ser sólido. Mas existe uma função que não precisa desses requerimentos:

A função collision_point(X, Y, OBJ, PRECISO, OUTRAS_INSTANCIAS) verifica se há uma instancia de objeto OBJ no ponto (X,Y) e retorna sua id dentro do jogo(identificação). PRECISO indica se é uma colisão precisa (true ou false) e OUTRAS_INSTANCIAS indica se deve verificar colisão apenas com outras instancias ou se a própria instancia que está usando a função deve ser reconhecida (true ou false).

No caso, para aplicar as posições do mouse, você vai substituir X por mouse_x e Y por mouse_y.

Exemplo de uso:
Código:
//se houver colisão precisa com um objeto_botao na posição (mouse_x, mouse_y) excluindo o objeto atual
if collision_point(mouse_x,mouse_y,objeto_botao,true,true){
//mostrar a mensagem "Clicou"
show_message("Clicou");
};
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: como fazer checar se na posição do mouse não tem nenhum objeto (por código)?

em Ter 28 Fev 2012, 14:55
Outra função que faz isso é instance_position. Não sei porque existem duas funções pra fazer a mesma coisa, mas existem.
A collision_point me parece mais versátil.
avatar
Data de inscrição : 21/03/2010
Número de Mensagens : 345
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: como fazer checar se na posição do mouse não tem nenhum objeto (por código)?

em Ter 28 Fev 2012, 15:08
desculpem por fazer vocês perderam tempo. ja achei oq ue precisava com a função place_empty. Obrigado.
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: como fazer checar se na posição do mouse não tem nenhum objeto (por código)?

em Ter 28 Fev 2012, 16:33
Tem certeza? place_empty tem a mesma restrição de place_free, comentada pelo MatheusReis.
avatar
Data de inscrição : 21/03/2010
Número de Mensagens : 345
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: como fazer checar se na posição do mouse não tem nenhum objeto (por código)?

em Ter 28 Fev 2012, 22:12
@saim escreveu:Tem certeza? place_empty tem a mesma restrição de place_free, comentada pelo MatheusReis.
eu fiquei algum tempo sem mexer no game maker,to meio enferrujado) mas acho que ja usei o place_free. nao tava funcionando. Mas o place_empty funcionou, sem essa historia de mascara (mask). Obrigado. Se voltar a dar errado(pouco provavel) vou dar meu jeito.
avatar
Ranking : Nota B
Notas recebidas : D+B+B+C+A
Data de inscrição : 24/08/2009
Número de Mensagens : 1092
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 31

Prêmios
   : 1
   : 1
   :
Ver perfil do usuário

Re: como fazer checar se na posição do mouse não tem nenhum objeto (por código)?

em Qua 29 Fev 2012, 01:24
@saim escreveu:Tem certeza? place_empty tem a mesma restrição de place_free, comentada pelo MatheusReis.
.Não é não saim.
.Place free verifica se não tem nemhum objeto solido na posição,e place empty verifica se esta vazio,(nem solido e nem não solid),ou seja nada,no place_empty se tiver um objeto não solido ele retorna 0 e no place_free ele retorna 1.E a história da mask não tem nada haver,ele quer que o objeto se mova só se estiver vazio onde foi clicado.

acho que o tópico esta resolvido
avatar
Ranking : Nota B
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 121

Prêmios
   : 1
   : 0
   : 3
Ver perfil do usuário

Re: como fazer checar se na posição do mouse não tem nenhum objeto (por código)?

em Qua 29 Fev 2012, 09:34
Manual traduzido escreveu:place_free (x, y) Retorna se a instância colocada na posição (x, y) está livre de colisão.
Isso normalmente é usado como uma verificação antes de realmente se mudar para a
nova posição.
place_empty (x, y) Retorna se a instância colocada na posição (x, y) encontra com
ninguém. Portanto, esta função leva em conta também instâncias não-sólido.
Repare que as duas funções pegam sua intância, mudam pra posição (x, y) e verificam se existe colisão ali. Não é um ponto, é uma mask colidindo.
A restrição de que eu falei é justamente essa, você pode clicar fora de qualquer objeto e essas funções te retornarem que há colisão ali. Só depende da mask e origem da instância que chama a função.

Bom, se o postador original ficou satisfeito, eu também estou satisfeito. Estou trancando o tópico.
Se quiser reabrir, entre em contato com a moderação.
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum