Axis issues? Seemingly conjoined!

Godot Version

4.3

Question

I’m following a tutorial and have seemed stumble aacross an issue with their coding. Being new to the Godot engine but finding it fun i wan’t to press on but need a kind soul to check the coding for me. So i digress here’s the coding.

extends RigidBody3D

var mouse_sensitivity := 0.001
var twist_input := 0.0
var pitch_input := 0.0

@onready var twist_pivot := $TwistPivot
@onready var pitch_pivot := $TwistPivot/PitchPivot

func _ready() -> void:
	Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)# Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
	var input := Vector3.ZERO
	input.x = Input.get_axis("move_left", "move_right")
	input.z = Input.get_axis("move_forward", "move_back") 
	
	apply_central_force(twist_pivot.basis * input * 1200.00 * delta)
	
	var aligned_force = twist_pivot.basis * input
	
	if Input.is_action_just_pressed("ui_cancel"):
		Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
		
	twist_pivot.rotate_y(pitch_input)
	pitch_pivot.rotate_x(pitch_input)
	pitch_pivot.rotation.x = clamp(pitch_pivot.rotation.x,
			deg_to_rad(-30),
			deg_to_rad(30)
	)
	twist_input = 0.0
	pitch_input = 0.0



func _unhandled_input(event: InputEvent) -> void:
	if event is InputEventMouseMotion:
		if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
			twist_input = - event.relative.x * mouse_sensitivity
			pitch_input = - event.relative.y * mouse_sensitivity

You state this var but never use it:

var aligned_force = twist_pivot.basis * input

I think the first one should use twist_input, not pitch_input.

Finally, you might want to consider using _physics_process instead of _process as this will only be called once per frame, whereas _process might be called multiple times for each frame.

Other than that, it all looks great! Good job.

1 Like

omg thanks!

1 Like