Преглед на файлове

Fix tunneling effect and missing collisions

Fix contact position by using normal.

Slightly increase brick size to prevent tunneling (but can still happen
though).
DricomDragon преди 3 години
родител
ревизия
3e9a68d4c8
променени са 2 файла, в които са добавени 5 реда и са изтрити 2 реда
  1. 1 1
      godot/scenes/main.tscn
  2. 4 1
      godot/scripts/Ball.gd

+ 1 - 1
godot/scenes/main.tscn

@@ -26,7 +26,7 @@ extents = Vector2( 300, 50 )
 extents = Vector2( 200, 50 )
 
 [sub_resource type="RectangleShape2D" id=5]
-extents = Vector2( 20, 10 )
+extents = Vector2( 20.5, 10.5 )
 
 [sub_resource type="TileSet" id=6]
 0/name = "brik.png 0"

+ 4 - 1
godot/scripts/Ball.gd

@@ -7,6 +7,7 @@ signal kace_contact
 
 const brick_layer = 2
 const interrupt_speed = 500
+const contact_corrector = 3.0
 
 
 func go_down_unstopped():
@@ -18,7 +19,9 @@ func go_down_unstopped():
 func _integrate_forces(state :  Physics2DDirectBodyState):
 	for i in range(state.get_contact_count()):
 		var contact_pos = state.get_contact_local_position(i)
-		emit_signal("kace_contact", contact_pos)
+		var contact_normal = state.get_contact_local_normal(i)
+		var correct_pos = contact_pos - contact_normal * contact_corrector
+		emit_signal("kace_contact", correct_pos)
 
 
 func _on_Launcher_interrupt_wave():