Lo que yo he hecho en ese tipo de sistemas, es lo siguiente:
Lo primero, desarrollo el evento roca que será un evento en la misma prioridad que el heroe (no puedo atraversarlo con el protagonista) y al pulsar la tecla de acción, la roca se mueve en base a la dirección donde el heroe mire:
La segunda página que se aprecia en el evento roca es simplemente dejarlo planteado para que cuando llegue al punto de destino, el gráfico de chara de la roca desaparezca.
Por otro lado, se desarrolla el evento destino que estará en proceso paralelo:
En este caso se desarrolla una variable que usaremos para apuntar al valor de ID del evento roca. Si nos fijamos en la primera captura, veremos que la ID de evento (remarcada en amarillo) en este caso es 0004. Bien, entonces lo primero que haremos mediante el comando Get Event ID es indicar el destino usando la variable que hemos creado para ello. El destino no será más que el lugar donde se encuentre este evento en proceso paralelo que es sobre el que arrastraremos la roca.
A continuación, vemos un rama condicional (Conditional Branch), cuyo valor está buscando 4 o más, haciendo referencia a ese ID 0004. Todo lo demás dentro del condicional es lo que quieres que ocurra cuando evento roca y evento destino coincidan. En mi caso, se producen unos sonidos y sacudida de pantalla, se activa un interruptor que le quita el gráfico al evento roca y se lo pone al evento destino, como si dijesemos que la roca ya se ha quedado anclada a la baldosa.