Running around while on fire causes...stickiness?

This isn’t really a technical problem, it’s more like a discussion on whether I need to remove a gameplay element.

So in this game, when either you or your enemies get hit with certain attacks, you catch fire. The player can control turning but must always run forwards, while enemies run randomly. Burning stacks: if you’re already burning and get burnt again, the burn time increases. Also, burning is contagious: if you touch a burning enemy, you’re set on fire (not for very long). Finally, enemies keep burning until they disappear; they stay on fire when they’re KO’d.

Here’s the issue: When you’re burning and you run headlong into a KO’d but burning enemy, you get knocked back a little for the damage animation. Then you start running again, straight into the enemy again. The knockback isn’t large enough to be able to turn away. And the cycle repeats until the enemy vanishes or the player accumulates so much extra burn damage that they lose.

So the question is this: Is there an idea that can circumvent this problem, or do I have to remove a feature from paragraph 2? None of them are very difficult to ax, but they’re kind of like chocolate bars: you want them all. (Lame Halloween analogy.) Not in the above paragraph, but still an option, is decreasing enemy vanishing time - but this doesn’t help if the enemy is caught in a corner yet not KO’d, or any other situation where an enemy can’t move (e.g. timefreeze effect, fixed enemies such as cannons).

sounds like the knockback force, if the KO’d property is set, needs to be greater so that you can then turn away.

Looks like I forgot to mention something…I didn’t add any knockback force. Objects in Bullet “pop” away from each other if they overlap, which may happen because I’m using dLoc for movement. The “popping” doesn’t always happen, the objects may be colliding constantly yet not inside each other. And I don’t know how to do knockback properly: I can’t figure out how to make knockback depend on the enemy’s position.

something you could try is making it so that when you are knocked down, instead of going the same way, you start running in a random direction. so it would go from this:

run into burning enemy.
get knocked back.


run into burning enemy.
get knocked back.
run random direction.

or, on the Collision event, add a little additonal vector force to the collider (and the KO’s collidee) based on the current speed and direction of the actor. Like kicking a can; when you collide with a KO, the KO slides ‘forward’ a little as if you kicked him. Maybe doing just that would give you enough room, together with the little bullet kickback, to be able to turn.

A small delay could also do the trick. Maybe have a humorous animation of him getting caught on fire, and trying to put it out, but quickly lighting up completely, and then switching to the running around, but only controlling the turning sequence.

yeah, if you could use a timer property to delay the collision, then you would have enough time, but it’s hard to be more specific than that.