Вы находитесь на странице: 1из 90

Tabla de contenido

BUENAS PRACTICAS DE PROGRAMACION......................................................................................................................................................................... 4


ATRIBUTOS COMUNES .............................................................................................................................................................................................................. 4
CONSTRUCCIONES WITH ......................................................................................................................................................................................................... 6
ACCIONES COMUNES .............................................................................................................................................................................................................. 10
Asignar/crear variable(de Instancia) ....................................................................................................................................................................................... 10
Declarar Variable Temporal (Local) ....................................................................................................................................................................................... 11
Asignar Variable Global (global) ............................................................................................................................................................................................. 12
Obtener (recuperar) Variable Global ...................................................................................................................................................................................... 13
Si Variable? ................................................................................................................................................................................................................................ 14
Si Expresion? ............................................................................................................................................................................................................................. 16
Si indefinido? ............................................................................................................................................................................................................................. 18
De lo contrario ........................................................................................................................................................................................................................... 19
Ejecutar Código ......................................................................................................................................................................................................................... 20
Ejecutar Script ........................................................................................................................................................................................................................... 21
Apply To ..................................................................................................................................................................................................................................... 22
Retorno (return) ........................................................................................................................................................................................................................ 24
Macro (Constante) ..................................................................................................................................................................................................................... 26
Salir del evento (Exit Event o Exit) .......................................................................................................................................................................................... 27
Solución No. 1, Script que acepte argumentos y que los retorne .......................................................................................................................................... 29
Practica destruir objetos dentro del circulo: .......................................................................................................................................................................... 32
Algunas funciones de colisiones................................................................................................................................................................................................35
ACCIONES DE INSTANCIAS .................................................................................................................................................................................................... 39
Crear Instancia de Objeto ........................................................................................................................................................................................................ 39
Destruir Instancia ...................................................................................................................................................................................................................... 41
Destruir Instancia en la Posición.............................................................................................................................................................................................. 42
Cambiar Objeto de la Instancia ............................................................................................................................................................................................... 43
Establecer Alarma ..................................................................................................................................................................................................................... 44
Obtener alarma.......................................................................................................................................................................................................................... 45
Llamar Evento definido por Usuario....................................................................................................................................................................................... 46
Establecer Variable de Instancia ............................................................................................................................................................................................. 47
Si la Instancia Existe ................................................................................................................................................................................................................. 53
Llamar eventos del Padre (Heredar Herencia)....................................................................................................................................................................... 54
ACCIONES DE MOUSES Y TECLADO ................................................................................................................................................................................... 55
If Mouse Pressed........................................................................................................................................................................................................................ 55
If Mouse Down ........................................................................................................................................................................................................................... 55
If Mouse Released...................................................................................................................................................................................................................... 55
If Keyboard Pressed .................................................................................................................................................................................................................. 55
If Keyboard Down ..................................................................................................................................................................................................................... 55
If Keyboard Released ................................................................................................................................................................................................................ 55
ACCIONES DEL GAMEPAD ..................................................................................................................................................................................................... 57
Gamepad Get Axis..................................................................................................................................................................................................................... 57
Gamepad Get Trigger ............................................................................................................................................................................................................... 58
Obtener Numeros de Gmaepad................................................................................................................................................................................................60
Obtener Gmaepad Conectados ................................................................................................................................................................................................ 61
Gamepad Get Zone ................................................................................................................................................................................................................... 62
Si el botón es presionado ........................................................................................................................................................................................................... 63
Si el botón se mantiene presionado .......................................................................................................................................................................................... 63
Si el botón es soltado ................................................................................................................................................................................................................. 63
ACCIONES DE MOVIMIENTO ................................................................................................................................................................................................ 64
Establecer Dirección Fija .......................................................................................................................................................................................................... 64
Establecer Dirección Variable .................................................................................................................................................................................................. 65
Establecer Dirección Aleatoria................................................................................................................................................................................................ 66
Establecer Velocidad de la Instancia ....................................................................................................................................................................................... 67
Establecer la Dirección Gravitacional ..................................................................................................................................................................................... 67
Establecer Fuerza Gravitacional.............................................................................................................................................................................................. 67
Establecer Fuerza de Fricción .................................................................................................................................................................................................. 67
Moverse al punto ....................................................................................................................................................................................................................... 68
Moverse al Inicio ....................................................................................................................................................................................................................... 68
Forzar Posición .......................................................................................................................................................................................................................... 69
Mantenerse en la Room ............................................................................................................................................................................................................ 70
ACCIONES DE COLISION ........................................................................................................................................................................................................ 76
Si cualquier objeto se ubica en ................................................................................................................................................................................................. 76
Si elobjeto se ubica en ............................................................................................................................................................................................................... 78
Si la forma de la colisión ........................................................................................................................................................................................................... 80
Funciones de Colisión................................................................................................................................................................................................................83

REPASO DE GAME MAKER


ESTRUCTURA DRAG AND DROP Y GML
BUENAS PRACTICAS DE PROGRAMACION
 Usar nomenclatura snake (s_n_a_k_e) o lomo de camello (lomoDeCamello) para definir las variables
 Nombrar las variables en su contexto de significado
 Finalizar línea de comandado con punto y como (;)
 Utilizar comentarios para línea de códigos o bloques importantes
 Utilizar el evento créate para inicializar variables, estados, etc.
 Almacenar las expresiones en variables
 Comprobar que los objetos existen antes de antes de aplicarles código
 Separar los bloques de código por llaves para facilitar lecturas
 Ordenar el código con tabulaciones

ATRIBUTOS COMUNES
Muchas, no todas las acciones del drag and drop tienen cuatros atributos específicos que son:

 Applies To: Nos permite asignar la ejecución de un código a un objeto o instancia especifica.
