My guess is that because your game environment is circular, the character becomes airborne randomly as it moves, which may make the platform behavior think that the character is not on the ground. You could probably fix this by checking if the character overlaps a platform with an offset of +1 or +2 pixels(or whatever amount helps) in the y axis, and if so when pressing up to make the character jump.
It might cause the character to jump twice if the character is already on the ground, so you can add another condition that checks if the character isn't on the ground(but is overlapping with an offset)..
Also, if you don't want to check via an offset, youcould use another sprite pinned to the character and check if it is overlapping the ground. or you can check if point is overlapping ground and use player coordinates..