dopo un sacco di tempo eccomi a qua a chiedervi qualche consiglio
Sto realizzando un piccolo gioco 2d(in visuale dall'alto) e programmando la visuale del nemico,il suo raggio d'azione,ho sfruttato il teorema di pitagora(per i muri)in modo tale che la lunghezza della collision_line cambi in base alla distanza con il muro con cui collide...e sembra che funzioni,ma mentre si sposta ad ogni 2/3 step sorpassa il muro
riuscite a darmi un consiglio su come risolvere?
in step event ho messo:
Codice: Seleziona tutto
{
if collision_line(x,y,XX,YY,obj2,1,0){
get_id=collision_line(x,y,XX,YY,obj2,1,0)// dammi l'id del obj con cui collidi
collido=1//collisione di tipo 1
A=x-get_id.x//differenza tra x e x di obj2
B=YY-y//differenza tra y e YY(punto Y finale della linea di collisione)
C=(A*A)+(B*B)//A^2+B^2
D=sqrt(C)//quadrato di C
lun=D// lunghezza è uguale al quadrato di C
ny=get_id.y//solo per disegnare linea
nx=get_id.x//solo per disegnare linea
sx=lengthdir_x(lun,a)//posizione da punto 0 di x distante 'lun' con direction 'a'
sy=lengthdir_y(lun,a)//posizione da punto 0 di y distante 'lun' con direction 'a'
XX=x+sx //posizione finale Xlinea
YY=y+sy //posizione finale Ylinea
}else{if collido!=2 {collido=0}}
if collision_line(x,y,XX,YY,obj,1,0){
get_id=collision_line(x,y,XX,YY,obj,1,0)// dammi l'id del obj con cui collidi
collido=2//collisione di tipo 2
A=XX-x //differenza tra x e XX(punto X finale della linea di collisione)
B=y-get_id.y //differenza tra y e y di obj
C=(A*A)+(B*B) //A^2+B^2
D=sqrt(C)//quadrato di C
lun=D // lunghezza è uguale al quadrato di C
sx=lengthdir_x(lun,a)//posizione da punto 0 di x distante 'lun' con direction 'a'
sy=lengthdir_y(lun,a)//posizione da punto 0 di y distante 'lun' con direction 'a'
XX=x+sx //posizione finale XX
YY=y+sy//posizione finale YY
} else {if collido!=1 {collido=0}}
if collido=0 {lun=300
sx=lengthdir_x(lun,a)
sy=lengthdir_y(lun,a)
XX=x+sx
YY=y+sy}
}