Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - EnteiCross

1
Cita de: NiuWeb en Noviembre 20, 2015, 05:29:24 AM
Bueno, pues estaría bien es, de no ser porque lo que necesito es LO INVERSO. Me explico:
En vez de que NO CREE un objeto si ya existe uno, debe crear un NUEVO OBJETO y eliminar el que está abajo.

Muy bien entonces, lo que debemos de hacer primero es eliminar el bloque que se encuentre ya colocado, prueba el siguiente código:

Objeto donde se controla la construcción.
Ev. Step

//Solo para actualizar las coordenadas.
x = mouse_x;
y = mouse_y;


Ev. Glob Left Pressed:

var Bloque;

//Primero se hace una dirección de referencia a una instancia oWall que colisione dentro del rectangulo.
Bloque = collision_rectangle(x, y, x+32, y+32, oWall, false, true);

//Si se encontro una instancia de tipo oWall entonces la destruiremos.
if (Bloque != noone)
   with (Bloque) instance_destroy();

//Finalmente creamos una nueva instancia de tipo oWall
instance_create(x,y,oWall);
2
Cita de: penumbra en Noviembre 19, 2015, 11:06:47 PM
Es buena idea, pero para que ese código funcione, se debe ejecutar desde un objeto que teng asignado un sprite o máscara de colisión, porque esto es requerido por la función place_meeting. Si se usa, por ejemplo, desde un objeto controlador sin sprite, fallaría.

Tienes razón, afortunadamente hay muchas funciones para realizar comprobaciones de areas como collision_rectangle();
y de tal forma podemos hacer una pequeña modificación al código...


if (collision_rectangle(mouse_x, mouse_y, 32, 32, oWalll, false, true)) {
  //Crear el objeto, EJ:
instance_create(mouse_x, mouse_y, oWall);
}
3
Lo que yo sugiero es que mejor antes de colocar un objeto, verifiques antes si hay un espacio libre, y si asi lo es (esta libre) procedes a colocar una nueva instancia en la posición seleccionada.

if !place_meeting(mouse_x , mouse_y, oWall) {
  //Crear el objeto, EJ:
instance_create(mouse_x, mouse_y, oWall);
}