GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


Problema de colisão

5 participantes

Ir para baixo

Problema de colisão Empty Problema de colisão

Mensagem por Riccardoric Qua 02 Jul 2014, 21:12

Olá, tive um pequeno problema Laughing e acho que algum de voces vão saber responder...
È o seguinte criei um player, um inimigo e uma room.
Eu coloquei que o inimigo segue o player quando ele for perto de 100 centímetros, o problema é que o inimigo consegue atravessar as paredes O.O tentei colocar algo na colisão mas não da certo :/ fiz alguns tutoriais mais também não da :'( se alguém puder mim ajudar ou ver qual o erro, vou colocar aqui embaixo o que coloquei no inimigo
No step coloquei o seguinte código:
Código:
if hspeed>=0
 {
 sprite_index=inimigo_direita
 }
 if hspeed<=0
 {
 sprite_index=inimigo_esquerda
 }
 if vspeed>=0
 {
 sprite_index=inimigo_baixo
 }
 if vspeed<=0
 {
 sprite_index=inimigo_cima
 }
e um outro código :
Código:
if distance_to_object(player)<100 //se o inimigo estiver a menos de 100 centimetros do player
{
move_towards_point(player.x,player.y,3)
}
Não sei se isso pode servir mas ta ai Happy Obrigado pela atenção .
Riccardoric
Riccardoric

Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por biscoito Qua 02 Jul 2014, 21:29

no obj inimigo, coloque um evento de colisão com o bloco chão e o codigo :
Código:
move_contact_solid(direction,12);
vspeed=0;

não esqueça de marcar o obj_chão como solid...
biscoito
biscoito

Data de inscrição : 07/06/2008
Reputação : 3
Número de Mensagens : 181
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Riccardoric Qua 02 Jul 2014, 21:32

Na verdade coloquei chão como background '-'
EDIT//
Tentei colocar o code no Objeto parede, só que quando ele colida com a parede faz como um tele transporte O.o


Última edição por Riccardoric em Qua 02 Jul 2014, 21:35, editado 1 vez(es)
Riccardoric
Riccardoric

Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por biscoito Qua 02 Jul 2014, 21:33

então coloca esse codigo na colisão com o objeto que voce nao quer que ele ultrapasse....


edit: como assim? teletransporta ele pra onde?
biscoito
biscoito

Data de inscrição : 07/06/2008
Reputação : 3
Número de Mensagens : 181
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Riccardoric Qua 02 Jul 2014, 21:42

Tipo quando ele colide com a parede ele vem teletransportado pro outro lado da parede em vez de atravessar
EDIT// deu erro de novo, só que dessa vez ele vem direto em mim e perco


Última edição por Riccardoric em Qua 02 Jul 2014, 21:56, editado 1 vez(es)
Riccardoric
Riccardoric

Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por biscoito Qua 02 Jul 2014, 21:46

tente isso, troque seu codigo por isso:
Código:
if distance_to_object(player)<100 && (place_free(x-4,y)) //se o inimigo estiver a menos de 100 centimetros do player
{
move_towards_point(player.x,player.y,3)
}

EDIT:Acredito que só ira funcionar pra esqerda... então, 2 soluções:
1-Não sei se funciona:
Código:
if distance_to_object(player)<100 && (place_free(x-4,y)) && (place_free(x+4,y)) //se o inimigo estiver a menos de 100 centimetros do player
{
move_towards_point(player.x,player.y,3)
}
2- Você terá que criar variaveis de controle para saber se ele ta indo pra direita ou para a esquerda e ai:
Código:
if distance_to_object(player)<100 && (place_free(x-4,y)) && direita=false//se o inimigo estiver a menos de 100 centimetros do player
{
move_towards_point(player.x,player.y,3)
}
if distance_to_object(player)<100 && (place_free(x+4,y)) && direita=true//se o inimigo estiver a menos de 100 centimetros do player
{
move_towards_point(player.x,player.y,3)
}


Última edição por biscoito em Qua 02 Jul 2014, 21:52, editado 1 vez(es)
biscoito
biscoito

