GodotCourse/week1/3dVersion/scripts/SceneManager.gd

41 lines
945 B
GDScript3
Raw Normal View History

2025-06-30 18:24:48 +00:00
extends Node
var bulletsFiredTotal := 0
var bulletsMadeTotal := 0
var bulletArray:Array = []
var bullet = preload("res://scenes/bullet.tscn")
@onready var gameController: Node3D = $".."
func _ready() -> void:
gameController.destroy_signal.connect(destroy)
#factory decides to issue new bullet, or
#recycle an old one
func bulletFactory():
var mybullet
if bulletArray.size() < 4:
mybullet = bullet.instantiate()
mybullet.connect("hit", gameController.onBulletHit)
owner.add_child(mybullet)
else:
mybullet = bulletArray.pop_back()
mybullet.setSpeed(700)
bulletArray.push_front(mybullet)
bulletsMadeTotal +=1
return mybullet
#order desk for new bullets
func makeBullet(position, speed):
var myBullet = bulletFactory()
myBullet.transform.origin = position
myBullet.setSpeed(speed)
return myBullet
func destroy(body):
if body is Crate:
body.queue_free()
if body is Bullet:
bulletArray.erase(body)
body.queue_free()