@BrightC (BrightC) posted a new topic, subject "Avoid character slowing down when moving diagonally". It read:

   I have successfully set up the movement for a PaperCharacter in a top-down 2D game in the style of “Zelda”. However, whenever my character moves diagonally, it slows down notably. Normally that would make sense, as the “length of legs” of the character obviously stays the same, so it could only move onto a point on a circle around him, which is what I assume happens internally there. In older games - as this one is trying to mimic -, this was not the case, and it just feels a lot more natural for the character to move with the combined speed of the horizontal and vertical axes when moving diagonally, rather than the “realistic” speed.
    
    Since all of this is a little bit difficult to explain, let me just give an example (Assuming the movement input lasts for 1 second):  
    If I “Add Movement Input” with the vector (1,0,0) and the character moves with a speed of 300, this will move it 300 units to the right.  
    If I “Add Movement Input” with the vector (0,1,0) and the character moves with a speed of 300, this will move it 300 units up.  
    If I “Add Movement Input” with the vector (1,1,0) and the character moves with a speed of 300, this will move it 300 units up and right. This is where the undesireable behaviour occurs, since the distance which the character moves would have to be sqrt(250^2 + 250^2) = 353 in order for the character to keep the same speed as if it was moving on both axes seperately, when moving diagonally.
    
    Does anyone have any ideas how to avoid this problem? The best solution I could come up with is adding a custom movement mode which does the same as the “Walking” mode, except that it handles the way the movement is applied slightly differently. That being said, this would require me to find the exact implementation of the “Walk” movement somewhere in a few thousand lines of C+±code, so I wasn't exactly successful regarding that, and doubt I will be in the future. So yeah, any creative solutions? Am I just missing an option that I have to tick somewhere, or  
    does anyone know where I can at least find the code for the “Walking” mode, so I can make the necessary changes? Any help would be appreciated as I am pretty much out of ideas here.

After which, @pelemiq (pelemiq) added

    One option is to add an arrow to the character that represents the direction, then, if you want to add the movement, you just move the character the desired amount of distance in the arrow's direction vector.

Then @BrightC (BrightC) said

    Unfortunately that is not going to create any movement that would be comparable to the “Walking” movement in any way, as that is definetly using force as well as a bunch of other physics internally, which are things I would like to keep.

After which, @2_stooges (2 stooges) added

    I've been having the same problem, and am doing the same thing that you are. I believe that there is some kind of timeline for your characters movement, but I don't know how to access it. But a temporary solution might be some booligan variables as to whether you are pressing right and up, and if both are true, increase the character's speed. Let me know if this helps!

After which, @Distul (Distul) added

    When receiving input you can determine if left/right or up/down is pressed, correct? If you know the normal movement units are 300 but you need to move 353 why not just adjust the movement speed when both inputs are detected and reset it when they are not?
    
    EG: MovementSpeed = MovementSpeed_Normal * (353/300)
    
    Would this not work?


{'source': 'discourse', 'url': 'https://forums.unrealengine.com/t/avoid-character-slowing-down-when-moving-diagonally/358562', 'title': 'Avoid character slowing down when moving diagonally', 'views': 780, 'has_accepted_answer': False, 'word_count': 621, 'like_count': 0, 'reply_count': 4, 'participant_count': 4, 'posts': 5, 'tags': 'question Character-Movement Character 2D speed top-down', 'author': '@BrightC (BrightC)', 'participants': '@BrightC (BrightC), @pelemiq (pelemiq), @2_stooges (2 stooges), @Distul (Distul)', 'image_url': [None], 'created_at': '2016-05-25T17:53:17.000Z', 'last_posted_at': '2016-08-01T16:35:17.000Z'}