Data de inscrição : 07/06/2008
Reputação : 3
Número de Mensagens : 181
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Witen Qua 02 Jul 2014, 21:48

No lugar de move_towards_point use mp_potential_step
Código:
mp_potential_step(x,y,stepsize,checkall) Esta função deixa a instância seguir um passo para uma posição particular.
Mas neste caso tenta evitar obstáculos. Quando uma instância
colidiria com uma instância sólida (ou qualquer instância quando checkall
é verdade) mudará a direção de movimento para tentar evitar a instância
e movimenta-se assim. Isto não é garantido para trabalhar, mas na
maioria dos casos fáceis isto irá mover a instância efetivamente para um
objetivo. A função retorna se o objetivo foi alcançado, ou não.

Ainda existe a função mp_potential_settings serve para configurar melhor a função anterior
Código:
mp_potential_settings(maxrot,rotstep,ahead,onspot) Relativa
a função anterior que trabalha usando vários parâmetros que podem ser
mudados usando esta função. Globalmente o método trabalha como
segue. Tenta mover diretamente para o objetivo primeiro. Olha vários
passos à frente que pode ser configurado à frente com o parâmetro
(padrão 3). Reduzindo este valor significam que a instância iniciará
direção variável posteriormente. Aumentando significa que iniciará
direção variável mais cedo. Se este teste conduz a uma colisão que inicia
olhando mais para as direções esquerdas e direitas da melhor direção.
Faz isto em passos de rotstep de tamanho (padrão 10). Reduzindo isto
dá para a instância mais possibilidades de movimento, mas ficará mais
lento. O parâmetro maxrot é um pouco mais difícil explicar. A instância
tem uma direção atual. maxrot (padrão 30) indica quanto é permitido
para mudar sua direção atual em um passo. Então até mesmo se pode
mover, por exemplo, diretamente para a meta só se fará assim se não
viola esta mudança máxima de direção. Se você faz o maxrot maior que
a instância pode mudar em cada passo. Isto se fará mais fácil de achar
um caminho curto, mas o caminho será mais feio. Se você fornecer o
valor menor do caminho será mais macio, mas poderia levar desvios
mais longos (e às vezes até mesmo não acha a meta). Quando nenhum
passo pode ser feito o comportamento depende do valor do parâmetro
onspot. Se onspot é verdade (o valor padrão), a instância girará em seu
lugar pelo valor indicado com maxrot. Se for falso não moverá nada.
Fixando isto para falso é útil para, por exemplo, carros, mas reduz a
chance de achar um caminho.

OBS: Marque os obstaculos como Solido
Witen
Witen

Games Ranking : Sem avaliações

Data de inscrição : 23/05/2012
Reputação : 36
Número de Mensagens : 515
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.wibix.webs.com

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Riccardoric Qui 03 Jul 2014, 09:38

Deu erro :/:
Acho que não entendi direito como funciona e se preciso trocar algo... "Witen"
Riccardoric
Riccardoric

Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Thomaz Qui 03 Jul 2014, 09:50

O GMS está acusando erro de variável sem valor:

Código:
Push :: Execution Error - Variable Get -1.checkall(100000, -1)


O que indica que você simplesmente copiou e colou o código dele. =/

Onde ele digitou checkall, são parâmetros da função que você está usando. Nesse caso, a função está pedindo um valor booleano(True ou false).

Substitua Checkall por true (Caso você queira que todos os objetos sejam checados na hora de movimentar) ou false (Caso você queira apenas os objetos sólidos).


Uma dica é apertar f1 e ler o que a função faz! Smile

http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/motion%20planning/mp_potential_step.html
Thomaz
Thomaz

Games Ranking : Nota A

Notas recebidas : A
Data de inscrição : 13/10/2011
Reputação : 4
Número de Mensagens : 106
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://bigleafeater.tumblr.com/

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Riccardoric Qui 03 Jul 2014, 10:39

