Strafe movement

Godot Version

4.4

Question

`Hi all, i’m new in game dev, i’m wonder how to implement strafe movement according to mouse position? Currently my character moves by WASD rotating to the movement direction. I want to “turn on” strafe when I press right mouse button.
I use node based state machine
here my move node code:
extends State

@export var dash_state: State
@export var idle_state: State
@export var strafe_state: State

func process_input(event: InputEvent) → State:
return null

func process_physics(delta: float) → State:
var movement = get_movement_input() * move_speed
var target_angle = movement.angle()

if movement !=Vector2.ZERO:			
	parent.rotation = lerp_angle(parent.rotation, target_angle, delta * 5.0)		
parent.move_and_slide()
parent.velocity = movement

if movement == Vector2.ZERO:
	return idle_state		
return self

`

Get your strafe axis, and add that into the movement vector’s y component.

1 Like

Sorry for late answer and thank you! It works :slight_smile:

1 Like