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
» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Ontem à(s) 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16


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