소스 검색

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 1 년 전
부모
커밋
852ef71dd1
1개의 변경된 파일8개의 추가작업 그리고 5개의 파일을 삭제
  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: