Godot Version
4.3.Stable
Code
extends Node2D
var can_shoot : bool = true
var knockback: Vector2 = Vector2.ZERO
var knockback_timer: float = 0.0
const BULLET = preload(“res://Scenes/bullet.tscn”)
@onready var muzzle: Marker2D = $Marker2D
@onready var gun_cooldown: Timer = $GunCooldown
@onready var randomized: AudioStreamPlayer = $Randomized
func _process(_delta: float) → void:
look_at(get_global_mouse_position())
rotation_degrees = wrap(rotation_degrees, 0, 360)
if rotation_degrees > 90 and rotation_degrees < 270:
scale.y = -1
else:
scale.y = 1
if Input.is_action_just_pressed("fire") and can_shoot:
shoot()
func shoot() → void:
# Cooldown
can_shoot = false
$GunCooldown.start()
# Spawn bullet
var bullet_instance = BULLET.instantiate()
get_tree().root.add_child(bullet_instance)
bullet_instance.global_position = muzzle.global_position
bullet_instance.rotation = rotation
# Sound
$Randomized.play_with_random_pitch()
# Knockback
var knockback_direction = (global_position - global_position).normalized
apply_knockback(knockback_direction, 150.0, 0.12)
func apply_knockback(direction: Vector2, force: float, knockback_duration: float) → void:
knockback = direction * force
knockback_timer = knockback_duration
func _on_gun_cooldown_timeout() → void:
can_shoot = true
Question
I dont really understand the error, can someone help me?