Entrar
Últimos assuntos
» Como ajustar velocidade de cada frame da animação no game makerpor 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
Página 1 de 1
Problema de colisão
Olá, tive um pequeno problema 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:
È 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
}
- 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)
}
Riccardoric- Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
no obj inimigo, coloque um evento de colisão com o bloco chão e o codigo :
não esqueça de marcar o obj_chão como solid...
- Código:
move_contact_solid(direction,12);
vspeed=0;
não esqueça de marcar o obj_chão como solid...
biscoito- Data de inscrição : 07/06/2008
Reputação : 3
Número de Mensagens : 181
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
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
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- Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
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?
edit: como assim? teletransporta ele pra onde?
biscoito- Data de inscrição : 07/06/2008
Reputação : 3
Número de Mensagens : 181
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
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
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- Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
tente isso, troque seu codigo por isso:
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)) //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)
}
- 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- Data de inscrição : 07/06/2008
Reputação : 3
Número de Mensagens : 181
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
No lugar de move_towards_point use mp_potential_step
Ainda existe a função mp_potential_settings serve para configurar melhor a função anterior
OBS: Marque os obstaculos como Solido
- 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
Re: Problema de colisão
- Deu erro :/:
___________________________________________
###########################################################################################
FATAL ERROR in
action number 2
of Step Event0
for object Inimigo:
Push :: Execution Error - Variable Get -1.checkall(100000, -1)
at gml_Object_Inimigo_StepNormalEvent_2 (line 1) - mp_potential_step(x,y,stepsize,checkall)
#####################################################################
Riccardoric- Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
O GMS está acusando erro de variável sem valor:
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!
http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/motion%20planning/mp_potential_step.html
- 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!
http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/motion%20planning/mp_potential_step.html
Re: Problema de colisão
Agora deu erro no Stepsize
EDIT// Ah não entendi para que serve, n tinha percebido o link la embaixo Vlw mas mesmo assim ele consegue atravessar as paredes... mas não tem problema sei como usar esse bug ;) vlw para todos
- Código:
mp_potential_step(x,y,stepsize,true)
EDIT// Ah não entendi para que serve, n tinha percebido o link la embaixo Vlw mas mesmo assim ele consegue atravessar as paredes... mas não tem problema sei como usar esse bug ;) vlw para todos
Riccardoric- Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
Você marcou o obj_parede como sólido?
sobre stepSize coloque a 'velocidade' em píxeis que você quer que o player se movimente.
sobre stepSize coloque a 'velocidade' em píxeis que você quer que o player se movimente.
Re: Problema de colisão
Eu já consegui esqueci de avisar, graças a voces, Vlw
Riccardoric- Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
Riccardoric escreveu:Agora deu erro no Stepsizedesculpem mas sou ainda nub é para trocar com o que?
- Código:
mp_potential_step(x,y,stepsize,true)
EDIT// Ah não entendi para que serve, n tinha percebido o link la embaixo Vlw 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
Re: Problema de colisão
Vlw man mas consegui agora 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
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 é isso que estava falando
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 é isso que estava falando
Última edição por Riccardoric em Sáb 05 Jul 2014, 14:49, editado 1 vez(es)
Riccardoric- Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
Riccardoric escreveu:Vlw man mas consegui agora 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
Adiciona ao STEP do inimigo o evento BOUNCE, para evitar que ele fique preso na colisão.
WellingtonBecker- Games Ranking :
Notas recebidas : D
Data de inscrição : 09/05/2013
Reputação : 105
Número de Mensagens : 824
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Problema de colisão
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...
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...
Re: Problema de colisão
Já ta em true vou te mostrar o code
- Código:
mp_potential_step(x,y,5,true)
Riccardoric- Data de inscrição : 17/06/2014
Reputação : 34
Número de Mensagens : 206
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» colisão de queda após outra colisão dando problema
» Problema com colisão
» problema com colisão
» Problema com Colisão
» Problema com colisão e_e
» Problema com colisão
» problema com colisão
» Problema com Colisão
» Problema com colisão e_e
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|