fix(vfx): remove ball contact sparks

This commit is contained in:
Josh Creek
2026-08-08 08:47:48 +01:00
parent e0a1cbaf6d
commit 0223b55de8
2 changed files with 1 additions and 45 deletions
-44
View File
@@ -119,7 +119,6 @@ const THRUST_THRESHOLD = 1.0 # percent
var _engine_cores: Array[MeshInstance3D] = []
var _engine_flames: Array[MeshInstance3D] = []
var _engine_lights: Array[OmniLight3D] = []
var _impact_sparks: GPUParticles3D
func _ready():
@@ -264,17 +263,6 @@ func _build_movement_vfx() -> void:
add_child(light)
_engine_lights.append(light)
_impact_sparks = _make_particles(
"ImpactSparks", Color(1.0, 0.72, 0.22, 1.0), Vector2(0.09, 0.3),
28, 0.32, Vector3.UP, 180.0, 5.0, 12.0
)
_impact_sparks.one_shot = true
_impact_sparks.explosiveness = 1.0
_impact_sparks.local_coords = false
_impact_sparks.emitting = false
add_child(_impact_sparks)
func _vfx_material(color: Color, energy: float) -> StandardMaterial3D:
var mat := StandardMaterial3D.new()
mat.transparency = BaseMaterial3D.TRANSPARENCY_ALPHA
@@ -287,34 +275,6 @@ func _vfx_material(color: Color, energy: float) -> StandardMaterial3D:
return mat
func _make_particles(
particle_name: String, color: Color, size: Vector2, amount: int,
lifetime: float, direction: Vector3, spread: float,
velocity_min: float, velocity_max: float
) -> GPUParticles3D:
var quad := QuadMesh.new()
quad.size = size
quad.material = _vfx_material(color, 2.2)
var process := ParticleProcessMaterial.new()
process.direction = direction
process.spread = spread
process.initial_velocity_min = velocity_min
process.initial_velocity_max = velocity_max
process.gravity = Vector3.ZERO
process.scale_min = 0.35
process.scale_max = 1.0
var particles := GPUParticles3D.new()
particles.name = particle_name
particles.amount = amount
particles.lifetime = lifetime
particles.local_coords = true
particles.process_material = process
particles.draw_pass_1 = quad
particles.visibility_aabb = AABB(Vector3(-3, -3, -1), Vector3(6, 6, 12))
particles.emitting = false
return particles
func _update_movement_vfx() -> void:
if _engine_flames.is_empty():
return
@@ -354,10 +314,6 @@ func _on_body_entered(body: Node) -> void:
var relative_speed := (linear_velocity - (body as Ball).linear_velocity).length()
var intensity := clampf(inverse_lerp(3.0, 24.0, relative_speed), 0.12, 1.0)
var contact_pos := (global_position + (body as Ball).global_position) * 0.5
if _impact_sparks:
_impact_sparks.position = to_local(contact_pos)
_impact_sparks.amount_ratio = lerpf(0.25, 1.0, intensity)
_impact_sparks.restart()
ball_contact.emit(intensity, contact_pos)