Estoy intentando poner un background a mi juego 2D y quiero que este esté estático siempre en las mismas coordenadas aunque el jugador avance por el nivel. Para ello tengo un objeto "controller" que se encarga de esto y otras cosas. Para ello he usado en el código STEP:

background_x[0]=view_xview[0];
background_y[0]=view_yview[0];


Pero el problema es que el background se queda un poco atrás cuando el jugador avanza y no se cuadra en la pantalla hasta que el jugador se para. Es como si tuviera una latencia o una aceleración a la hora de desplazarse y queda horriblemente mal.



Porque no creas un sprite con ese backgraund de las mismas medidas y luego haces un objeto sin ninguna caracteristica  y lo colocas donde quieres ? , en plan si quieres que ese background solo este en una zona determinada colocas el objeto ahí y en la profundidad del objeto pones 2 o asi para qe este en el fondo y no se sobreponga con otro objeto .Si lo que quieres es que el objeto te siga en una zona de la pantalla , en el vento end step añades el código :

x = view_xview+nº;
y = view_yviex+nº;

donde pone nº pones un numero de cordenadas y vas probando hasta que te quede donde quieres .

Yo se.lo que tu dices que cuando uno.se mueve el background  también pero con un percance de.unos píxeles .lo que tienes que.hacer es dibujaron en la pantalla y para eso utilizamos el DRAW GUI y verás que.funciona
x = view_xview+32;
y = view_yviex+32;

El.32 es tu coordenada ok no se te olvide

Qué es lo que hace Draw GUI exactamente? Osea que debería crear un objeto invisible con una gran profundidad y que dibuje el sprite en pantalla en todo momento?

Ok, he hecho lo de crear el objeto que dibuje el fondo en pantalla pero me aparece el mismo error, el fondo no se está quieto
El objeto tiene lo siguiente:

CREATE
X=0;
Y=0;


STEP
X=view_xview[0];
Y=view_yview[0];


DRAW
draw_sprite_ext(spr_bk_beach,image_index,X,Y,4,4,0,c_white,1)

#5 Abril 06, 2014, 07:04:12 PM Ultima modificación: Abril 06, 2014, 07:07:38 PM por ocarina
amigo pon solo view_xview;
y view_yview;
sin los [  ]



PURA VIDA




#7 Abril 06, 2014, 09:40:09 PM Ultima modificación: Abril 06, 2014, 10:28:13 PM por penumbra
No sé si vaya a funcionar, pero y si usas esto en [DRAW] del controlador?

draw_background(mi_fondo, view_xview[0], view_yview[0])

A algunos les funciona y a otros no, pero puedes probar a activar la opción
"Use synchronization to avoid tearing " En los ajustes generales, pestaña windows.

EDITADO:
La verdad no entiendo por qué quieres hacer esto, pues si el fondo siempre queda anclado a la view, el efecto es que todo es estático, parece que el jugador nunca se mueve (aunque sí se mueva) en la pantalla. Acabo de probar

draw_background(mi_fondo, view_xview[0], view_yview[0])

en GM8.1 y funciona bien, no hay problemas de retraso en la imagen

Muchas gracias penumbra, de esta manera responde perfectamente.  :)