One sided collision?

<SOLVED> scroll down

Hi,
i´m trying to make a mario-style game. Everything works fine except one thing. If you know those games with mario on snes, there are these platforms (hills) where you can jump on - and the thing is you are able to jump up there from underneath. …hard to explain. What i´m looking for is an option that enables a face to detect collision from just one side. I thought that this is fact due to the normals, but it doesn´t seem so…
Does anyone have an idea? i can post the file if needed. thanks.

This is pretty simple to achieve actually… Try this:

  1. Select your mesh.

  2. Press F to enter face select mode.

  3. Press A (you may have to do it twice) so that all the faces are highlighted.

  4. In the edit buttons window, disable collision for all faces.
    http://i33.photobucket.com/albums/d63/Ven0mSeven/collision.jpg

  5. Now select all the faces you wish to enable collision for.

  6. In the edit buttons window, enable collision for these faces.
    http://i33.photobucket.com/albums/d63/Ven0mSeven/collision4.jpg

Edit:

To ensure that your player can jump on the hill from underneath, make sure all your face normals are pointing outward (CTRL+N) after doing this.

That doesn’t appear to work, V7X. It makes the walls ghostly but still makes the roof solid from both directions.

I don’t think it’s possible to enable one-sided collisions. However, there may be a hack possible: when Mario (or other character) is moving upwards, all semisoft platforms (jump through, can’t drop through) do Python’s suspendDynamics() function. When the char moves down or isn’t in the air, resumeDynamics() is called. So the platform’s collision surface only exists when you’re standing, walking, or landing. I don’t know how it would work in practice though.

That only works if the platform is dynamic though.

You’re right Toomai, for some reason I thought collisions wouldnt work on the side of a polygon where the normal was pointing in the opposite direction. I guess I was wrong. Oh well… thats how you learn I guess = )

I had an idea…
i placed two invisible objects at the platform, one cube beneath the platform and one above. My idea was to have both of them trigger a message to a mesh (with collision turned on) at collision or near or touch and replace it with a representation, that has been placed to enable the jump-through…and vice versa.
but i can´t figure out, how to get the cubes receive the needed information ( i.e. Character “collides” with the cube) AND have the cube disregard all collisions with the character/let him pass through. Not even one Actuator seems to work there (collision, near, touch, ray). I already played around with “ghost” turned of actor and facemode->turn off collision and so on… Any ideas?

EDIT: And i saw that the console said : static collision needed or so. I think that means something that relates to my problem

Yay, i got it working in the end. using the Forumsearch i found out that the problem was the message-actuator needed OB’object’ instead of ‘object’. For people looking for an answer to that same question i´ve made a .blend :

http://uploader.polorix.net//files/1060/OneSidedCollision.blend

in this example i didn´t turn the collision plane invisble, so you can better see, what´s happening.
Controls are -a,d- sideways and -w- upwards.