Buenas makeros, bueno, tengo un problemilla ahora mismo que he intentado solucionar por mi mismo, pero dado mi escaso conocimiento todavía sobre Game Maker y programación en general no he podido arreglar.

Básicamente lo que necesito es saber como guardar la posición de un objeto en una variable al hacer click en algo (la parte de los clicks y todo eso no es problema). He estado probando varias cosas que pensaba que funcionarían pero nada, y no tengo ni idea.

Si necesitáis algún tipo de información sobre el código que tengo o algo así para poder ayudarme decidlo y lo pongo, y muchas gracias de antemano ^^

Suponiendo que hay un objeto obj_ controlador, que tiene unas variables xx y yy en donde se guardará la posición del objeto obj_jugador, y otro objeto obj_botón, que es donde se hace click para guardar las variables

[CREATE obj_controlador][gml]
xx = -1
yy = -1[/gml]

[MOUSE LEFT PRESSED obj_boton][gml]
obj_controlador.xx = obj_jugador.x           //Guardar "x" del jugador en "xx" del controlador
obj_controlador.yy = obj_jugador.y           //Guardar "y" del jugador en "yy" del controlador[/gml]

#2 Enero 20, 2015, 08:26:56 PM Ultima modificación: Enero 20, 2015, 08:43:02 PM por Loncha
Lo he estado probando y funciona más o menos. Verás, esto es para aplicarlo a un tower defense, que sirva para que cuando tu seleccionas la torre en la interfaz, ésta se cree sobre la plataforma en la que habías dado click, y esto funciona si sólo tienes una plataforma, lo que quiero es que se detecte y se cree en la que habías dado click, imagino que tendrían que cambiar las coordenadas de la variable o algo así, pero no sé si no lo he hecho bien, o simplemente este código no es para eso.

EDITO:

Me he fijado en que solo funciona con una plataforma, si hago click en las otras y luego en poner la torre, ésta se pone en una esquina de la pantalla ._.

Podrias guardar en una variable la id de la plataforma sobre la cual haces clic. En el evento de boton del raton pones seleccion_plataforma=instance_place(mouse_x,mouse_y,plataforma) A la hora de colocar la torre asignas el valor de la variable seleccion_plataforma en lugar del nombre del objeto plataforma

Bueno como es un TD supongo que hay un listado de estructuras para construir, por ejemplo yo quiero construir la "Torre Arcana" para esto pues la elijo entre la lista de estructuras y ahora haré clic en donde quiero que se construya mi Torre arcana, pues bien primero que nada necesito saber en que momento el jugador hace clic para eso utilizo:

if mouse_check_button(mb_left) {<resto del codigo>}

Perfecto esta es una estructura condicional que ejecutara un código cuando se hace clic izquierdo, ahora necesitamos saber las coordenadas pues entonces para eso existe mouse_x que devuelve la posición del mouse en el eje x y mouse_y que hace lo propio con el eje y por lo tanto lo que aremos es comprobar si en la posición en la que el jugador hizo clic se encuentra o no una plataforma para posicionar su torreta quedaría algo como esto:

if mouse_check_button(mb_left)
{
    if mouse_x == 5 and mouse_y == 4 { Construir torre seleccionada}
}

Esto comprobara si el mouse esta en x = 5 e y = 4 comprobamos esto por que nosotros sabemos que hay hay una plataforma, solo resta colocar otros if para hacer todo el trabajo.

Este código se puede optimizar mucho mas utilizando otras estructuras condicionales pero ya tienes la idea investiga en la documentación de game maker  ;)

Gracias a ambos por la ayuda y bueno, sixer, he de decir que lo que tu pusiste no era realmente lo que necesitaba pero me dió una idea para hacerlo de otro modo que me está funcionando mejor que antes, por si sirve de algo pondré como lo he hecho, y además aprovecho para continuar con otra duda.

He añadido una segunda torre para comprobar si algunas correciones funcionaban y la cosa ha quedado así:

En el "step" del ejemplo de la torre 1 (lo que se muestra en el menú para crear las torres)
if mouse_check_button_pressed(mb_left)and position_meeting(mouse_x,mouse_y,self)
{
colocar_torreb1=1
with(obj_torrebasica2_ejemplo)
{
colocar_torreb2=0
}
}


if mouse_check_button_pressed(mb_left)and position_meeting(mouse_x,mouse_y,obj_base)and colocar_torreb1=1
{
instance_create(mouse_x,mouse_y,obj_torre_basica1)
}


En el "step" del ejemplo de la torre 2:
if mouse_check_button_pressed(mb_left)and position_meeting(mouse_x,mouse_y,self)
{
colocar_torreb2=1
with(obj_torrebasica1_ejemplo)
{
colocar_torreb1=0
}
}

if mouse_check_button_pressed(mb_left)and position_meeting(mouse_x,mouse_y,obj_base)and colocar_torreb2=1
{
instance_create(mouse_x,mouse_y,obj_torre_basica2)
}


Bueno, y la última duda que tenía es para ver que puedo hacer con respecto a lo de crear torres, para que sólo pueda crear una por plataforma. Se me había ocurrido que una vez se cree la torre, la plataforma desaparezca, pero me gustaría saber que otras opciones tengo para ver que me viene mejor, un saluod y gracias a todos ^^