Septiembre 20, 2015, 08:27:02 PM Ultima modificación: Septiembre 20, 2015, 10:00:27 PM por Jaume
Hola,

pongo en antecedentes:  tengo un juego empezado (estoy aprendiendo),  he usado codigo de Penumbra para crear una estructura con un fondo, una vista con el Hud y una vista mas grande con la zona de juego,  en la zona de juego tengo una room. 3000x3000 de la cual muestro 700x700.  y la vista esta definida para que siga al jugador
También he redefinido el puntero del mouse usando un sprite que he dibujado.
Hasta aquí todo funciona bién.
Pero pierdo el puntero del mouse.  si me salgo del area de juego al ser tan grande la room se pierde el puntero.
Como puede hacer para que no se salga el puntero?
Gracias por adelantado.

Lo primero que se me ocurre es usar un objeto que tuviera la función de puntero, el cual estaría limitado a moverse dentro de la vista. Si este objeto intenta salir por alguno de los bordes de la vista, su movimiento se detiene, por ejemplo, para limitar el movimiento haría algo como:
[gml]
x = clamp(mouse_x, view_xview[1], view_xview[1] + view_wview[1])
y = clamp(mouse_y, view_yview[1], view_yview[1] + view_hview[1])
[/gml]
Esto hará que el objeto siga al puntero real sólo dentro de los límites de la vista 1. Si el puntero real abandona esos límites, el objeto se queda inmóvil en alguno de los bordes de la vista 1

  Ya tengo un objeto raton.  He aplicado tu código y me funciona perfectamente con el margen izquierdo y el margen superior, pero no con el margen derecho y el inferior.  Voy a jugar con esto a ver si encuentro la manera.

Gracias

Prueba a usar las variables de puerto view_xport[] y view_wport[] en lugar de las de la vista.

#4 Septiembre 20, 2015, 11:16:40 PM Ultima modificación: Septiembre 20, 2015, 11:32:41 PM por Jaume
Ya lo tengo arreglado, con un pequño codigo controlo los margenes derecho y inferior.  Gracias por todo.

No me acaba de funcionar bién con tu codigo, supongo que por la manera como tengo hechas las views.

Ya lo tengo arreglado aunque tu codigo me parece mas elegante.

Gracias por todo.

Acabo de probarlo, modificándolo así me funciona sin problema:
[gml]
x = clamp(device_mouse_raw_x(0), view_xview[1], view_xview[1] + view_wview[1])
y = clamp(device_mouse_raw_y(0), view_yview[1], view_yview[1] + view_hview[1])
[/gml]

y en draw del objeto puntero
[gml]if (view_current == 1)  draw_self()[/gml]