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

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

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

Mensagem por jpaulo 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.

jpaulo

Número de Mensagens : 345
Data de inscrição : 21/03/2010
Reputação : 0
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 checar se na posição do mouse não tem nenhum objeto (por código)?

Mensagem por Doritos555 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).

Doritos555

Ranking : Nota A
Número de Mensagens : 78
Idade : 20
Data de inscrição : 19/01/2012
Reputação : 2
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 checar se na posição do mouse não tem nenhum objeto (por código)?

Mensagem por MatheusReis 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");
};

MatheusReis

Ranking : Nota A
Número de Mensagens : 1087
Idade : 23
Data de inscrição : 13/01/2010
Notas recebidas : B-A-A
Reputação : 30
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 0

http://www.mathaeuz.deviantart.com

Voltar ao Topo Ir em baixo

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

Mensagem por saim 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.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

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

Mensagem por jpaulo 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.

jpaulo

Número de Mensagens : 345
Data de inscrição : 21/03/2010
Reputação : 0
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 checar se na posição do mouse não tem nenhum objeto (por código)?

Mensagem por saim em Ter 28 Fev 2012, 16:33

Tem certeza? place_empty tem a mesma restrição de place_free, comentada pelo MatheusReis.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

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

Mensagem por jpaulo 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.

jpaulo

Número de Mensagens : 345
Data de inscrição : 21/03/2010
Reputação : 0
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 checar se na posição do mouse não tem nenhum objeto (por código)?

Mensagem por Thyago 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

Thyago

Ranking : Nota B
Número de Mensagens : 1092
Idade : 30
Data de inscrição : 24/08/2009
Notas recebidas : D+B+B+C+A
Reputação : 31
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 1
   :

Voltar ao Topo Ir em baixo

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

Mensagem por saim 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.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

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

Mensagem por Conteúdo patrocinado Hoje à(s) 18:17


Conteúdo patrocinado


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