Sfoglia il codice sorgente

Corrige la super vitesse quand attrapage dessous

Lorsque la raquette touchait une balle qui etait en train de mourir, la
balle s'arretait, sa vitesse augmentait, et lorsque la raquette etait
decalee, la balle extremement rapide etait liberee.
DricomDragon 11 mesi fa
parent
commit
852ef71dd1
1 ha cambiato i file con 8 aggiunte e 5 eliminazioni
  1. 8 5
      godot/composants/objets/balle/balle.gd

+ 8 - 5
godot/composants/objets/balle/balle.gd

@@ -22,7 +22,7 @@ func _physics_process(delta: float) -> void:
 	if impact != null:
 		_rebondir(impact)
 		var obstacle: Object = impact.get_collider()
-		if obstacle is Raquette:
+		if obstacle is Raquette and en_train_de_monter():
 			_orienter_tir(obstacle)
 			_accelerer()
 		elif obstacle is Brique:
@@ -41,6 +41,10 @@ func detruire() -> void:
 	queue_free()
 
 
+func en_train_de_monter() -> bool:
+	return _mouvement.y < 0.0
+
+
 func _rebondir(impact: KinematicCollision2D) -> void:
 	_mouvement = _mouvement.bounce(impact.get_normal())
 
@@ -48,10 +52,9 @@ func _rebondir(impact: KinematicCollision2D) -> void:
 func _orienter_tir(raquette: Raquette) -> void:
 	var difference = global_position.x - raquette.position.x
 	_mouvement = Vector2.UP.rotated(difference * ratio_diff_angle) * _mouvement.length()
-	
-	# empeche la balle de traverser la raquette
-	if _mouvement.y > 0:
-		_mouvement.y = -ascension_min
+
+	# empeche la balle de monter trop lentement
+	_mouvement.y = min(_mouvement.y, -ascension_min)
 
 
 func _accelerer() -> void: