- Edited
Here's a BEFORE and AFTER video below
[
I couldn't really track what really just happened. It occured after putting resources of every nodes needed, bullet nodes, shooter nodes, enemy nodes, etc. However, I tried reverting them back but none of them are solved.
here are the current codes below:
bullet code:
class_name BulletClass
export var bulletRes: Resource
func _die() -> void:
set_deferred("monitoring", false)
bulletRes.spd = 0
rotation = 0
$AnimatedSprite.play("die")
yield($AnimatedSprite, "animation_finished")
queue_free()
#func _move(delta) -> void:
# position += bulletRes.dir * bulletRes.spd * delta
# bulletRes.spd += bulletRes.changingSpeed * delta
func _cancel() -> void:
if !bulletRes.cancelled:
bulletRes.cancelled = true
$scoreManager._spawn_gems()
_die()
func _ready() -> void:
$AnimatedSprite.play("default")
if bulletRes.rotate: rotation = bulletRes.dir.angle()
func _on_VisibilityNotifier2D_screen_exited() -> void: queue_free()
func _on_bullet_area_entered(area) -> void:
if area is Enemy: area._damage(bulletRes.damage)
elif area is Hurtbox: area._dead()
_die()
shooter code:
class_name Shooter
export var shooterRes: Resource
var bullets: Array = []
func _timer() -> Timer: return get_node("Timer") as Timer
func _shoot(lookAtPos: Vector2 = Vector2.RIGHT) -> void:
if $Timer.is_stopped():
$Timer.start(shooterRes.fireRate)
for i in shooterRes.arcRepeat:
if owner is Enemy:
if !owner.enemyRes.canDamaged or owner.player.dead:
$Timer.stop()
break
var b = shooterRes.bullet.instance() as BulletClass
if shooterRes.staticDirection: $Position2D.rotation = Vector2.RIGHT.angle_to(lookAtPos)
else: $Position2D.look_at(lookAtPos)
b.global_position = $Position2D.global_position
if shooterRes.arcRepeat != 1:
var arcRad = deg2rad(shooterRes.arc)
var inc = arcRad / (shooterRes.arcRepeat - 1)
$Position2D.rotation += inc * i - arcRad / 2
b.bulletRes.dir = Vector2.RIGHT.rotated($Position2D.rotation + shooterRes.customRotation)
if shooterRes.customSpeed != 0: b.bulletRes.spd = shooterRes.customSpeed
b.bulletRes.changingSpeed = shooterRes.changingSpeed
get_tree().root.call_deferred("add_child", b)
bullets.append(b)
rotation = 0
func _physics_process(delta) -> void:
if bullets.empty(): return
for bullet in bullets:
if is_instance_valid(bullet):
bullet.position += bullet.bulletRes.dir * bullet.bulletRes.spd * delta
bullet.bulletRes.spd += bullet.bulletRes.changingSpeed * delta
else: bullets.erase(bullet)
somewhere between them are the fault I really couldn't tell but help is super appreciated