o Self: Es la primera opción, la cual está por defecto y no necesita código para correr o ejecutarse.
o Other: Se usa para eventos de colisiones y ejecución de códigos de múltiples instancias paralelas del otro objeto; la variable
other asigna una única ID a la otra instancia colisionante, si no es usada en la colisión devuelve “ninguno” (noone) objeto.
Ejemplo: Applies to Other:
with (other)
{ //GML code goes here }
o Object:
Aplica a cada instancia de un objeto tipo existente. Si seleccionas un objeto padre también todos los hijos serán
afectados.
Ejemplo: Applies to Object:
with (object name)
{ //GML code goes here }

 Is Relative
Nos permite aplicar un nuevo valor a partir de un valor existente sobrescribiendo el nuevo valor.
Ejemplo:
Cuando queremos que la puntuación sea relativa a la puntuación anterior, la variable puede ser denota usando += cuando se establece el valor.
Relative variable
score += 10;
Relative function
instance_create(x+8, y+8, object_0)
Si no se le especifica que es IsRelative solo establecerá el valor de la variable como sigue:
score = 10;
 NOT
Es usada para preguntas que requieren respuestas negativas, por ejemplo, si la puntuación no es igual a 100 se debe marcar la casilla. En
código
0. esto se denota con negación (símbolo de exclamación).
Ejemplo:
NOT variable
if (score!= 100)

NOT function
if (!place_free(x, y) //Place_free también trabaja con solidos, por tanto comprueba la existencia de una collision con un objeto
solido.

CONSTRUCCIONES WITH

Como se indicó antes, es posible leer y cambiar el valor de las variables en otras instancias. Pero en ciertos casos
querrás hacer mucho más con esas otras instancias. Por ejemplo, imagina que deseas mover todas las pelotas 8 píxeles
hacia abajo. Pudieras pensar que eso se logra con el siguiente código
pelota.y = pelota.y + 8;
Pero no es correcto. El valor a la derecha de la asignación obtiene la coordenada y de la primera pelota y le suma 8.
Entonces este nuevo valor se toma como la coordenada y para todas las pelotas. Por lo que el resultado es que todas
las pelotas tienen la misma coordenada y.

La sentencia pelota.y += 8;
tendrá exactamente el mismo efecto porque es simplemente una abreviatura de la primera declaración. Entonces,
¿cómo logramos esto? Para ello existe la declaración with.

Su forma general es with (<expresión>) <sentencia>

<expresión> indica una o más instancias.


Para esto puedes emplear el id de la instancia, o el nombre de un objeto (para indicar todas las instancias de este objeto) o uno de los objetos
especiales (all, self, other, noone).

<declaración> se ejecuta para cada una de las instancias indicadas, como si la instancia fuera la instancia (self) actual.

Así, para mover todas las pelotas 8 píxeles hacia abajo, puedes escribir with (pelota) y += 8;
Si deseas ejecutar múltiples declaraciones, colócalas entre corchetes. Por ejemplo, para mover todas las pelotas a una
posición aleatoria, puedes usar
with (pelota)
{
x = random(room_width);
y = random(room_height);
}

Nota que, dentro de las sentencias, la instancia indicada se ha vuelto la instancia self. Entonces, la instancia self
original ahora es la instancia other.

Así, por ejemplo, para mover todas las pelotas a la posición de la instancia actual, puedes usar
with (pelota)
{
x = other.x;
y = other.y;
}
El uso de la declaración with es muy poderoso. A continuación, te muestro unos cuantos ejemplos más. Para destruir todas las pelotas usas:

with (pelota)
instance_destroy();

Si una bomba explota y tu quieres destruir todas las instancias cercanas a ella puedes usar
with (all)
{
if (distance_to_object(other) < 50) instance_destroy();
}

Si una bomba explota y tu quieres destruir todas las instancias de un tipo de objeto especifico cercanas a ella puedes usar
with (enemy)
{
if (distance_to_object(all) <16) instance_destroy();
}
El ejemplo anterior solo destruye todos los objetos de nombre enemigo en un rango de 16 pixeles.

ACCIONES COMUNES

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono
{variable = 0;}
Ya descritos
Nombre del Icono
{variable += 0;}
Asignar/crear variable(de Instancia)
Descripción: Asignar un valor a una variable, la variable de instancia es accedida entre eventos de un mismo objeto.
EJEMPLO
{
hp += -10;
}
var expreson_0 = (hp <= 0);
Si no marcamos IsRelative
if (expresion_0)
quedará como sigue:
{
instance_destroy();
}

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono
{
Value: Valor de la
var temp = 10;
Nombre del Icono variable
}
Declarar Variable Temporal (Local)
Descripción: Declarar una variable local, las variables locales son solo accedidas dentro de un mismo bloque de códigos (acción), no entre
acciones, eventos o room.
EJEMPLO
var expresion_0;
expresion _0 =
mouse_check_button(mb_left);
if (expresion _0)
Si la variable temp se hubiera declarado {
fuera del evento mouse_button hubiera {
dado error debido a que no es accesible var temp = 10;
desde fuera del bloque de código que fue }
declarada.
show_debug_message("Varia
ble creada "+string(temp));
}

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono
{
Value: Valor de la
global.variable = 100;
Nombre del Icono variable
}
Asignar Variable Global (global)
Descripción: Declarar y asigna valor a una variable global, las variables globales son accedidas dentro del juego desde cualquier lugar.
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Name: Nombre de la variable
(set) de la cual se tomará el
valor. Target: Nombre de la {
Nombre del Icono variable (get) que almacenara Get_variable =
el valor retornado. Temp: global.Set_variable;
Obtener (recuperar) Variable Crea una variable temporal }
Global (local) donde se almacenara el
valor de la variable retornada.
Descripción: Devuelve (obtiene) el valor almacenado en una variable global.
EJEMPLO
{
global.Set_variable = 100;
}

{
Get_variable =
global.Set_variable;
}
show_debug_message("El valor
de la variable global es
"+string(Get_variable));
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Variable: Nombre de la variable que se var expresion = (variable == 100);
está evaluando. if (expresion)
Not: Es el Operador de comparación {
Nombre del Icono negación el cual convierte un valor //Bloque de código a ejecutar
Si Variable? booleano a su valor contrario. }
Is: Es el tipo de expresion utilizada para
evaluar la variable, esto son: Sería igual sin usar expresion:
Equals to – Igual que.
Less than – Menor que. if (variable == 100)
Greater than – Mayor que. {
Less than or Equal to – Menor o igual que //Bloque de código a ejecutar
Greater than or Equal to – Mayor o igual
}
que.
Si utilizamos la propiedad NOT
(negación) sería como sigue:

var expresion = !(variable == 100);


if (expresion )
{
//Bloque de código a ejecutar
}

Descripción: Evalúa (chequea) si una variable cumple o satisface la condición dada.


EJEMPLO
Nota: todas las var mouse_expresion;
acciones (bloques) mouse_expresion =
If debido a las mouse_check_button(mb_left);
buenas prácticas if (mouse_expresion)
de programación {
crean una variable
local (temporal) {
para almacenar el variable = 100;
resultado de }
evaluar la
expresion (ya que
if evalúa una
expresion). var variable_expresion = (variable
== 100);
if (variable_expresion)
{

show_debug_message ("La
variable es igual");
}
}
Opciones/Parámetro
DRAG AND DROP SINTAXIS CÓDIGO EQUIVALENTE GML
s
Icono var if_expresion =
(variable=variable1);
if (if_expresion)
Nombre del Icono {
Si Expresion? }
Descripción: Evalúa (chequea) si una expresion cumple o satisface la condición dada.
EJEMPLO
var Mouse_expresion;
Mouse_expresion =
mouse_check_button(mb_left)
;
if (Mouse_expresion)
{
{
variable = 100;
}
{
variable1 = 100;
}
var if_expresion =
(variable=variable1);
if (if_expresion)
{

show_debug_message(
"Una variable es mayor a la
otra" );
}
}
CÓDIGO
DRAG AND DROP SINTAXIS Opciones/Parámetros
EQUIVALENTE GML
Icono

Nombre del Icono


Si indefinido?

Descripción: Evalúa (chequea) si una variable o expresion retorna un valor indefinido, retornara verdadero (true) si el valor es idefinido y
falso si no.
EJEMPLO
Nota: The above action block code checks a DS list to see if the initial value is "undefined" or not, and if it is then the list is destroyed.
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono

Nombre del Icono


De lo contrario
Descripción: Es usada en combinación con la clausura If.
EJEMPLO
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono

Nombre del Icono


Ejecutar Código

Descripción: Agrega un editor de código al Drag and Drop para escribir.


EJEMPLO
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Script: Nombre del script a llamar.
Argumentos: Lista de valores que pueden
ser pasados al llamar el script
Nombre del (generalmente se dejan en blanco). {
Icono Target: El nombre de la variable que script_execute(script_0);
Ejecutar Script almacenara el valor retornado. }
Temp: Indica si la variable será local o no.

Descripción: Llama a un script codificado personalizado con varios argumentos.


EJEMPLO
CÓDIGO
DRAG AND
SINTAXIS Opciones/Parámetros EQUIVALENTE
DROP
GML
Icono

Nombre del
Icono
Apply To

Descripción: Puede ser usada para cambiar el alcance de una acción para todas las acciones si una es cambiada.
EJEMPLO
{
change = 100;
}
var l6243C71E_0 = (change == 100);
if (l6243C71E_0)
{
with(self)
{
{
image_blend = $FFFF0008 & $ffffff;
}
}
}

La clausura Self y Nombre del objeto se refieren a la misma instancia. Por tanto en este ejemplo cambiara el color de todas las instancia de
este objeto mesclando el color azul.

CÓDIGO
DRAG AND DROP SINTAXIS Opciones/Parámetros EQUIVALENTE
GML
Icono Return: Es el valor No Aplica
retornado

Nombre del Icono


Retorno (return)
Descripción: Retorna (devuelve el valor solicitado); de igual forma detiene el flujo de ejecución de un programa.
EJEMPLO
var if_mouse_expresion;
if_mouse_expresion = mouse_check_button(mb_left);
if (if_mouse_expresion)
{
{
var _i = noone;
}
var if_variable_expresion = (_i == noone);
if (if_variable_expresion)
{
{
var x_object, y_object;
x_object = x + 50;
x_object = y + 50;
_id = instance_create_layer(var x_object, y_object, "Instances",
Assign_variable);
}
show_debug_message("objeto creado");
}
else
{
show_debug_message("variable devuelta");
{
return _i;
}
}
}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Macro: Es el nombre del
macro que se desea crear.
#macro name 0
Nombre del Icono Value: es el valor que se
Macro (Constante) retornara al llamar el macro.
Descripción: Crea un macro que devuelve un valor especificado al ser llamado. Los macros son constantes que se retornan al llamarlas.
EJEMPLO

var if_mouse_expresion;
if_mouse_expresion = mouse_check_button(mb_left);
if (if_mouse_expresion)
{

#macro c_light_blue 100

show_debug_message(c_light_blue);
}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono No Aplica
exit;

Nombre del Icono O


Salir del evento (Exit Event o Exit)

Descripción: Esta acción toma una de dos valores dependiendo del contexto en que se llame; sale del evento actual y continua al siguiente
evento.
EJEMPLO

{
time = 99;
}
var if_expresion = (time == 100);
if (f_expresion)
{
show_debug_message("La variable es igual a 100, saldremos
del evento");
exit;
}
APLICACION DE LOS CONOCIMIENTOS

Realizar practica con las siguientes funcionalidades


1. Script que acepte argumentos y que los retorne
2. Aplicar with a un objeto, grupo de instancias
3. Cortar el flujo del programa

Solución No. 1, Script que acepte argumentos y que los retorne


var If_mouse_expresion;
If_mouse_expresion = mouse_check_button(mb_left);
if (If_mouse_expresion)
{
{
resultado = script_execute(script_0,10,10);
}
{
var coordx= x + 10;
var coordy= y + 10;
draw_text(coordx, coordy, string("El resultado es "+string(resultado)) + "");
}
}
Practica destruir objetos dentro del circulo:

Draw_self()
x=mouse_x
y=mouse_y
draw_circle(x,y,48,true)
inst_id=collision_circle(x, y, 16, obj_enemy, false, true)
if(inst_id)
{
with (inst_id)
{
instance_destroy()
}
}
//Modificacion
bt_mouse = mouse_check_button(mb_left)
if (bt_mouse)
{
for (i=0;i<48;i+=1)
{
draw_circle(x,y,i,true)
inst_id=collision_circle(x, y, 16, obj_enemy, false, true)

if(inst_id)
{
with (inst_id)
{
instance_destroy()
}
}
}

Ultima modificación

Draw self()

x=mouse_x
y=mouse_y

bt_mouse = mouse_check_button(mb_left)
if (bt_mouse)
{
image_speed = 1;
draw_circle(x,y,sprite_height/2,true)
inst_id=collision_circle(x, y, sprite_height/2, obj_enemy, false, true)

if(inst_id)
{
with (inst_id)
{
instance_destroy()
}
}
}

else {
image_index=0
image_speed = 0;
}

Ejemplo almacenar objetos en matriz

for (i=0;i<instance_number(obj_enemy);i++)
{
enemy[i]=instance_find(obj_enemy,i)
draw_text(10,70+i*15,"arreglo no.: "+string([i])+string(enemy[i]))
}
Algunas funciones de colisiones

Función: Instance_Position (x,y,obj) >> return (real instance id)


Evento: Draw
Acción: ejecutar código

x=mouse_x;
y=mouse_y;
draw_self();
btm=mouse_check_button(mb_left)
if (btm)
{ inst_pos=instance_position(x, y,object_1)
if (inst_pos) // Si las posiciones coinciden
{
draw_text(10,10,"Estan chocando con el objeto "+string(inst_pos)) // dibuja

}
}
Función: Place_Metting (x,y,obj) >> return (boolean)
Evento: Draw
Acción: ejecutar código

x=mouse_x;
y=mouse_y;
draw_self()
btm=mouse_check_button(mb_left)
if (btm)
{ inst_metting=place_meeting(x, y,object_1)
if (inst_metting)

{ draw_text(10,10,"Estan chocando con el objeto")


}
}

Función: Instance_place (x,y,obj) >> return (real instance id)


Evento: Draw
Acción: ejecutar código

x=mouse_x;
y=mouse_y;
draw_self()
btm=mouse_check_button(mb_left)
if (btm)
{ inst_place=instance_place(x, y,object_1)
if (inst_place)
{ draw_text(10,10,"Estan chocando con el objeto "+string(inst_place))

}
}
Otra version:

x=mouse_x;
y=mouse_y;
draw_self()
btm=mouse_check_button(mb_left)
if (btm)
{ inst_place=instance_place(x, y,object_1)
if (inst_place)
{ draw_text(10,10,"Estan chocando con el objeto "+string(inst_place))
with (inst_place)
{
instance_destroy() // destruye el otro objeto.
}

}
}

Función: Point_in_Circle (px,py,x,y) >> return (boolean)


Evento: Draw
Acción: ejecutar código

x=mouse_x;
y=mouse_y;
draw_self()
btm=mouse_check_button(mb_left)
if (btm)

{ draw_circle(x,y,64,true)
inst_point_circle=point_in_circle(object_1.x,object_1.y,x,y,64)
if (inst_point_circle)
{
draw_text(10,10,"Estan chocando con el objeto ")
}
}
ACCIONES DE INSTANCIAS

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono Objeto: Es el objeto a partir del cual se { var x_coor, y_coord;
creará la instancia. x_coor = 0;
X,Y: Es la coordenada en la cual se creara la y_coord = 0;
Nombre del Icono instancia. instance_create_layer(x_coor,
Layar: Es el nombre de la capa en la cual se y_coord, "nombre_layer",
creara la instancia. objeto);
Crear Instancia Target: Es el nombre de la variable de en la }
de Objeto cual se almacenara la instancia

Descripción: Crea una instancia de cualquier objeto del árbol de recursos; se le debe dar el nombre y la posición del objeto crearlo.
EJEMPLO
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono
instance_destroy();

Nombre del Icono


Destruir Instancia
Descripción: Destruye la instancia donde esta función este referenciada.
EJEMPLO
Draw_self()
x=mouse_x
y=mouse_y
draw_circle(x,y,48,true)
inst_id=collision_circle(x, y, 16, obj_enemy, false, true)
if(inst_id)
{
with (inst_id)
{
instance_destroy()
}
}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono
x,y: Es la posición en Destroy_At_Position(x,y);
la room del objeto a
Nombre del Icono destruir.
Destruir Instancia en la Posición
Descripción: Destruye una o todas las instancias que se encuentren en la posición dada.
EJEMPLO

var es_presionado = keyboard_check_pressed(vk_space);


if (es_presionado)
{
{
var x_coord, y_coord;
x_coord = x + 0;
y_coord = y + 0;
position_destroy(x_coord, y_coord);
}
}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Nombre: Nombre del
instance_change(object, true);
objeto del cual se
Nombre del Icono cambiara la
instancia.
Cambiar Objeto de la Instancia
Descripción: Cambia una instancia por otra.
EJEMPLO

{
draw_self();
}
var is_mouse_down;
is_mouse_down = mouse_check_button(mb_left);
if (is_mouse_down)
{
instance_change(object_0, true);
}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Alarm: Es la id de la {
alarma (0-11). var countdown;
Countdown: Es el countdown = 30;
Nombre del Icono valor numérico alarm_set(id alarma, countdown);
Establecer Alarma programado de la }
cuenta regresiva.
Descripción: Establece o lanza una alarma con conteo regresivo la cual es disparada al llegar a zero
EJEMPLO

Imprime tanto por el debug (alarma disparada) como por pantalla


(valor: -1) los mensajes.

{
countdown = alarm_get(0);
}
var contador = (countdown <= 0);
if (contador)
{
{
var cuenta_regresiva;
cuenta_regresiva = 60;
alarm_set(0, cuenta_regresiva);
}
{
var x_coord = 0;
var y_coord = 0;
draw_text(x_coord, y_coord, string("Valor: ") +
string(countdown));
}
}

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono Alarm: Es la id de la {
alarma (0-11). countdown = alarm_get(id alarma);
Target: Es el nombre }
Nombre del Icono de la variable
Obtener alarma establecida en la
propiedad
“countdown” cuando
es definida la alarma.
Descripción: Obtiene el valor de una alarma con conteo regresivo la cual es disparada al llegar a Zero
EJEMPLO
Ver ejemplo anterior
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono
{
Event: Es el id del
o event_user(id evento);
evento (0-11).
Nombre del Icono }
Llamar Evento definido por Usuario
Descripción: Llama para ejecución un evento definido por el usuario.
EJEMPLO

var expresion = (state == "move");


if (expresion)
{
{
event_user(0);
}
}
else
{
{
event_user(1);
}
}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Variable: Es el
nombre de la variable
o a la cual se quiere
Nombre del Icono operar o modificar su
Establecer Variable de Instancia valor.
Descripción: Es utilizada para establecer valor a una de las variables de instancias, las cuales son propias de cada instancia.
Variable Sintaxis Ejemplo
• X Coordinate - The position along the x axis in the room. {x = 0;} if keyboard_check(vk_left) x += 5
• Y Coordinate - The position along the y axis in the room. {y = 0;} if keyboard_check(vk_down) y += 5;
• Direction - The direction of movement for the instance (default is {direction = real;} if keyboard_check(vk_left) direction += 5;
0, where right is 0°, up is 90°, left is 180° and down is 270°).
• Speed - The speed (in pixels per game frame) that the instance is {speed = real;} if keyboard_check(vk_up) speed = 2;
moving at.
• Horizontal Speed - The horizontal speed (in pixels per game {hspeed = real;} if keyboard_check(vk_left) hspeed = -5;
frame) that the instance is moving at. A negative speed means it is
moving left, a positive speed is right and the default is 0.
• Vertical Speed - The vertical speed (in pixels per game frame) that {vspeed = real;} if keyboard_check(vk_up) vspeed = -5;
the instance is moving at. A negative speed means it is moving up, a
positive speed is down and the default is 0.
• Visible - The visibility toggle variable (default is true unless set {visible;}, return Boolean; if other.visible = true
otherwise in the Object Editor, set to false to make invisible). Note { x = xprevious;
that an invisible instance still runs all its events except the Draw y = yprevious;
Event. }
• Persistent - The persistence toggle variable (default is false unless {persistent;} return Boolean if !persistent
set otherwise in the Object Editor, set to true to make persistent). {
This will make an instance "persist" from room to room, ie: the persistent = true;
instance will not be cleaned up on room end but instead will be }
carried over to the next room. Note that when an instance is
persisted it will not call its Create nor Destroy event, but will call the
Clean Up, Room End, and Room Start events.

• Layer - The layer that the instance has been assigned to. layer = "Foreground";  enemigo = layer_create(-1000);

// or... Se crea un nuevo layer con una


profundidad (depth) de -1000 y colocamos
layer = la instancia enemigo con la variable
layer_get_id("Foreground"); retornada layer ID, mueve la instancia del
leyer actual al nuevo layer que fue creado.
Return ID value (Real)
• Depth - The depth value assigned to the layer. Depth = real integer; if y != yprevious
Return Real {
depth = -y;
}

• Sprite - The sprite resource assigned to the instance. This variable sprite_index; with (obj_Check)
returns the index of the current sprite for the instance, or -1 if the instance Return Real { if !collision_line(x, y, other.x, other.y,
has no sprite associated with it. obj_Wall, false, true)
{ sprite_index = spr_spotted;
}
else
{ sprite_index = spr_clear;
}
}
• Image Index - The image index of the sprite assigned. This value image_index; if (bt_mouse)
sets the frame of the sprite assigned to the instance, and if the value Return Real { image_index=0}
is greater than the number of frames in the animation it will "loop" else
such that a sprite with 5 frames if set to frame 7 will actually show { image_index=0}
frame 2.

• Image Angle - The angle that the instance should be set to (default image_angle; image_angle = point_direction(x, y,
is 0, where right is 0°, up is 90°, left is 180° and down is 270°). Return Real mouse_, mouse_y);
• Image Alpha - The alpha value for the instance (default is 1) from 0
to 1, where 0 is full transparent and 1 is fully opaque.
Image Alpha - The alpha value for the instance (default is 1) from 0 to 1, image_alpha; image_alpha = clamp(image_alpha - 0.01,
where 0 is full transparent and 1 is fully opaque. Return Real (between 0 and 1) 0, 1);

• Image Blend - The colour to be blended with the instance sprite image_blend; image_blend = make_colour_hsv(255, 255,
(default is white). Return Real random(255));

• Horizontal Scale - The horizontal scale at which the instance sprite image_xscale; if image_xscale < 5
should be drawn (this will also affect the instance bounding box and Return Real {image_xscale += 0.2;
collisions). A scale of 1 indicates no scaling (1:1), smaller values will image_yscale = image_xscale;
scale down (0.5, for example, will half the width of the sprite), larger }
else {instance_create(x,y,obj_Explosion);
values will scale up and negative values will mirror the sprite and
instance_destroy(); }
scale it unless the value used is exactly -1 (in which case the sprite is
just mirrored along the y-axis with no scaling).
• Vertical Scale - The vertical scale at which the instance sprite image_yscale; if image_xscale < 5
should be drawn (this will also affect the instance bounding box and Return Real {image_xscale += 0.2;
collisions). A scale of 1 indicates no scaling (1:1), smaller values will image_yscale = image_xscale;
scale down (0.5, for example, will half the height of the sprite), }
else
larger values will scale up and negative values will flip the sprite and
{instance_create(x,y,obj_Explosion);
scale it unless the value used is exactly -1 (in which case the sprite is
instance_destroy();
just flipped along the y-axis with no scaling). }
• Mask - The mask index for the instance. The default value is -1 mask_index; mask_index = spr_Round;
(which means the instance will use the collision mask for the Return Real
currently assigned sprite index), but if set to any other sprite The above code sets the mask of the
resource, the collision mask for that instance will be used instead of instance to that of the sprite "spr_Round".
the sprite assigned to the sprite index.
• Friction - The friction to use each game frame of the game to slow friction; if abs(speed) > 0
down the instance. This value will simply be deducted from the Return Real { friction = 0.05; }
current speed value each game frame (or added if the speed value is else
negative). { friction = 0; }
• Gravity - Gravity will apply a constant force in the gravity direction gravity; if !place_meeting(x, y + 1, obj_Ground)
(see below) of the instance, influencing its speed (default is 0). Note Return Real { gravity = 0.01;
that gravity is a cumulative force and will accelerate the object if you }
choose not to cap the final speed. else
{ gravity = 0;}
• Gravity Direction - This can be used to set the direction of gravity_direction; if place_meeting(x, y, obj_switch)
movement when the instances gravity is greater than 0 (default is Return Real {
270). Note that directions in GameMaker Studio 2 are calculated as gravity_direction += 180;
0° being right, 90° being up, 180° being left and 270° being down. }
• Score - Set the score variable.
• Lives - Set the lives variable.
• Health - Set the health variable.
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono
{
Nombre del Icono sprite_index = noone;
Establecer Sprite image_index = 0;
}
{
Establecer Rotación de Sprite image_angle = 180;
Sprite: El nuevo sprite a
}
asignar (sprite_index
Establecer Velocidad de Animacion {
correspondiente, -1 si
image_speed = 0.5;
quieres remover el
}
Establecer Escala del Sprite sprite actual).
{
Frame: la Image_index
image_xscale = 0.25;
(subimangen con la cual
Establecer Canal Alpha del Sprite se cargara la anmacion) image_yscale = 0.25;
}
{
Establecer Color del Sprite image_alpha = 0.5;
}
{
image_blend = $FFD7D1FF & $ffffff;
}
Descripción: Cambia el sprite actual por uno asignado (pasando como parámetro el sprite_index)
EJEMPLO

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono Object: Nombre del objeto
del cual se verificará la var existe = false;
instancia o la ID de la existe = instance_exists(noone);
Nombre del Icono instancia. if(existe)
Si la Instancia Existe Not: Es la negación.
Descripción: Verifica si una instancia especifica existe en la room.
EJEMPLO

{ var X = x + -100;
Y = y + 0;
var X2 = x + 100;
var Y2 = y + 0;
var target = collision_line(x, y, x2, y2, noone, true, true);
}
if(target)
{
var existe_0 = false;
existe = instance_exists(noone);
if(existe)
{
with(self)
{
{
hp = -1;
}
}
}
}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Object: Nombre del objeto
del cual se verificará la {
instancia o la ID de la event_inherited();
Nombre del Icono instancia. }
Llamar eventos del Padre (Heredar Not: Es la negación.
Herencia)
Descripción: Habilita para que un objeto hijo pueda heredar eventos y acciones del padre.
EJEMPLO
Objeto: Padre
Evento: Create
Acción: Show_debug_message (“objeto padre creado”)

Objeto: Hijo {
Evento: Create show_debug_message("objeto padre creado")
Acción: }
Call Parent Event
Show_debug_message (“objeto hijo creado”)

{
event_inherited();
}
{ show_debug_message("objeto hijo creado")
}{
ACCIONES DE MOUSES Y TECLADO

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono/ Nombre del Icono

If Mouse Pressed

If Mouse Down

If Mouse Released

If Keyboard Pressed

If Keyboard Down

If Keyboard Released
ACCIONES DEL GAMEPAD

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono Gamepad: Identificador (gamepad index) {
del gamepad. if(gamepad_is_connected(0))
Axis: Verifica si es el stick derecho, =
Nombre del Icono izquierdo, vertical u horizontal que se está gamepad_axis_value(0,
operando. gp_axislh);
Gamepad Get Axis Target: Es la variable que almacenara el else = 0;
valor retornado. }
Descripción: Obtiene el valor de los diferentes axes (stick horizontal y vertical) del Gamepad
EJEMPLO
{ var a;
if(gamepad_is_connected(0))
a = gamepad_axis_value(0, gp_axislh);
else a = 0;
}{ var a;
if(gamepad_is_connected(0))
a = gamepad_axis_value(0, gp_axislv);
else a = 0;}
{ direction = point_direction(x, y, a, b);}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Gamepad: Identificador (gamepad {
index) del gamepad. if(gamepad_is_connected(0))
Trigger: Verifica si es el trigger =
Nombre del Icono derecho, izquierdo que se está gamepad_button_value(0,
operando. gp_shoulderlb);
Gamepad Get
Target: Es la variable que almacenara else = 0;
Trigger
el valor retornado. }
Descripción: Obtiene el valor de los diferentes Trigger (Left y Right) del Gamepad
EJEMPLO
{
if(gamepad_is_connected(0))
gp_t =
gamepad_button_value(0,
gp_shoulderlb);
else gp_t = 0;
}
var expresion = (gp_t <= 0.5);
if (expresion)
{
{
var xcoor, ycoor;
xcoor = x + 0;
ycoor = y + 0;
instance_create_layer(xcoor,
ycoor, "Instances", obj_padre);
}
}

The above action block code creates a


local (temporary) variable and then uses
it to store the current value for the left
trigger. If the trigger value is over 0.5 an
instance is created at the calling
instance's position.
DRAG AND
SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
DROP
Icono var cant_gamepad = gamepad_get_device_count();
var cantidad_gamepad;
Nombre del for(var contador = 0; contador < cantidad_gamepad; ++
Icono Target: Es la variable contador) {
que almacenara el if(gamepad_is_connected(cantidad_gamepad))
Obtener valor retornado. ++ cantidad_gamepad;
Numeros }
de variable = cantidad_gamepad;
Gmaepad
Descripción: Obtiene el numero de los Gamepad conectado al juego
EJEMPLO
DRAG AND
SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
DROP
Icono Gamepad:
Identificador
Nombre del (gamepad index) del
Icono gamepad. variable = gamepad_is_connected(0);
Obtener Target: Es la variable
Gmaepad que almacenara el
Conectados valor retornado.
Descripción: Obtiene el número de los Gamepad conectado al juego
EJEMPLO
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono
Gamepad: Identificador {
(gamepad index) del gamepad_set_axis_deadzone(0,
Nombre del gamepad. 0.2);
Icono Deadzone: Valor de la zona }
Gamepad Get muerta (0-1)
Zone
Descripción: Establece la zona muerta del axes del Gamepad
EJEMPLO
{
gamepad_set_axis_deadzone(0, 0.2);
}
{
gamepad_set_axis_deadzone(1, 0.2);
}
{
gamepad_set_axis_deadzone(2, 0.2);
}
{
gamepad_set_axis_deadzone(3, 0.2);
}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono
Gamepad: Identificador (gamepad index)
Nombre del Icono del gamepad.
Si el botón es presionado Button: Nombre del botón que verificara.
Si el botón se mantiene presionado Not: Negación
Si el botón es soltado
Descripción: Verifica si el botón es presionado, si se mantiene presionado o si es soltado y devuelve true , de lo contrario false .
EJEMPLO
ACCIONES DE MOVIMIENTO

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono
{
Direction: Es una dirección fija
Nombre del Icono direction =
predeterminada definida por el
0,45,90,135,180,255,270,315,360;
usuario.
Establecer Dirección }
Fija
Descripción: Establecer Dirección Fija.
EJEMPLO
var expresion;
expresion = mouse_check_button(mb_left);
if (expresioi)
{
{
direction = 0;
}
{
speed = 1;
}
}

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono
{
Direction: Es una dirección dada
Nombre del Icono direction = 0 a 360;
definida por el usuario.
}
Establecer Dirección
Variable
Descripción: Establecer Dirección aleatoria.
EJEMPLO
var expresion;
expresion = mouse_check_button(mb_left);
if (expresion)
{
{
direction = random(360);
}
{
speed = 10;
}
}

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono
{
direction =
Nombre del Icono choose(135,90,45,180,0,225,270,315);
Establecer }
Dirección
Aleatoria
Descripción: Establecer Dirección aleatoria.
EJEMPLO
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono
Type: Establece la dirección {
Nombre del Icono Speed: El valor de la velocidad speed = 10;
(puede ser negativa) }
Establecer Velocidad
de la Instancia
Descripción: Establecer la velocidad de la instancia.
EJEMPLO

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono
{
, , Direction: De 0 a 360 gravity_direction = 270;
Nombre del Icono grados. }
Force: Fuerza gravitacional {
Establecer la Dirección aplicada (puede ser gravity = 0.05;
Gravitacional negativa). }
Establecer Fuerza Friction: Friccion aplicada {
Gravitacional (solo positiva). friction = 0.2;
Establecer Fuerza de }
Fricción

Descripción: Establecer Dirección aleatoria.


EJEMPLO
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono
{
x,y: Son la coordenada x = 1;
Nombre del Icono donde se moverá la y = 1;
Moverse al punto instancia. }

Descripción: Mueve la instancia a un punto especificado.


EJEMPLO

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono
{
x = xstart;
Nombre del Icono Apply To.
y = ystart;
Moverse al Inicio }

Descripción: Mueve la instancia a la posición donde fue creada en la room.


EJEMPLO
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono
Horizontal: Valor horizonal
de la celda.
Nombre del Icono Vertical: Valor vertical de la move_snap(32, 32);
Forzar Posición celda

Descripción: Mueve la instancia a la posición obligatoria en la room (celda de la grid).


EJEMPLO
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono

Nombre del Icono


Márgenes, valor move_wrap(1, 1, 0);
Mantenerse en la Room

Descripción: Te permite mantener la instancia en la room.


EJEMPLO
Ejemplo de usar gravedad y salto:
Motion Planning
Linear Functions

 mp_linear_step (x,y,speed,check)
x,y: Es la coordenada del objeto que perseguirá
speed: Es la velocidad a la perseguirá el objeto
check: true, si verifica todas las instancias y false si solo verifica los sólidos.
la clausura “all” considera todos los objetos.

 mp_linear_step_object(x,y,speed,objeto)
x,y: Es la coordenada del objeto que perseguirá
speed: Es la velocidad a la perseguirá el objeto
Objeto: es el objeto al cual respetará las colisiones (chocará e impedirá su avance).
 mp_linear_path
 mp_linear_path_object
Potential Functions

 mp_potential_settings
 mp_potential_step
 mp_potential_step_object
 mp_potential_path
 mp_potential_path_object
Grid Functions

 mp_grid_create
 mp_grid_destroy
 mp_grid_path
 mp_grid_add_cell
 mp_grid_add_instances
 mp_grid_add_rectangle
 mp_grid_get_cell
 mp_grid_clear_all
 mp_grid_clear_cell
 mp_grid_clear_rectangle
 mp_grid_to_ds_grid
 mp_grid_draw

Built In Variables

 direction
 friction
 gravity
 gravity_direction
 hspeed
 vspeed
 speed

Other than those variables mentioned above you can also set the instance position directly using the following:

 x
 y
 xprevious
 yprevious
 xstart
 ystart

Movement Functions

 motion_add
 motion_set
 move_towards_point
 move_bounce_all
 move_bounce_solid
 move_contact_all
 move_contact_solid
 move_outside_all
 move_outside_solid
 move_random
 move_snap
 move_wrap
 place_snapped
ACCIONES DE COLISION

DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML


Icono {
var x_coord = 0;
x,y: Posición var y_coord = 0;
Nombre del Icono (coordenada) a var expression = place_empty(x_coord, y_coord);
verificar EN LA Room. }
if expresion)
Si cualquier objeto se
Return: Boolean {
ubica en
//Ejecutar Codigo
}
Descripción: Cheque si alguna instancia de algún objeto se encuentra en una posición basada en la máscara de colisión de la instancia.
(Esto nos permite verificar si existe o no una instancia vara poder chocar o avanzar en cualquier direccion.)
EJEMPLO
{
x=mouse_x;
y=mouse_y;
}
{
var x_coord = 0;
var y_coord = 0;
var expression = place_empty(x_coord, y_coord);
}
if expresion)
{

{ image_blend = $FF00FFFA & $ffffff; }


}
else
{
{ image_blend = $FF0000FF & $ffffff; }
}

//El código de bloque de acción anterior comprueba si hay una


colisión en la posición actual de la instancia y si se
encuentra se mezcla la instancia con rojo, de lo contrario se
mezcla con amarillo.
CÓDIGO EQUIVALENTE
DRAG AND DROP SINTAXIS Opciones/Parámetros
GML
Icono {
var x_coord = 0;
x,y: Posición var y_coord = 0;
Nombre del Icono (coordenada) a var expression =
verificar EN LA Room. place_empty(x_coord,
Target: Variable para y_coord);
almacenar el valor }
Si elobjeto se ubica
retornado if expresion)
en
Return: Boolean {
//Ejecutar Codigo
}
Descripción: Cheque si una instancia especifica de objeto se encuentra en una posición basada en la máscara de colisión de la instancia.
(Esto nos permite verificar si existe o no una instancia vara poder chocar o avanzar en cualquier dirección.)
EJEMPLO
{
x=mouse_x;
y=mouse_y;
}
{
var x_coord = 0;
var y_coord = 0;
var expression = place_empty(x_coord, y_coord);
taget = almacenar_resultado_boolean;
}
if expresion)

{
image_blend = $FF00FF1D & $ffffff;
}
}
else
{
{
image_blend = $FFFFFFFF & $ffffff;
}
}
DRAG AND DROP SINTAXIS Opciones/Parámetros CÓDIGO EQUIVALENTE GML
Icono Return: booleaa {
var x_cood = x + 0;
var y_cood = y + 0;
Nombre del Icono var x2_cood = x + 0;
var y2_cood = y + 0;
var expresion = collision_line(x_cood, y_cood,
x2_cood, y2_cood, obj_cuadrado, true, true);
Si la forma de la target = expresion;
colisión }
if(expresion)
{
}
Descripción: Verifica si la instancia choca con una forma de colisión especifica (línea, rectángulo o elipse y devuelve true (semejante al line
cast y line collider de unity). Lanza un rayo desde el inicio (x1,y1) hasta la coordenada final (x2,y2) y almacena el valor (boolen) el retornado.
EJEMPLO
Argument Descripción
Shape Forma a verificar
El objeto a verificar para la
Object
instancia
x1, y1 La posición (coord.) de inicio
x2,y2 La posición (coord.) de fin
Variable que almacenara valor
Target
retornado.
{ draw_self();}
{
x=mouse_x;
y=mouse_y;
draw_text(200,0,string(distance_to_object(obj_cuadrado)))
}
{
var l18026C01_0 = x + 0;
var l18026C01_1 = y + 0;
var l18026C01_2 = x + 100;
var l18026C01_3 = y + 100;
var l18026C01_4 = collision_line(l18026C01_0, l18026C01_1, l18026C01_2,
l18026C01_3, obj_cuadrado, true, true);
target = l18026C01_4;
}
if(l18026C01_4)
{
{ draw_set_colour($FF000000 & $ffffff); }
{
var l23D2FBF7_0 = x + 0;
var l23D2FBF7_1 = y + 0;
var l23D2FBF7_2 = x + 100;
var l23D2FBF7_3 = y + 100;
draw_line(l23D2FBF7_0, l23D2FBF7_1, l23D2FBF7_2, l23D2FBF7_3);
}
}
 Este ejemplo lanza un rayo desde el objeto al que esta adjunto el codigo
(obj_circulo) con una longitud de 100 pixeles y si choca con el obj_cuadrado
se dibuja una línea.
Funciones de Colisión

Funcion collision_circle Ejemplo


Sintaxis collision_circle( x1, y1, rad, obj, prec, notme );
Representacion:

if collision_circle(x, y, 20, obj_Cursor, false, true)

image_index = 1;

}
else image_index = 0;
Funcion collision_ellipse
Sintaxis collision_ellipse( x1, y1, x2, y2, obj, prec, notme ); if collision_ellipse(50, 50, 200, 100, obj_Player, false, true)
Representacion:
{

instance_create(obj_Player.x, obj_Player.y, obj_Splash);

}
Funcion collision_line ejemplo
Sintaxis collision_line( x1, y1, x2, y2, obj, prec, notme );
Representacion:
with (obj_Enemy)

if collision_line(100, 400, 100, 600, id, false, false)


instance_destroy();

Funcion collision_point Ejemplo


Sintaxis collision_point( x, y, obj, prec, notme );
Representacion: if collision_point(x, y, obj_Cursor, false, true)
{
Score += 10S;
}
Funcion collision_rectangle Ejemplo
Sintaxis collision_rectangle( x1, y1, x2, y2, obj, prec, notme );
Representacion: var inst;

inst = collision_rectangle(50, 50, 200, 100, obj_Ball, false,


true);

if inst != noone
{
with (inst) instance_destroy();
}

Place_free(x,y)
También trabaja con sólidos, por tanto comprueba la existencia de una colisión con un objeto sólido.

Move_contact_solid (direction, speed)


mueve el objeto en la dirección especificada con una velocidad (en pixeles) hasta que entre en contacto con in sólido.
Motion_add (Direction, Velicty)
Añade al movimiento del objeto llamante la dirección y velocidad indicadas.

Argumento Descripción
Dir La dirección añadida.
velocidad La velocidad añadida (Simula una acelaracion).

Descripción
Esta función se suma a la dirección ya la velocidad de movimiento de una instancia, y puede ser muy útil para colisiones y física simple.

Ejemplo:

Var pdir;
Pdir = dirección_punto (other.x, other.y, x, y);
Motion_add (pdir, other.speed);

If velocidad> 8 (Simula una aceleración)


velocidad = 8; (Limita la simulación de la acelaracion a 8 pixles por unidad de tiempo)

El código anterior sería llamado en el evento de colisión con otro objeto. Añade a la dirección del movimiento ya la velocidad de la instancia un
vector basado en la posición y velocidad de la otra instancia implicada en la colisión. A continuación, limita la velocidad si pasa de 8 (píxeles por paso).

Place_empty
Verifica si la posición (coordenada esta vacía, sea una instancia solida o no) y devuelve un booleano. Esta función aunque pertenece al grupo de
funciones de colisiones simples se utiliza para simular el movimiento de una instancia a partir de la posición (como es recomendado) y no de la
velocidad propia de la instancia, ya que esta última velocidad dependo de la velocidad en si del juego (room) y puede afectar el rendimiento del
juego debido a que es más fácil recalcular posición que velocidad de Frame (FPS).
Ejemplo de velocidad dependiente de la posición:
Objeto: jugador
Evento Create
Accion: Execute Code:
Spd= 8 // Crea y establece la variable a un valor de 8 para simular el movimiento a 8 pixeles por segundo.
Objeto: jugador
Evento: Step
Accion: Execute Code:
If (keyboard_check(vk_left)) // Si la Tecla es presionada
{
if place_empty(x-spd,y) // Si a 8 (spd) pixeles a la izquierda (-) de la posición del jugador está vacía
{
x -= spd //Dismuye la posición en 8 (-spd) para similar una velocidad del jugador en función de la posición
}
}

Place_free
Realiza la misma función que la anterior, pero solo para objetos solidos (que tenga la propiedad “solido” activada).
Ejemplo:
If (keyboard_check(vk_left)) // Si la Tecla es presionada
{
if place_free(x-spd,y) // Si a 8 (spd) pixeles a la izquierda (-) de la posición del jugador está vacía (evalua solo objetos
solidos
{
x -= spd //Dismuye la posición en 8 (-spd) para similar una velocidad del jugador en función de la posición
}
}

Place_meeting
Igual a las funciones place_free y place_empty, excepto que chequea si en la posición verificada existe un tipo de objeto en especio.
Ejemplo:
If (keyboard_check(vk_left)) // Si la Tecla es presionada
{
if !place_metting(x-spd,y, objeto_x) // Si a 8 (spd) pixeles a la izquierda (-) de la posición del jugador no esta ubicado el
objeto_x
//Nota: se puede usar la cláusula “all” para chequear todas las instancias y que al chocar con cualquier no pueda avanzar.
{
x -= spd //Dismuye la posición en 8 (-spd) para similar una velocidad del jugador en función de la posición
}
}

Move_contact_solid (direction, speed)


mueve el objeto en la dirección especificada con una velocidad (en pixeles) hasta que entre en contacto con in sólido.
Move_Towards_Point(x,y,valor)
Mueve el punto a la coordenada especificada a una velocidad especificada en pixels por segundo (6 pixeles por step); se mueve a ese punto y en esa
direccion, pero sin pararse.

Move_Wrap move_wrap(hor, vert, margin);


Argument Description
hor Si se envuelve horizontalmente (verdadero) o no (falso).
vert Vert Si se envuelve verticalmente (true) o no (false).
margin A qué distancia de la room, en píxeles, el objeto debe de iniciar el wrap.
Simple Collision Checking

 place_empty
 place_free
 place_meeting
 position_empty
 position_meeting
 position_change
 position_destroy
 instance_place
 instance_position

Advanced Collision Checking

 collision_circle
 collision_ellipse
 collision_line
 collision_point
 collision_rectangle

Collision Checking Without A Mask

 point_in_rectangle
 point_in_triangle
 point_in_circle
 rectangle_in_rectangle
 rectangle_in_triangle
 rectangle_in_circle
Physics Collisions

Вам также может понравиться