0 Favourites

2 Sprites collision problem

  • Hey, I have a character made of 2 150px by 150px sprites and I want to move him on a grid, so I tried this:

    Basically, when I push "A" or Left Arrow, I move the bottom half 150px to the left (And since the top half will be pinned to the bottom half - 150px in the Y direction, it will move the top one too)

    Then I check if the bottom half is overlapping the sprite "Ground" (So it would not go trough it) and if it is, I would add 150px to the bottom half, moving it back to it's place.

    The problem comes when I apply the same code to the top half, but this time it does not work...

    I also tried: If Bottom Half is overlapping Ground|

    or | => then Bottom Half set X to self.X + 150px

    If Top Half is overlapping Ground |

    But this didn't work either...

    What am I doing wrong?

    (Here is the capx: https://www.dropbox.com/s/b1lp1puv1i81t ... .capx?dl=0)

  • I think you are not particularly doing something wrong, I just think C2 does not register yet the overllap, after muliple attempts that is the conclusion I am coming to.

    I used another method, using the might of overllaping at offset, hope it works fine for your purpose: https://1drv.ms/u/s!AjkoCSebIn9JjCEO0d_UMx6pohZh

  • I don't understand, you don't want the character to be able to move if the top half is next to a wall, is that right?

    So you shouldn't say "if top half is overlapping ground -> move left", you should say "if top half isn't overlapping ground on the left -> move left".

    In this case you should use "is overlapping at offset".

    You're also checking and moving for both bottom and top half. You're basically saying "if bottom part is overlapping ground and player presses left -> move left -> then check if the top half part is also overlapping ground -> move left again".

    If you're trying to make it so the both parts can only move when there's no ground on where they are trying to move, you should do this:

  • Construct 3

    Buy Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Buy Now Construct 3 users don't see these ads
  • I think you are not particularly doing something wrong, I just think C2 does not register yet the overllap, after muliple attempts that is the conclusion I am coming to.

    I used another method, using the might of overllaping at offset, hope it works fine for your purpose: https://1drv.ms/u/s!AjkoCSebIn9JjCEO0d_UMx6pohZh

    I don't understand, you don't want the character to be able to move if the top half is next to a wall, is that right?

    So you shouldn't say "if top half is overlapping ground -> move left", you should say "if top half isn't overlapping ground on the left -> move left".

    In this case you should use "is overlapping at offset".

    You're also checking and moving for both bottom and top half. You're basically saying "if bottom part is overlapping ground and player presses left -> move left -> then check if the top half part is also overlapping ground -> move left again".

    If you're trying to make it so the both parts can only move when there's no ground on where they are trying to move, you should do this:

    Thank you very much for the help, guys!

    I did not know that overlap at offset was a thing =D

    I was first moving the player and then checking to see if he was overlapping with the ground (and if he was, I would move him back)

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)
Similar Topics Posts Views Last Post
Unread hot topic
0 Favourites
Sprite Font Generator - v3
368 112,399
RetroDaddy's avatar
RetroDaddy
Unread hot topic
86 28,726
St4rDu57's avatar
St4rDu57
Unread hot topic
153 104,460
DravenX's avatar
DravenX