extends Node2D enum State { READY, FIRING, WAITING, } const BULLET_SPEED = 200.0 var _ballScene = preload("res://scenes/Ball.tscn") onready var target = $Target onready var source = $Source onready var current_state = State.WAITING func _input(event): if event is InputEventMouseButton and event.is_pressed() : current_state = State.FIRING target.position = event.position shoot() func shoot(): var bullet = _ballScene.instance() bullet.position = source.position bullet.linear_velocity = (target.position - source.position).normalized() bullet.linear_velocity *= BULLET_SPEED add_child(bullet)