extends RigidBody2D signal change_power export var spin_speed = -1 export var move_speed = 300 var start_position var waiting_for_shoot = true var power = 100 var spin_rotation = 0 var ready_to_shoot func _ready(): start_position = position func toggle_mode(): if waiting_for_shoot: waiting_for_shoot = false shoot() else: global_variables.has_scored = false waiting_for_shoot = true set_use_custom_integrator(waiting_for_shoot) func shoot(): var x_power = power * 5 var y_power = power * -8 apply_impulse(Vector2(10, 10), Vector2(x_power, y_power)) # Override the default physics when we want to manually set the position and rotation. func _integrate_forces(state): if waiting_for_shoot: state.transform = Transform2D(spin_rotation, start_position) state.linear_velocity = Vector2() state.angular_velocity = 0 # Temporary testing controls func _process(delta): if waiting_for_shoot: spin_rotation += spin_speed * delta if Input.is_action_pressed("ui_left"): start_position.x -= move_speed * delta if Input.is_action_pressed("ui_right"): start_position.x += move_speed * delta start_position.x = clamp(start_position.x, 0, 1024) if Input.is_action_pressed("ui_up"): if power < 200: power += 0.5 emit_signal("change_power", power) if Input.is_action_pressed("ui_down"): if power > 10: power -= 0.5 emit_signal("change_power", power) func _input(event): if event.is_action_released("shoot"): if ready_to_shoot or !waiting_for_shoot: toggle_mode() func _on_Area2D_mouse_entered(): ready_to_shoot = true func _on_Area2D_mouse_exited(): ready_to_shoot = false