Code Monkey home page Code Monkey logo

Comments (3)

prime31 avatar prime31 commented on June 22, 2024

That change was indeed a way to allow walking up a sloped one-way platform.
I'll have to give it some though to see if there is a clean way to handle
both or if sloped one-way platform support should be a boolean
configuration (seems like it is not very common).

Mike

On Sat, Jan 3, 2015 at 4:09 PM, astrobread [email protected] wrote:

If a one-way platform is placed just overhead of the character, they
cannot jump completely through it.

To recreate place a one-way platform just above the player. They don't
need to be touching, but it has to be close enough so that the initial jump
velocity will collide them in the first frame of the jump.

Expected result is that the player passes through the one-way platform,
then lands on it after the jump is complete. Observed result is that the
player travels most of the way through the platform, then their jump ends
much sooner than expected and they fall back to where they started.

[image: onewayjumpsnap]
https://cloud.githubusercontent.com/assets/8303758/5604181/606c6696-9371-11e4-8000-2a6e8aedf0da.PNG

This issue can be resolved by modifying this line in
CharacterController2D.moveVertically:

if (isGoingUp && !collisionState.wasGroundedLastFrame)
mask &= ~oneWayPlatformMask;

If you remove the wasGroundedLastFrame condition the platform behaves as
expected. Was this condition included to allow one-way platforms with
slopes? Or is it for something else I'm not aware of?


Reply to this email directly or view it on GitHub
#43.

from charactercontroller2d.

astrobread avatar astrobread commented on June 22, 2024

This is just from eyeballing the code so I could be missing something, but I don't think this change would impact one-way platform slopes.

There are no meaningful collisions with one-way platforms while ascending in MoveVertically(). It only casts rays from the top of the collider in this situation, so anything it hits has nothing to do with what you're walking across. When ascending, this function's only job is to prevent you from cracking your head against solid platforms.

What makes sloped one-way platforms work is already inside MoveHorizontally(), which uses similar logic to detect slopes from either kind of platform. Whereas the grounded check inside MoveVertically() only seems to prevent jumping onto one-way platforms

from charactercontroller2d.

prime31 avatar prime31 commented on June 22, 2024

You might be right. I'll do some rest with and without the check and make sure all is well.

On Jan 4, 2015, at 4:50 PM, astrobread [email protected] wrote:

This is just from eyeballing the code so I could be missing something, but I don't think this change would impact one-way platform slopes.

There are no meaningful collisions with one-way platforms while ascending in MoveVertically(). It only casts rays from the top of the collider in this situation, so anything it hits has nothing to do with what you're walking across. When ascending, this function's only job is to prevent you from cracking your head against solid platforms.

What makes sloped one-way platforms work is already inside MoveHorizontally(), which uses similar logic to detect slopes from either kind of platform. Whereas the grounded check inside MoveVertically() only seems to prevent jumping onto one-way platforms


Reply to this email directly or view it on GitHub.

from charactercontroller2d.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.