A dungeon delver roguelike using Pathfinder 2nd edition rules
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Implemented ramp up and ramp down for movement, need to add rotation

+45 -18
+43 -17
camera/camera.gd
··· 5 5 @export var rotate_speed: float = 2.0 6 6 7 7 @export_group("Movement ADSR variables") 8 + @export_subgroup("Move") 8 9 @export var attack_move_time: float = 0.2 9 - @export var attack_rotate_time: float = 0.2 10 10 @export var decay_move_time: float = 0.01 11 - @export var decay_rotate_time: float = 0.01 12 11 @export var sustain_move_percent: float = 1.0 13 - @export var sustain_rotate_percent: float = 1.0 14 12 @export var release_move_time: float = 0.2 13 + @export_subgroup("Rotate") 14 + @export var attack_rotate_time: float = 0.2 15 + @export var decay_rotate_time: float = 0.01 16 + @export var sustain_rotate_percent: float = 1.0 15 17 @export var release_rotate_time: float = 0.2 16 18 17 - @export_group("Movement ADSR helpers") 18 - @export var left_right_pressed_time: float = 0.0 19 - @export var left_right_released_time: float = 0.0 20 - @export var up_down_pressed_time: float = 0.0 21 - @export var up_down_released_time: float = 0.0 22 - @export var rotate_pressed_time: float = 0.0 23 - @export var rotate_released_time: float = 0.0 19 + var left_right_pressed_time: float = 0.0 20 + var left_right_released_time: float = 0.0 21 + var up_down_pressed_time: float = 0.0 22 + var up_down_released_time: float = 0.0 23 + var rotate_pressed_time: float = 0.0 24 + var rotate_released_time: float = 0.0 25 + var last_move_direction: Vector3 = Vector3.ZERO 26 + 27 + @export var move_direction: Vector3 24 28 25 29 func _physics_process(delta: float) -> void: 26 - var move_direction: Vector3 = Vector3.ZERO 27 - 28 30 if Input.is_action_just_pressed("Right") or Input.is_action_just_pressed("Left"): 29 31 left_right_pressed_time = Time.get_unix_time_from_system() 30 32 left_right_released_time = -1.0 31 33 32 34 if Input.is_action_just_released("Right") or Input.is_action_just_released("Left"): 33 35 left_right_released_time = Time.get_unix_time_from_system() 36 + last_move_direction = move_direction 34 37 35 38 if Input.is_action_just_pressed("Up") or Input.is_action_just_pressed("Down"): 36 39 up_down_pressed_time = Time.get_unix_time_from_system() ··· 38 41 39 42 if Input.is_action_just_released("Up") or Input.is_action_just_released("Down"): 40 43 up_down_released_time = Time.get_unix_time_from_system() 44 + last_move_direction = move_direction 41 45 42 46 if Input.is_action_just_pressed("RotateLeft") or Input.is_action_just_pressed("RotateRight"): 43 47 rotate_pressed_time = Time.get_unix_time_from_system() ··· 46 50 if Input.is_action_just_released("RotateLeft") or Input.is_action_just_released("RotateRight"): 47 51 rotate_released_time = Time.get_unix_time_from_system() 48 52 49 - move_direction.x = (Input.get_action_strength("Right") - Input.get_action_strength("Left")) * adsr(attack_move_time, decay_move_time, sustain_move_percent, release_move_time, Input.is_action_pressed("Right") or Input.is_action_pressed("Left"), Time.get_unix_time_from_system(), left_right_pressed_time, left_right_released_time) 50 - move_direction.z = (Input.get_action_strength("Down") - Input.get_action_strength("Up")) * adsr(attack_move_time, decay_move_time, sustain_move_percent, release_move_time, Input.is_action_pressed("Up") or Input.is_action_pressed("Down"), Time.get_unix_time_from_system(), up_down_pressed_time, up_down_released_time) 53 + move_direction = Vector3.ZERO 54 + 55 + var left_right_adsr = adsr(attack_move_time, decay_move_time, sustain_move_percent, release_move_time, Input.is_action_pressed("Right") or Input.is_action_pressed("Left"), Time.get_unix_time_from_system(), left_right_pressed_time, left_right_released_time) 56 + var up_down_adsr = adsr(attack_move_time, decay_move_time, sustain_move_percent, release_move_time, Input.is_action_pressed("Up") or Input.is_action_pressed("Down"), Time.get_unix_time_from_system(), up_down_pressed_time, up_down_released_time) 57 + var rotate_adsr = adsr(attack_rotate_time, decay_rotate_time, sustain_rotate_percent, release_rotate_time, Input.is_action_pressed("RotateLeft") or Input.is_action_pressed("RotateRight"), Time.get_unix_time_from_system(), rotate_pressed_time, rotate_released_time) 58 + 59 + move_direction.x = (Input.get_action_strength("Right") - Input.get_action_strength("Left")) * left_right_adsr 60 + move_direction.z = (Input.get_action_strength("Down") - Input.get_action_strength("Up")) * up_down_adsr 51 61 52 62 move_direction *= move_speed 53 63 54 - var rotate_direction: float = (Input.get_action_strength("RotateRight") - Input.get_action_strength("RotateLeft")) * adsr(attack_rotate_time, decay_rotate_time, sustain_rotate_percent, release_rotate_time, Input.is_action_pressed("RotateLeft") or Input.is_action_pressed("RotateRight"), Time.get_unix_time_from_system(), rotate_pressed_time, rotate_released_time) 64 + if move_direction.x == 0.0: 65 + if last_move_direction.x > 0.0: 66 + move_direction.x = move_speed * left_right_adsr 67 + elif last_move_direction.x < 0.0: 68 + move_direction.x = move_speed * left_right_adsr * -1.0 69 + 70 + if move_direction.x == 0.0: 71 + last_move_direction.x = 0.0 72 + 73 + if move_direction.z == 0.0: 74 + if last_move_direction.z > 0.0: 75 + move_direction.z = move_speed * up_down_adsr 76 + elif last_move_direction.z < 0.0: 77 + move_direction.z = move_speed * up_down_adsr * -1.0 78 + 79 + if move_direction.z == 0.0: 80 + last_move_direction.z = 0.0 81 + 82 + var rotate_direction: float = (Input.get_action_strength("RotateRight") - Input.get_action_strength("RotateLeft")) * rotate_adsr 55 83 var old_rotation: float = global_rotation_degrees.y 56 84 57 85 move_direction = move_direction.rotated(Vector3.UP, deg_to_rad(old_rotation)) ··· 71 99 r = 0.0 72 100 else: 73 101 r = min(round((time - released) * 100) / 100, release) 74 - 75 - print("Held: ", held, ", Time - Pressed: ", p, ", Time - Released: ", r) 76 102 77 103 if held: 78 104 var t = time - pressed
+2 -1
camera/camera.tscn
··· 6 6 script = ExtResource("1_lw1ob") 7 7 move_speed = 0.5 8 8 rotate_speed = 1.0 9 - release_move_time = 5.0 9 + attack_move_time = 0.5 10 + release_move_time = 0.5 10 11 11 12 [node name="SpringArm3D" type="SpringArm3D" parent="."] 12 13 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.08832)