goalpost
This commit is contained in:
parent
e1b43c8bc5
commit
08712cf22c
11 changed files with 244 additions and 37 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue