godotengine / tps-demo

Godot Third Person Shooter with high quality assets and lighting
Other
955 stars 166 forks source link

Motion computation in player_input.gd #176

Open sebastienwood opened 8 months ago

sebastienwood commented 8 months ago

Issue description:

I am trying to replicate and understand the project as a Godot beginner, it is a mine of information on best practices.

One issues puzzles me with no solution after a lengthy research that all directed me to a fix which diverges from the demo that works fine.

The issues lies with the compute of motion in player_input.gd, here is what I need to use for the character to go in the "good direction"

motion = Vector2(
            Input.get_action_strength("move_left") - Input.get_action_strength("move_right"),
            Input.get_action_strength("move_forward") - Input.get_action_strength("move_backward"))

whereas the demo make use of:

motion = Vector2(
            Input.get_action_strength("move_right") - Input.get_action_strength("move_left"),
            Input.get_action_strength("move_back") - Input.get_action_strength("move_forward"))

Is there some trick that I am oblivious to ? If so, maybe we could comment the source code of player_input.gd to explain the process. Thanks.

Calinou commented 7 months ago

Note that nowadays, using Input.get_axis() (cross deadzone[^1]) and Input.get_vector() (circular deadzone[^2]) is recommended instead of separate Input.get_action_strength() calls.

[^1]: Recommended for player movement, so you can walk in a straight line. [^2]: Recommended for aiming.