Collision Checker Plugin – MV Plugin

      7 Comments on Collision Checker Plugin – MV Plugin

This is a plugin that allows developers to check the collision of various coordinates/directions on the map for event collision.


Look at the code or download the Plugin:


Collision Checker
SumRndmDde

This is a plugin that allows developers to check the collision of various
coordinates/directions on the map for event collision.

This plugin uses different codes within the “Script” section of the
Conditional Branch event. Here is a list of them:

========================================================================
Command List
========================================================================

In order to check these, place them into the “Script” section of the
Conditional Branch event. These will check collisions relative to the
event in which the Conditional Branch is located in.

[is [x, y] clear]

Checks to see if the spot at point (x,y) is passable.

[is front clear]

Checks to see if the spot in front of the event is passable.
This is different based off of where the event/player is looking.

[is back clear]

Checks to see if the spot behind the event is passable.
This is different based off of where the event/player is looking.

[is left clear]

Checks to see if the spot to the left of the event is passable.
This is different based off of where the event/player is looking.

[is right clear]

Checks to see if the spot to the right of the event is passable.
This is different based off of where the event/player is looking.

[is north clear]

Checks to see if the spot above the event is passable.
This consistently refers to the same direction.

[is south clear]

Checks to see if the spot below the event is passable.
This consistently refers to the same direction.

[is east clear]

Checks to see if the spot to the east of the event is passable.
This consistently refers to the same direction.

[is west clear]

Checks to see if the spot to the west of the event is passable.
This consistently refers to the same direction.

========================================================================
Player Command List
========================================================================

If you wish to check collision relative to the Player, you can use:

[is player front clear]

[is player back clear]

[is player left clear]

[is player right clear]

[is player north clear]

[is player south clear]

[is player right clear]

[is player left clear]

Use the descriptions above to understand what these commands check for.

========================================================================
External Event Command List
========================================================================

If you wish to check collision relative to an event besides the one the
Conditional Branch is within, you can use:

event(x)

Simple replace ‘x’ with the ID of the Event on the map.
You can do:

[is event(x) front clear]

[is event(x) back clear]

[is event(x) left clear]

[is event(x) right clear]

[is event(x) north clear]

[is event(x) south clear]

[is event(x) right clear]

[is event(x) left clear]

========================================================================
At Distance
========================================================================

If you wish to check a certain distance in the direction you’re checking,
you can add “at distance x”.

For example:

[is up clear at distance 2]

This would check if the second tile in the up direction of the event
is clear.

This can be added to all directional checks:

[is event(5) left clear at distance 5]
[is player down clear at distance 3]

========================================================================
Multiple Conditions (AND)
========================================================================

If you wish for multiple conditions to have to be true, place an “and”
in between each of them.

For example:

[is player front clear] and [is east clear at distance 4]

This would only be true if the player’s front was clear and the east
tile 4 tiles away relative to the event was clear.

========================================================================
Multiple Conditions (OR)
========================================================================

If you wish for only one condition to be true in order for the entire
conditional branch to be true, then you would need to use “or”.

For example:

[is back clear] or [is front clear] or [is event(3) front clear]

If either the back of the event 2 tiles down is clear or is Event ID 3’s
front is clear, then the entire conditional branch will be clear.

Keep in mind it is impossible to combine AND and OR conditions.


Screenshot:

collision-checker-ss

7 thoughts on “Collision Checker Plugin – MV Plugin

  1. Fumetsujo

    Fantastic plugin! I was about to create something based on javascript arrays and loops but thanks to your genius concept I can experiment in all ease (and in low memory usage). Thank you!

    Reply
  2. Mike

    Hello SumRndmDde! Is there a way to make with this something like….boulder dash boulder? I’m looking for way to make crushing stones, falling from cailing if there is nothing below them.

    Reply
  3. Tiberium

    I found kind of a “Bug” with the function “at distance”
    Per Example:
    If there is a blocking Item at distance 2 , it will also say that distance 3 is not clear even it is clear.
    If there is a blocking Item at distance 1 and 3 (all other are clear) it will say that distance 1, 2, 3 & 4 are not clear.

    If you user “[is [x, y] clear]” it works korrekt.

    Reply
    1. Tiberium

      I found how to “fix” this bug:
      You go to line 321 (_.checkDirection) and remove the “-1” and in the switch-case you “5” an don’t “d” in target.canPass
      So it shout look like this:

      _.checkDirection = function(target, d, dis) {
      if(dis && dis.match(/at\s*distance\s*(\d+)/)) dis = parseInt(RegExp.$1);
      dis = (dis || 0);
      switch(d) {
      case 2:
      return target.canPass(target.x, target.y + dis, 5);
      break;
      case 4:
      return target.canPass(target.x – dis, target.y, 5);
      break;
      case 6:
      return target.canPass(target.x + dis, target.y, 5);
      break;
      case 8:
      return target.canPass(target.x, target.y – dis, 5);
      break;
      }
      };

      Reply
      1. Porfirio Orta-Middendorf

        I was having the same difficulty. Tried what you suggested. Still the events get stuck at a wall. I’m using the [is event(x) front clear] with an else branch under a parallel triggered event. Does anyone know what I could be doing wrong?

        Reply

Leave a Reply

Your email address will not be published. Required fields are marked *