Página 1 de 1
Player não ficar preso em um obstáculo
Enviado: Sex Jul 01, 2016 8:18 pm
por Ismaelgames7
Olá
Como eu faço para o meu player não ficar preso em um obstáculo?
Não da para explicar direito, vcs vendo a engine é melhor, aqui:
... sp=sharing
O que eu não to conseguindo fazer é quando o meu obstáculo voltar a ficar visível e sólido e se o player estiver encima desse obstáculo, o obstáculo vai empurrar o player pra trás.
Re: Player não ficar preso em um obstáculo
Enviado: Sex Jul 01, 2016 8:32 pm
por Adilson
tenta esse script q criei
cria um script no seu projeto com nome "contact" e adicione isso a ele
Código: Selecionar todos
x=xprevious;
y=yprevious;
if place_meeting(x,y,argument0)
{
t=150;
mx=x;
my=y;
c[0]=0;
for(i=1;i<=t;i+=1)
{
x+=1;
c[0]+=1;
if not(place_meeting(x,y,argument0))
i=t+1;
}
x=mx;
c[1]=0;
for(i=1;i<=t;i+=1)
{
y-=1;
c[1]+=1;
if not(place_meeting(x,y,argument0))
i=t+1;
}
y=my;
c[2]=0;
for(i=1;i<=t;i+=1)
{
x-=1;
c[2]+=1;
if not(place_meeting(x,y,argument0))
i=t+1;
}
x=mx;
c[3]=0;
for(i=1;i<=t;i+=1)
{
y+=1;
c[3]+=1;
if not(place_meeting(x,y,argument0))
i=t+1;
}
y=my;
mn=min(c[0],c[1],c[2],c[3]);
if mn=c[0]
{
x+=(c[0]+1);
if eff_anim=0
hspeed=0;
}
if mn=c[1]
{
y-=(c[1]+1);
if eff_anim=0
vspeed=0;
}
if mn=c[2]
{
x-=(c[2]+1);
if eff_anim=0
hspeed=0;
}
if mn=c[3]
{
y+=(c[3]+1);
if eff_anim=0
vspeed=0;
}
}
else
{
t=speed_max;
mx=x;
for(i=0;i<t;i+=1)
{
x+=1;
if place_meeting(x,y,argument0)
{
i=t;
mx=x-1;
if eff_anim=0
hspeed=0;
}
}
x=mx;
for(i=0;i<t;i+=1)
{
x-=1;
if place_meeting(x,y,argument0)
{
i=t;
mx=x+1;
if eff_anim=0
hspeed=0;
}
}
x=mx;
my=y;
for(i=0;i<t;i+=1)
{
y+=1;
if place_meeting(x,y,argument0)
{
i=t+1;
my=y-1;
if eff_anim=0
vspeed=0;
}
}
y=my;
for(i=0;i<t;i+=1)
{
y-=1;
if place_meeting(x,y,argument0)
{
i=t+1;
my=y+1;
if eff_anim=0
vspeed=0;
}
}
y=my;
}
e depois coloque no player de preferencia no step
contact(obstaculo)
e RETTIRE o solid do obj da obstaculo
Re: Player não ficar preso em um obstáculo
Enviado: Sex Jul 01, 2016 8:53 pm
por Ismaelgames7
Adilson escreveu:tenta esse script q criei
cria um script no seu projeto com nome "contact" e adicione isso a ele
Código: Selecionar todos
x=xprevious;
y=yprevious;
if place_meeting(x,y,argument0)
{
t=150;
mx=x;
my=y;
c[0]=0;
for(i=1;i<=t;i+=1)
{
x+=1;
c[0]+=1;
if not(place_meeting(x,y,argument0))
i=t+1;
}
x=mx;
c[1]=0;
for(i=1;i<=t;i+=1)
{
y-=1;
c[1]+=1;
if not(place_meeting(x,y,argument0))
i=t+1;
}
y=my;
c[2]=0;
for(i=1;i<=t;i+=1)
{
x-=1;
c[2]+=1;
if not(place_meeting(x,y,argument0))
i=t+1;
}
x=mx;
c[3]=0;
for(i=1;i<=t;i+=1)
{
y+=1;
c[3]+=1;
if not(place_meeting(x,y,argument0))
i=t+1;
}
y=my;
mn=min(c[0],c[1],c[2],c[3]);
if mn=c[0]
{
x+=(c[0]+1);
if eff_anim=0
hspeed=0;
}
if mn=c[1]
{
y-=(c[1]+1);
if eff_anim=0
vspeed=0;
}
if mn=c[2]
{
x-=(c[2]+1);
if eff_anim=0
hspeed=0;
}
if mn=c[3]
{
y+=(c[3]+1);
if eff_anim=0
vspeed=0;
}
}
else
{
t=speed_max;
mx=x;
for(i=0;i<t;i+=1)
{
x+=1;
if place_meeting(x,y,argument0)
{
i=t;
mx=x-1;
if eff_anim=0
hspeed=0;
}
}
x=mx;
for(i=0;i<t;i+=1)
{
x-=1;
if place_meeting(x,y,argument0)
{
i=t;
mx=x+1;
if eff_anim=0
hspeed=0;
}
}
x=mx;
my=y;
for(i=0;i<t;i+=1)
{
y+=1;
if place_meeting(x,y,argument0)
{
i=t+1;
my=y-1;
if eff_anim=0
vspeed=0;
}
}
y=my;
for(i=0;i<t;i+=1)
{
y-=1;
if place_meeting(x,y,argument0)
{
i=t+1;
my=y+1;
if eff_anim=0
vspeed=0;
}
}
y=my;
}
e depois coloque no player de preferencia no step
contact(obstaculo)
e RETTIRE o solid do obj da obstaculo
Eu não entendi... tbm testei esse código e não funcionou .-.
Pelo visto é algum muito pouco mais complicado de se programar, alguém pode meu explicar como faço isso para eu tentar imaginar o código pf
Re: Player não ficar preso em um obstáculo
Enviado: Sex Jul 01, 2016 8:59 pm
por Adilson
seu link nao leva pro download, arruma o link q arrumo o projeto pa vc
Re: Player não ficar preso em um obstáculo
Enviado: Sáb Jul 02, 2016 4:43 pm
por Ismaelgames7
Aqui está o link (tomara q esse funcione):
... h5WjA/view