Agora deu erro no Stepsize
Código:
mp_potential_step(x,y,stepsize,true)
desculpem mas sou ainda nub  sorrindo é para trocar com o que?
EDIT// Ah não entendi para que serve, n tinha percebido o link la embaixo Vlw Happy mas mesmo assim ele consegue atravessar as paredes... mas não tem problema sei como usar esse bug ;) vlw para todos
Riccardoric
Riccardoric

Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Thomaz Sex 04 Jul 2014, 07:47

Você marcou o obj_parede como sólido?

sobre stepSize coloque a 'velocidade' em píxeis que você quer que o player se movimente.
Thomaz
Thomaz

Games Ranking : Nota A

Notas recebidas : A
Data de inscrição : 13/10/2011
Reputação : 4
Número de Mensagens : 106
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://bigleafeater.tumblr.com/

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Riccardoric Sex 04 Jul 2014, 12:49

Eu já consegui esqueci de avisar, graças a voces, Vlw Happy
Riccardoric
Riccardoric

Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Witen Sáb 05 Jul 2014, 11:06

Riccardoric escreveu:Agora deu erro no Stepsize
Código:
mp_potential_step(x,y,stepsize,true)
desculpem mas sou ainda nub  sorrindo é para trocar com o que?
EDIT// Ah não entendi para que serve, n tinha percebido o link la embaixo Vlw Happy mas mesmo assim ele consegue atravessar as paredes... mas não tem problema sei como usar esse bug ;) vlw para todos

O amigo foi mal esqueci de checar se você tinha resolvido sua duvida.
como o próprio Thomaz disse você tem que preencher os argumentos como você vai la e simplesmente cola o que te passei ><"
OBS: se ainda continua atravessando as paredes e porque você não marcou a parede ou qualquer obstaculo que seja como solido, ainda falei que tinha que fazer isto ><
Se tiver qualquer outra duvida pode falar Happy
Witen
Witen

Games Ranking : Sem avaliações

Data de inscrição : 23/05/2012
Reputação : 36
Número de Mensagens : 515
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.wibix.webs.com

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Riccardoric Sáb 05 Jul 2014, 14:26

Vlw man mas consegui agora Smile o unico problema é que agora quando ele encosta na parede ele fica meio bloqueado mas acho que isso é porque ele segue o player então se tiver alguma coisa no meio entre eles, o inimigo vai ficar parado tem um jeito para desviar os objetos mas não sei como se faz sorrindo
EDIT// eu fiz isso mas é outra a questão se tipo tiver o inimigo e o player um na frente do outro e um objeto no meio. o inimigo não vai dar a volta do objeto para pegar o player Smile é isso que estava falando


Última edição por Riccardoric em Sáb 05 Jul 2014, 14:49, editado 1 vez(es)
Riccardoric
Riccardoric

Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por WellingtonBecker Sáb 05 Jul 2014, 14:39

Riccardoric escreveu:Vlw man mas consegui agora Smile o unico problema é que agora quando ele encosta na parede ele fica meio bloqueado mas acho que isso é porque ele segue o player então se tiver alguma coisa no meio entre eles, o inimigo vai ficar parado tem um jeito para desviar os objetos mas não sei como se faz sorrindo

Adiciona ao STEP do inimigo o evento BOUNCE, para evitar que ele fique preso na colisão.
WellingtonBecker
WellingtonBecker

Games Ranking : Nota D

Notas recebidas : D
Data de inscrição : 09/05/2013
Reputação : 105
Número de Mensagens : 824
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Witen Sáb 05 Jul 2014, 15:17

mp_potential_step(x,y,stepsize,checkall)
Mude o checkall para true se continuar não contornando, você terá que mudar a função mp_potential_settings de forma que melhore a movimentação da instancia, isso é um pouco mais complicado por isso eu aconselho a ler bem a descrição que postei sobre a função...
Witen
Witen

Games Ranking : Sem avaliações

Data de inscrição : 23/05/2012
Reputação : 36
Número de Mensagens : 515
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.wibix.webs.com

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Riccardoric Sáb 05 Jul 2014, 17:27

Já ta em true vou te mostrar o code
Código:
mp_potential_step(x,y,5,true)
Riccardoric
Riccardoric

Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios : Problema de colisão Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Problema de colisão Empty Re: Problema de colisão

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos