added a bullet pool to scene manager
This commit is contained in:
1 parent
cbd41bb063
commit
f9b3966231
10 files changed
+48
-31
No files matched your search
@@ -16,8 +16,6 @@ var pushLeftEnabled = false
|
||||
var pushRightEnabled = false
|
||||
var pushTarget
|
||||
|
||||
var bullet = preload("res://scenes/bullet.tscn")
|
||||
|
||||
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
||||
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
|
||||
|
||||
@@ -39,10 +37,9 @@ func _physics_process(delta):
|
||||
|
||||
if Input.is_action_just_pressed("shoot"):
|
||||
#make a bullet
|
||||
var myBullet = bullet.instantiate()
|
||||
var myBullet = %SceneManager.bulletFactory()
|
||||
#set bullet speed?
|
||||
myBullet.transform = marker_right.global_transform
|
||||
%SceneManager.manageBullet(myBullet)
|
||||
# Get the input direction and handle the movement/deceleration.
|
||||
# As good practice, you should replace UI actions with custom gameplay actions.
|
||||
var direction = Input.get_axis("ui_left", "ui_right")
|
||||
|
||||
@@ -1,16 +1,27 @@
|
||||
extends Node
|
||||
|
||||
var bulletsFiredTotal := 0
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready():
|
||||
pass # Replace with function body.
|
||||
var bulletsMadeTotal := 0
|
||||
var bulletArray:Array = []
|
||||
|
||||
var bullet = preload("res://scenes/bullet.tscn")
|
||||
|
||||
func bulletFactory():
|
||||
var mybullet
|
||||
|
||||
if bulletArray.size() < 4:
|
||||
mybullet = bullet.instantiate()
|
||||
mybullet.connect("hit", onBulletHit)
|
||||
owner.add_child(mybullet)
|
||||
else:
|
||||
mybullet = bulletArray.pop_back()
|
||||
mybullet.setSpeed(700)
|
||||
bulletArray.push_front(mybullet)
|
||||
bulletsMadeTotal +=1
|
||||
return mybullet
|
||||
|
||||
|
||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
||||
func _process(delta):
|
||||
pass
|
||||
|
||||
func manageBullet(bullet):
|
||||
bulletsFiredTotal +=1
|
||||
owner.add_child(bullet)
|
||||
print("Total bullets fired "+str(bulletsFiredTotal))
|
||||
func onBulletHit(bullet, body):
|
||||
#deactivate bullet
|
||||
#put back in queue
|
||||
bullet.setSpeed(1)
|
||||
@@ -1,6 +1,7 @@
|
||||
extends Area2D
|
||||
class_name Bullet extends Area2D
|
||||
|
||||
var speed = 750
|
||||
signal hit(bullet, body)
|
||||
|
||||
func setSpeed(speedVal):
|
||||
speed = speedVal
|
||||
@@ -12,4 +13,5 @@ func _on_body_entered(body):
|
||||
print("bullet hit something")
|
||||
|
||||
if not body.is_in_group("player"):
|
||||
queue_free()
|
||||
hit.emit(self, body)
|
||||
|
||||
Reference in new issue
Block a user