How to show animation for a landing delay even if the player is holding left or right.

From the Asset Store
Basic Rounded Vector Geometry Player Design with Glow for 3 player games
  • I'm making a simple platformer and i made it so when the character lands he is delay for a short time before he can move again. It works fine but the animation for landing doesn't show if you hold left or right, and just displays the idle animation.

    I tried to fix by making it so if you hold an arrow key and land it will play the animation too, but it didn't work.

  • You could use a timer to handle this.

    Add the timer behaviour to your player object.

    Playerbox 'On Platform Landed' - Start timer "landing_delay" for 3 seconds (once only)

    -------------------------------- Playerbox Start Ignoring Platform user input

    Playerbox 'Is Timer "landing_delay" Running'

    <sub event> Trigger Once - Set animation to "Landing" (play from beginning)

    <sub event> On animation "Landing" finished - Set animation to "Idle" (play from beginning)

    Playerbox 'On Timer "landing_delay" - Playerbox Stop ignoring platform user input

    Then you would add the inverted condition: 'Playerbox 'Is Timer "landing_delay" Running' to all of your other player animation calls to make sure that none of them override the landing_delay animations.

  • I think it is because of the "On stopped / is on floor" condition, try to disable this event and check the result

  • this method works but when the platformer lands he doesn't do the Landing animation right away, he stays in the idle animation for around a full second. Ill screenshot again just incase its wrong.

    You could use a timer to handle this.

    Add the timer behaviour to your player object.

    Playerbox 'On Platform Landed' - Start timer "landing_delay" for 3 seconds (once only)

    -------------------------------- Playerbox Start Ignoring Platform user input

    Playerbox 'Is Timer "landing_delay" Running'

    <sub event> Trigger Once - Set animation to "Landing" (play from beginning)

    <sub event> On animation "Landing" finished - Set animation to "Idle" (play from beginning)

    Playerbox 'On Timer "landing_delay" - Playerbox Stop ignoring platform user input

    Then you would add the inverted condition: 'Playerbox 'Is Timer "landing_delay" Running' to all of your other player animation calls to make sure that none of them override the landing_delay animations.

  • You shouldn't need a timer for this; instead of using "On stopped" to set the animation, use "is on floor / is not moving / "Land" animation is not playing / Trigger once " and set the idle animation and controls enabled from here

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • ty ythis worked like a charm. invert is really useful, gotta remember that

    You shouldn't need a timer for this; instead of using "On stopped" to set the animation, use "is on floor / is not moving / "Land" animation is not playing / Trigger once " and set the idle animation and controls enabled from here

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)