gears: make balls despawn after 5 seconds

Add timer to the ball, which allows the ball to despawn after a certain amount of time.
Co-authored-by: Simon Ward <sww.couldbe@gmail.com>
Co-committed-by: Simon Ward <sww.couldbe@gmail.com>
This commit is contained in:
Simon Ward 2026-01-22 20:42:01 +13:00 committed by jeremy
parent 545102a139
commit e616fc4cbb

View file

@ -7,9 +7,13 @@ func gear_id():
func continuous():
return false
func kill_ball(ball):
ball.queue_free()
func make_ball(player):
var ball = RigidBody3D.new()
var cs = CollisionShape3D.new()
var timer = Timer.new()
cs.shape = SphereShape3D.new()
ball.name = "Ball"
ball.mass = 4
@ -20,11 +24,16 @@ func make_ball(player):
ball.set_collision_layer_value(1, false)
ball.set_collision_layer_value(3, true)
ball.set_collision_mask_value(3, true)
timer.one_shot = true
timer.autostart = true
timer.wait_time = 5
timer.timeout.connect(kill_ball.bind(ball))
var mesh = $GearMesh.duplicate()
mesh.position = Vector3.ZERO
ball.add_child(mesh)
ball.add_child(cs)
ball.add_child(timer)
return ball