Transition godot 3 to 4

Godot Version

Godot 4.2

Question

I have a godot 3 script that i want to move into godot 4 but the problem is that i dont know how to change one line in my code:

		velocity = move_vec.normalized() * 200 
		velocity = move_and_slide(velocity)```
the move and slide function
and heres all the code if needed:

extends CharacterBody2D

enum STATES {NORMAL, INVENTORY, DEAD}
var cur_state = STATES.NORMAL

var upper_arm_length = 0.0
var lower_arm_length = 0.0
var total_arm_length = 0.0

var min_hand_dist = 30.0

@onready var body = $graphic/bodypivot
@onready var physical_hand = $Hand
@onready var shoulder = $graphic/UpperArmPivot
@onready var elbow = $graphic/UpperArmPivot/LowerArmPivot
@onready var hand_base = $graphic/UpperArmPivot/LowerArmPivot/HandBase

var last_m_pos = Vector2.ZERO
var last_hand_pos = Vector2.ZERO
var release_m_pos = Vector2.ZERO
var move_smooth_factor = 0.05

func _ready():
upper_arm_length = elbow.position.x
lower_arm_length = hand_base.position.x
total_arm_length = upper_arm_length + lower_arm_length

func _process(delta):
update_arm_graphics()

func _physics_process(delta):
if cur_state == STATES.NORMAL:
process_normal_state(delta)

func process_normal_state(delta):
var m_pos = get_global_mouse_position()
if Input.is_action_pressed(“left_click”):
hand_close()

	var move_vec: Vector2 = m_pos - last_m_pos
	
	# Get relevant positions
	var shoulder_pos: Vector2 = shoulder.get_global_position()
	var hand_pos: Vector2 = physical_hand.get_global_position()
	var new_s_pos: Vector2 = shoulder_pos - move_vec

	if new_s_pos.distance_to(hand_pos) > total_arm_length:
		move_vec = Vector2.ZERO

	rotate_body_to_dir(-move_vec)

	velocity = move_vec.normalized() * 200 
	velocity = move_and_slide(velocity)

	move_hand_to_pos(m_pos, delta)
else:

	hand_open()
	if release_m_pos != Vector2.ZERO:
		move_hand_to_pos(release_m_pos, delta)
	last_hand_pos = physical_hand.get_global_position()
	release_m_pos = m_pos

last_m_pos = m_pos 

func update_arm_graphics():
var shoulder_pos = shoulder.global_position
var hand_pos = physical_hand.global_position
var shoulder_to_hand = hand_pos - shoulder_pos
var shoulder_to_hand_dist = shoulder_to_hand.length()

shoulder_to_hand_dist = clamp(shoulder_to_hand_dist, min_hand_dist, total_arm_length)

shoulder.global_rotation = atan2(shoulder_to_hand.y, shoulder_to_hand.x)

var angles = SSS_calc(upper_arm_length, lower_arm_length, shoulder_to_hand_dist)

shoulder.global_rotation += angles.B
elbow.rotation = angles.C

func rotate_body_to_dir(rotate_vec: Vector2):
var right = body.to_global(Vector2.RIGHT) - body.global_position
var s = 1
if right.dot(rotate_vec) < 0:
s = -1
body.global_rotation_degrees += s * rotate_vec.length() / 2

func move_hand_to_pos(goal_pos, delta):
var shoulder_pos = shoulder.global_position
var hand_move_vec = goal_pos - shoulder_pos
if hand_move_vec.length() > total_arm_length:
hand_move_vec = hand_move_vec.normalized() * total_arm_length

physical_hand.global_position = shoulder_pos + hand_move_vec

func move_hand_to_pos_smoothly(goal_pos, delta):
var shoulder_pos = shoulder.global_position
var hand_move_vec = goal_pos - shoulder_pos
if hand_move_vec.length() > total_arm_length:
hand_move_vec = hand_move_vec.normalized() * total_arm_length

func SSS_calc(side_a, side_b, side_c):
if side_c >= side_a + side_b:
return {“A”: 0, “B”: 0, “C”: 0}

var angle_a = law_of_cos(side_b, side_c, side_a)
var angle_b = law_of_cos(side_c, side_a, side_b) + PI
var angle_c = PI - angle_a - angle_b

return {"A": angle_a, "B": angle_b - PI, "C": angle_c}

func law_of_cos(a, b, c):
if 2 * a * b == 0:
return 0
return acos((a * a + b * b - c * c) / (2 * a * b))

func hand_open():
$graphic/UpperArmPivot/LowerArmPivot/HandBase/Handopen.show()
$graphic/UpperArmPivot/LowerArmPivot/HandBase/Handclose.hide()

$graphic/UpperArmPivot/LowerArmPivot/HandBase/Handopenshadow.show()
$graphic/UpperArmPivot/LowerArmPivot/HandBase/Handcloseshadow.hide()

func hand_close():
$graphic/UpperArmPivot/LowerArmPivot/HandBase/Handopen.hide()
$graphic/UpperArmPivot/LowerArmPivot/HandBase/Handclose.show()

$graphic/UpperArmPivot/LowerArmPivot/HandBase/Handopenshadow.hide()
$graphic/UpperArmPivot/LowerArmPivot/HandBase/Handcloseshadow.show()
This is not my code, so i don't know how to change it, im a beginner, thanks for the help !
velocity = move_vec.normalized() * 200 
move_and_slide()
1 Like