This commit is contained in:
Haze Weathers 2025-02-22 19:55:12 -05:00
parent e1b43c8bc5
commit 08712cf22c
11 changed files with 244 additions and 37 deletions

View file

@ -1,3 +1,4 @@
class_name Player
extends CharacterBody3D
@ -5,6 +6,8 @@ extends CharacterBody3D
@export var power_sensitivity: float
@export var power_threshold: float
@export var goal_animation_time: float = 1.0
@export_group("Movement")
@export var gravity: float
@export var friction: float
@ -18,9 +21,10 @@ extends CharacterBody3D
@export_group("Node References")
@export var state_chart: StateChart
@export var graphics: Node3D
@export var power_indicator: Node3D
@export var camera_arm: SpringArm3D
@export var wall_detector: PhysicsBody3D
@export var collision_shape: CollisionShape3D
var power: float = 0.0:
@ -30,6 +34,8 @@ var power: float = 0.0:
var charging_power: bool = false
var prev_velocity: Vector3 = Vector3.ZERO
var _entered_goal: Node3D = self
func _ready() -> void:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
@ -57,6 +63,13 @@ func _unhandled_input(event: InputEvent) -> void:
camera_arm.rotation.x = clampf(camera_arm.rotation.x, -camera_high_angle, -camera_low_angle)
#region Public Functions
func enter_goal(goal: GoalPost) -> void:
_entered_goal = goal
state_chart.send_event(&"goal_entered")
#endregion
#region Charging
func _start_charge() -> void:
charging_power = true
@ -115,3 +128,17 @@ func _bounce_on_walls(delta: float = 0.0) -> void:
#velocity.x = h_vel.x
#velocity.z = h_vel.z
#endregion
#region Winning
func _start_winning() -> void:
velocity = Vector3.ZERO
prev_velocity = velocity
collision_shape.disabled = true
var tween = create_tween()
tween.set_process_mode(Tween.TWEEN_PROCESS_PHYSICS)
tween.tween_property(graphics, ^"scale", Vector3.ZERO, goal_animation_time)
tween.set_parallel(true)
tween.tween_property(graphics, ^"global_position", _entered_goal.global_position, goal_animation_time)
#endregion