extends RigidBody2D var start_position var do_reset = true var is_reset = true # Called when the node enters the scene tree for the first time. func _ready(): start_position = position # Override the default physics when we want to manually reset the position and rotation. func _integrate_forces(state): if do_reset: state.transform.origin = start_position state.linear_velocity = Vector2() state.angular_velocity = 0 set_angular_damp(0) apply_torque_impulse(-1000) do_reset = false is_reset = true func _input(event): if event.is_action_pressed("shoot"): if is_reset: set_angular_damp(-1) gravity_scale = 1 apply_impulse(Vector2(10, 10), Vector2(500, -800)) is_reset = false else: gravity_scale = 0 do_reset = true