Feat/2 weapons foundation #6

Merged
Dotts merged 30 commits from feat/2-weapons-foundation into main 2026-06-04 22:22:16 -07:00
Showing only changes of commit e65e9fa76f - Show all commits
+17 -6
View File
@@ -7,6 +7,7 @@ var params: MovementParams:
var elapsed: float = 0.0 var elapsed: float = 0.0
var _initial_y_vel: float = 0.0 var _initial_y_vel: float = 0.0
var _run_speed: float = 0.0
var _current_tangent: Vector3 = Vector3.ZERO var _current_tangent: Vector3 = Vector3.ZERO
@@ -24,6 +25,11 @@ func enter(_data: Dictionary = {}) -> void:
if hvel.dot(_current_tangent) < 0.0: if hvel.dot(_current_tangent) < 0.0:
_current_tangent = -_current_tangent _current_tangent = -_current_tangent
# Preserve speed along the wall if it's faster than base wall_run_speed
var base_speed = machine.get_effective_speed(params.wall_run_speed)
var projected_speed = hvel.dot(_current_tangent)
_run_speed = maxf(base_speed, projected_speed)
# Camera tilt # Camera tilt
var rig = _get_camera_rig() var rig = _get_camera_rig()
if rig: if rig:
@@ -60,9 +66,8 @@ func update(delta: float) -> void:
wall_tangent = -wall_tangent wall_tangent = -wall_tangent
_current_tangent = wall_tangent _current_tangent = wall_tangent
var effective_speed := machine.get_effective_speed(params.wall_run_speed) vel.x = wall_tangent.x * _run_speed
vel.x = wall_tangent.x * effective_speed vel.z = wall_tangent.z * _run_speed
vel.z = wall_tangent.z * effective_speed
# ── Look away to break wall run ─────────────────────────────────────── # ── Look away to break wall run ───────────────────────────────────────
var look_dir := -player.global_transform.basis.z var look_dir := -player.global_transform.basis.z
@@ -78,9 +83,15 @@ func update(delta: float) -> void:
# ── Wall jump ───────────────────────────────────────────────────────── # ── Wall jump ─────────────────────────────────────────────────────────
if machine.input_jump_just_pressed: if machine.input_jump_just_pressed:
var jump_vel: Vector3 = machine.wall_normal * params.wall_run_jump_off_normal # Base jump off velocity on current preserved momentum
var h_look := Vector3(look_dir.x, 0.0, look_dir.z).normalized() var jump_vel: Vector3 = _current_tangent * _run_speed
jump_vel += h_look * params.wall_run_jump_horizontal
# Spring off the wall
jump_vel += machine.wall_normal * params.wall_run_jump_off_normal
var h_look := Vector3(look_dir.x, 0.0, look_dir.z)
if h_look.length_squared() > 0.01:
jump_vel += h_look.normalized() * params.wall_run_jump_horizontal
jump_vel.y = params.wall_run_auto_jump_speed jump_vel.y = params.wall_run_auto_jump_speed
player.velocity = jump_vel player.velocity = jump_vel
machine.wall_normal = Vector3.ZERO machine.wall_normal = Vector3.ZERO