Files
Billiards/scenes/individual_parts/balls/balls_base.gd

42 lines
1.2 KiB
GDScript

class_name BallsBase extends Node3D
@onready var bodies: Node3D = $bodies
@onready var ball_sounds: AudioStreamPlayer = $ball_sounds
@onready var white_ball_marker: Marker3D = $white_ball_marker
@onready var white_ball: RigidBody3D = $bodies/white_ball
@export var ball_mass: float = 0.17
@export var min_speed: float = 0.0008
@export var max_speed: float = 0.5
@export var min_pitch: float = 0.6 # slower = deeper
@export var max_pitch: float = 1.6 # faster = higher
@export var min_volume_db: float = -30.0 # slower = quiet
@export var max_volume_db: float = 0.0 # faster = loud
var balls_moving: bool = false
func _set_ball_physics(ball: RigidBody3D) -> void:
var phy_mat = PhysicsMaterial.new()
phy_mat.set_bounce(0.90)
phy_mat.set_friction(0.12)
phy_mat.set_rough(false)
ball.set_physics_material_override(phy_mat)
ball.axis_lock_linear_y = true
ball.set_mass(ball_mass)
ball.set_linear_damp(2.04)
ball.set_angular_damp(1.44)
ball.set_use_continuous_collision_detection(true)
ball.body_entered.connect(_on__ball_body_entered)
func _on__ball_body_entered(_ball: Node) -> void:
assert(false, "This method needs to be overridden...")