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.

Added ramp up and down function to camera movement, needs tweaking, ramp down not fulling working

+80 -3
+79 -3
camera/camera.gd
··· 4 4 @export var move_speed: float = 2.0 5 5 @export var rotate_speed: float = 2.0 6 6 7 + @export_group("Movement ADSR variables") 8 + @export var attack_move_time: float = 0.2 9 + @export var attack_rotate_time: float = 0.2 10 + @export var decay_move_time: float = 0.01 11 + @export var decay_rotate_time: float = 0.01 12 + @export var sustain_move_percent: float = 1.0 13 + @export var sustain_rotate_percent: float = 1.0 14 + @export var release_move_time: float = 0.2 15 + @export var release_rotate_time: float = 0.2 16 + 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 24 + 7 25 func _physics_process(delta: float) -> void: 8 26 var move_direction: Vector3 = Vector3.ZERO 9 27 10 - move_direction.x = Input.get_action_strength("Right") - Input.get_action_strength("Left") 11 - move_direction.z = Input.get_action_strength("Down") - Input.get_action_strength("Up") 28 + if Input.is_action_just_pressed("Right") or Input.is_action_just_pressed("Left"): 29 + left_right_pressed_time = Time.get_unix_time_from_system() 30 + left_right_released_time = -1.0 31 + 32 + if Input.is_action_just_released("Right") or Input.is_action_just_released("Left"): 33 + left_right_released_time = Time.get_unix_time_from_system() 34 + 35 + if Input.is_action_just_pressed("Up") or Input.is_action_just_pressed("Down"): 36 + up_down_pressed_time = Time.get_unix_time_from_system() 37 + up_down_released_time = -1.0 38 + 39 + if Input.is_action_just_released("Up") or Input.is_action_just_released("Down"): 40 + up_down_released_time = Time.get_unix_time_from_system() 41 + 42 + if Input.is_action_just_pressed("RotateLeft") or Input.is_action_just_pressed("RotateRight"): 43 + rotate_pressed_time = Time.get_unix_time_from_system() 44 + rotate_released_time = -1.0 45 + 46 + if Input.is_action_just_released("RotateLeft") or Input.is_action_just_released("RotateRight"): 47 + rotate_released_time = Time.get_unix_time_from_system() 48 + 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) 12 51 13 52 move_direction *= move_speed 14 53 15 - var rotate_direction: float = Input.get_action_strength("RotateRight") - Input.get_action_strength("RotateLeft") 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) 16 55 var old_rotation: float = global_rotation_degrees.y 17 56 18 57 move_direction = move_direction.rotated(Vector3.UP, deg_to_rad(old_rotation)) 19 58 global_translate(move_direction) 20 59 rotate(Vector3.UP, rotate_direction * rotate_speed) 60 + 61 + func adsr(attack: float, decay: float, sustain: float, release: float, held: bool, time: float, pressed: float, released: float) -> float: 62 + var p: float 63 + var r: float 64 + 65 + if (time - pressed) > 1000.0: 66 + p = 0.0 67 + else: 68 + p = min(round((time - pressed) * 100) / 100, attack) 69 + 70 + if (time - released) > 1000.0: 71 + r = 0.0 72 + else: 73 + r = min(round((time - released) * 100) / 100, release) 74 + 75 + print("Held: ", held, ", Time - Pressed: ", p, ", Time - Released: ", r) 76 + 77 + if held: 78 + var t = time - pressed 79 + 80 + if t < attack: 81 + return t / attack 82 + elif t < (attack + decay): 83 + var d = (t - attack) / decay 84 + return 1.0 - d * (1.0 - sustain) 85 + else: 86 + return sustain 87 + else: 88 + if released < 0: 89 + return 0.0 90 + 91 + var t = time - released 92 + 93 + if t < release: 94 + return sustain * (1.0 - t / release) 95 + else: 96 + return 0.0
+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 10 10 11 [node name="SpringArm3D" type="SpringArm3D" parent="."] 11 12 transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1.08832)