SumRndmDde

Follower of RNGesus
Veteran
Joined
Jul 30, 2013
Messages
225
Reaction score
426
First Language
English
Primarily Uses
RMMV

Object Pushing Puzzle Tutorial


by SumRndmDde






This is a tutorial that teaches you how to make a smoother "pushing" mechanic for events. Using this, one can create puzzles, systems, and other evented features that feel a lot smoother than the usual "Push and Wait" system that comes from a lot of these kinds of things. Furthermore, this tutorial also quickly goes over how one may reset the position of the event that is being moved along with how one may effectively process whether or not the pushed event has been placed onto the correct position.


While there are a couple ways that one can accomplish this, the method presented in the video is the most flexible version for adding other features such as Sound Effects and Animations per each direction.


Without further ado, here is the tutorial:














If you wish for an easy reference to the final result, the entire event contents has been pasted here.


Keep in mind that in this example:


 - The ID is set to 1.


 - The target location is set to (5, 4)


Be sure to set these values correctly within the Scripted conditions. :)


Evented Object Code:

◆Set Movement Route:This Event (Wait)
:                  :◇Speed:4
◆If:Player is facing Down
  ◆If:Script:$gameMap.event(1).canPass($gameMap.event(1).x, $gameMap.event(1).y, 2)
    ◆Set Movement Route:This Event (Skip)
    :                  :◇Move Down
    ◆Set Movement Route:Player (Wait)
    :                  :◇Move Down
    ◆
  :End
  ◆
:Else
  ◆If:Player is facing Left
    ◆If:Script:$gameMap.event(1).canPass($gameMap.event(1).x, $gameMap.event(1).y, 4)
      ◆Set Movement Route:This Event (Skip)
      :                  :◇Move Left
      ◆Set Movement Route:Player (Wait)
      :                  :◇Move Left
      ◆
    :End
    ◆
  :Else
    ◆If:Player is facing Right
      ◆If:Script:$gameMap.event(1).canPass($gameMap.event(1).x, $gameMap.event(1).y, 6)
        ◆Set Movement Route:This Event (Skip)
        :                  :◇Move Right
        ◆Set Movement Route:Player (Wait)
        :                  :◇Move Right
        ◆
      :End
      ◆
    :Else
      ◆If:Player is facing Up
        ◆If:Script:$gameMap.event(1).canPass($gameMap.event(1).x, $gameMap.event(1).y, 8)
          ◆Set Movement Route:This Event (Skip)
          :                  :◇Move Up
          ◆Set Movement Route:Player (Wait)
          :                  :◇Move Up
          ◆
        :End
        ◆
      :End
      ◆
    :End
    ◆
  :End
  ◆
:End
◆If:Script:$gameMap.event(1).x === 5 && $gameMap.event(1).y === 4
  ◆Text:None, Window, Bottom
  :    :This is a message saying it worked.
  ◆
:End
 
Last edited by a moderator:

Panzerov

Villager
Member
Joined
Mar 2, 2016
Messages
6
Reaction score
0
First Language
Norwegian
Primarily Uses
Hi, first i just wanna say thanks a ton for the great guide and that i love having rocks that no longer spam noise when you push them against a wall.


But i see room for improvement as using several rocks on the same map using different id's can be quite tedious in terms of editing using this method.

I found the thread:





I tried to use this method for the script you provided and here is what i came up with:
 


$gameMap.events[@event_id].canPass($gameMap.events[@event_id].x, $gameMap.events[@event_id].y, 2)


The problem is this gives me this error when i try to push it:
[IMG]http://puu.sh/rJXLk/8781c78e19.jpg[/IMG]


I desperately want this to work, and thanks in advance for any help i get!


Also, not english native so i formulate oddly. Sorry for that
 
Last edited by a moderator:

SumRndmDde

Follower of RNGesus
Veteran
Joined
Jul 30, 2013
Messages
225
Reaction score
426
First Language
English
Primarily Uses
RMMV
Yeah, sorry, it wasn't until later that I realized that there was a way to do this.


Anyway, the code you're using looks like it's from VX Ace or something.


What you want to do is:


$gameMap.events(this._eventId).canPass($gameMap.events(this._eventId).x, $gameMap.events(this._eventId).y, 2);




This SHOULD work but don't quote me on it. :0
 
Last edited by a moderator:

Panzerov

Villager
Member
Joined
Mar 2, 2016
Messages
6
Reaction score
0
First Language
Norwegian
Primarily Uses
Yeah, sorry, it wasn't until later that I realized that there was a way to do this.


Anyway, the code you're using looks like it's from VX Ace or something.


What you want to do is:



$gameMap.events(this._eventId).canPass($gameMap.events(this._eventId).x, $gameMap.events(this._eventId).y, 2);




This SHOULD work but don't quote me on it. :0



I tried this and it produced another error
[IMG]http://puu.sh/rNx1N/ada30d6469.jpg[/IMG]


I have no idea what i am doing at this point, please help >_>
 

Panzerov

Villager
Member
Joined
Mar 2, 2016
Messages
6
Reaction score
0
First Language
Norwegian
Primarily Uses
I was able to get it to work by simply changing every instance of "$gameMap.events" to "$gameMap. event"


thanks once again for this wonderful tutorial
 

Code:
$gameMap.event(this._eventId).canPass($gameMap.event(this._eventId).x, $gameMap.event(this._eventId).y, 2);
 
Last edited by a moderator:

Latest Threads

Latest Posts

Latest Profile Posts

I've been in Fort Myers since Thursday night. I'm going home tomorrow or the next day... lol, I desperately need a good taste of homemade Japanese food. I might not be Japanese or even Asian (I'm American born and raised), but I absolutely love authentic Japanese cooking. Restaurant food doesn't do it justice.
Haven't been working on any of my projects or resources lately as I'll soon be moving to a new apartment. It's been a stressful move but I'm really looking forward to it.
//Sees it's the same price at Best Buy for a new SSD as Amazon
//Sees it's 103F outside and Best Buy is half a hour of driving.
//Orders from Amazon.
I'll wait the 2-3 days. :LZSwink:
Just a little teaser screenshot of Mountain Village...

Screenshot (364).png

Forum statistics

Threads
112,373
Messages
1,067,869
Members
146,025
Latest member
urmomsbigbazoongas
Top