More example code from what I'm trying to do:
func _physics_process(_delta: float) -> void:
var position: Vector3 = actor.global_transform.origin
var direction: Vector3 = (verts[index] - position).normalized()
var avoidance: Vector3 = calc_avoidance() * AVOIDANCE_WEIGHT
var desired_velocity: Vector3 = (direction + avoidance).normalized() * actor.traits.MAX_SPEED
var steering: Vector3 = (desired_velocity - actor.velocity) / actor.traits.MASS
# Force
actor.velocity = actor.move_and_slide_with_snap(actor.velocity + steering, SNAP, Vector3.UP, true)
# Rotation
actor.rotation.y = atan2(-actor.velocity.x, -actor.velocity.z)
func calc_avoidance() -> Vector3:
var left: float = 1.0 if actor.ray_left.is_colliding() else 0.0
var right: float = -1.0 if actor.ray_right.is_colliding() else 0.0
return Vector3(left + right, 0, 0)