extends Area2D signal hit @export var speed = 600 var spriteRotateAngle = 0 var screen_size @export var bullet : PackedScene @export var firespeed = 10 var timeBetweenBullets = 1.00000 / firespeed var deltaSum = 0 # Called when the node enters the scene tree for the first time. func _ready() -> void: screen_size = get_viewport_rect().size # Called every frame. 'delta' is the elapsed time since the previous frame. func _physics_process(delta: float) -> void: var velocity = Vector2.ZERO var currentSpeed = speed if Input.is_action_pressed("move_up"): velocity.y -= 1 if Input.is_action_pressed("move_down"): velocity.y += 1 if Input.is_action_pressed("move_right"): velocity.x += 1 if spriteRotateAngle < 20: spriteRotateAngle += 1 elif Input.is_action_pressed("move_left"): velocity.x -= 1 if spriteRotateAngle > -20: spriteRotateAngle -= 1 elif spriteRotateAngle < 0: spriteRotateAngle += 1 elif spriteRotateAngle > 0: spriteRotateAngle -= 1 if Input.is_action_pressed("focus"): currentSpeed = speed / 2 if velocity.length() > 0: velocity = velocity.normalized() * currentSpeed position += velocity * delta position = position.clamp(Vector2.ZERO, screen_size) rotation_degrees = spriteRotateAngle if Input.is_action_pressed("shoot"): deltaSum += delta if deltaSum > timeBetweenBullets : var remainder = fmod(deltaSum, timeBetweenBullets) var numBullets = round ((deltaSum - remainder) / timeBetweenBullets) deltaSum = remainder for n in numBullets : shoot() func shoot(): var b = bullet.instantiate() owner.add_child(b) b.transform = $FrontBulletSource.global_transform