added a bullet pool to scene manager
This commit is contained in:
parent
cbd41bb063
commit
f9b3966231
@ -175,4 +175,4 @@ Anim={
|
|||||||
"zfar": 4000.01,
|
"zfar": 4000.01,
|
||||||
"znear": 0.05
|
"znear": 0.05
|
||||||
}
|
}
|
||||||
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9272/@VSplitContainer@9094/@HSplitContainer@9096/@HSplitContainer@9098/@Control@9099/@SubViewportContainer@9100/@SubViewport@9101/Game/SceneManager")])
|
selected_nodes=Array[NodePath]([])
|
||||||
|
@ -175,4 +175,4 @@ Anim={
|
|||||||
"zfar": 4000.01,
|
"zfar": 4000.01,
|
||||||
"znear": 0.05
|
"znear": 0.05
|
||||||
}
|
}
|
||||||
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9272/@VSplitContainer@9094/@HSplitContainer@9096/@HSplitContainer@9098/@Control@9099/@SubViewportContainer@9100/@SubViewport@9101/Game/SceneManager")])
|
selected_nodes=Array[NodePath]([])
|
||||||
|
@ -20,7 +20,7 @@ dock_filesystem_display_mode=0
|
|||||||
dock_filesystem_file_sort=0
|
dock_filesystem_file_sort=0
|
||||||
dock_filesystem_file_list_display_mode=1
|
dock_filesystem_file_list_display_mode=1
|
||||||
dock_filesystem_selected_paths=PackedStringArray("res://scripts/SceneManager.gd")
|
dock_filesystem_selected_paths=PackedStringArray("res://scripts/SceneManager.gd")
|
||||||
dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scripts/", "res://scenes/")
|
dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://")
|
||||||
dock_bottom=[]
|
dock_bottom=[]
|
||||||
dock_closed=[]
|
dock_closed=[]
|
||||||
dock_filesystem_h_split_offset=240
|
dock_filesystem_h_split_offset=240
|
||||||
@ -32,11 +32,11 @@ dock_5="Inspector,Node,History"
|
|||||||
[EditorNode]
|
[EditorNode]
|
||||||
|
|
||||||
open_scenes=PackedStringArray("res://scenes/game.tscn", "res://scenes/character.tscn", "res://scenes/bullet.tscn")
|
open_scenes=PackedStringArray("res://scenes/game.tscn", "res://scenes/character.tscn", "res://scenes/bullet.tscn")
|
||||||
current_scene="res://scenes/game.tscn"
|
current_scene="res://scenes/character.tscn"
|
||||||
center_split_offset=0
|
center_split_offset=0
|
||||||
selected_default_debugger_tab_idx=0
|
selected_default_debugger_tab_idx=1
|
||||||
selected_main_editor_idx=2
|
selected_main_editor_idx=2
|
||||||
selected_bottom_panel_item=0
|
selected_bottom_panel_item=1
|
||||||
|
|
||||||
[ScriptEditor]
|
[ScriptEditor]
|
||||||
|
|
||||||
|
@ -3,3 +3,4 @@ res://scripts/CharacterBody2D.gd
|
|||||||
res://scenes/character.tscn
|
res://scenes/character.tscn
|
||||||
res://scenes/bullet.tscn
|
res://scenes/bullet.tscn
|
||||||
res://scripts/SceneManager.gd
|
res://scripts/SceneManager.gd
|
||||||
|
res://scripts/bullet.gd
|
||||||
|
@ -175,4 +175,4 @@ Anim={
|
|||||||
"zfar": 4000.01,
|
"zfar": 4000.01,
|
||||||
"znear": 0.05
|
"znear": 0.05
|
||||||
}
|
}
|
||||||
selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16886/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9272/@VSplitContainer@9094/@HSplitContainer@9096/@HSplitContainer@9098/@Control@9099/@SubViewportContainer@9100/@SubViewport@9101/Game/SceneManager")])
|
selected_nodes=Array[NodePath]([])
|
||||||
|
@ -3,10 +3,10 @@
|
|||||||
state={
|
state={
|
||||||
"bookmarks": PackedInt32Array(),
|
"bookmarks": PackedInt32Array(),
|
||||||
"breakpoints": PackedInt32Array(),
|
"breakpoints": PackedInt32Array(),
|
||||||
"column": 38,
|
"column": 52,
|
||||||
"folded_lines": Array[int]([]),
|
"folded_lines": Array[int]([]),
|
||||||
"h_scroll_position": 0,
|
"h_scroll_position": 0,
|
||||||
"row": 44,
|
"row": 41,
|
||||||
"scroll_position": 31.0,
|
"scroll_position": 31.0,
|
||||||
"selection": false,
|
"selection": false,
|
||||||
"syntax_highlighter": "GDScript"
|
"syntax_highlighter": "GDScript"
|
||||||
@ -20,7 +20,7 @@ state={
|
|||||||
"column": 30,
|
"column": 30,
|
||||||
"folded_lines": Array[int]([]),
|
"folded_lines": Array[int]([]),
|
||||||
"h_scroll_position": 0,
|
"h_scroll_position": 0,
|
||||||
"row": 11,
|
"row": 12,
|
||||||
"scroll_position": 0.0,
|
"scroll_position": 0.0,
|
||||||
"selection": false,
|
"selection": false,
|
||||||
"syntax_highlighter": "GDScript"
|
"syntax_highlighter": "GDScript"
|
||||||
@ -45,11 +45,11 @@ state={
|
|||||||
state={
|
state={
|
||||||
"bookmarks": PackedInt32Array(),
|
"bookmarks": PackedInt32Array(),
|
||||||
"breakpoints": PackedInt32Array(),
|
"breakpoints": PackedInt32Array(),
|
||||||
"column": 22,
|
"column": 0,
|
||||||
"folded_lines": Array[int]([]),
|
"folded_lines": Array[int]([]),
|
||||||
"h_scroll_position": 0,
|
"h_scroll_position": 0,
|
||||||
"row": 13,
|
"row": 21,
|
||||||
"scroll_position": 0.0,
|
"scroll_position": 11.0,
|
||||||
"selection": false,
|
"selection": false,
|
||||||
"syntax_highlighter": "GDScript"
|
"syntax_highlighter": "GDScript"
|
||||||
}
|
}
|
||||||
|
@ -1 +1,7 @@
|
|||||||
list=Array[Dictionary]([])
|
list=Array[Dictionary]([{
|
||||||
|
"base": &"Area2D",
|
||||||
|
"class": &"Bullet",
|
||||||
|
"icon": "",
|
||||||
|
"language": &"GDScript",
|
||||||
|
"path": "res://scripts/bullet.gd"
|
||||||
|
}])
|
||||||
|
@ -16,8 +16,6 @@ var pushLeftEnabled = false
|
|||||||
var pushRightEnabled = false
|
var pushRightEnabled = false
|
||||||
var pushTarget
|
var pushTarget
|
||||||
|
|
||||||
var bullet = preload("res://scenes/bullet.tscn")
|
|
||||||
|
|
||||||
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
||||||
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
|
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
|
||||||
|
|
||||||
@ -39,10 +37,9 @@ func _physics_process(delta):
|
|||||||
|
|
||||||
if Input.is_action_just_pressed("shoot"):
|
if Input.is_action_just_pressed("shoot"):
|
||||||
#make a bullet
|
#make a bullet
|
||||||
var myBullet = bullet.instantiate()
|
var myBullet = %SceneManager.bulletFactory()
|
||||||
#set bullet speed?
|
#set bullet speed?
|
||||||
myBullet.transform = marker_right.global_transform
|
myBullet.transform = marker_right.global_transform
|
||||||
%SceneManager.manageBullet(myBullet)
|
|
||||||
# Get the input direction and handle the movement/deceleration.
|
# Get the input direction and handle the movement/deceleration.
|
||||||
# As good practice, you should replace UI actions with custom gameplay actions.
|
# As good practice, you should replace UI actions with custom gameplay actions.
|
||||||
var direction = Input.get_axis("ui_left", "ui_right")
|
var direction = Input.get_axis("ui_left", "ui_right")
|
||||||
|
@ -1,16 +1,27 @@
|
|||||||
extends Node
|
extends Node
|
||||||
|
|
||||||
var bulletsFiredTotal := 0
|
var bulletsFiredTotal := 0
|
||||||
# Called when the node enters the scene tree for the first time.
|
var bulletsMadeTotal := 0
|
||||||
func _ready():
|
var bulletArray:Array = []
|
||||||
pass # Replace with function body.
|
|
||||||
|
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 onBulletHit(bullet, body):
|
||||||
func _process(delta):
|
#deactivate bullet
|
||||||
pass
|
#put back in queue
|
||||||
|
bullet.setSpeed(1)
|
||||||
func manageBullet(bullet):
|
|
||||||
bulletsFiredTotal +=1
|
|
||||||
owner.add_child(bullet)
|
|
||||||
print("Total bullets fired "+str(bulletsFiredTotal))
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
extends Area2D
|
class_name Bullet extends Area2D
|
||||||
|
|
||||||
var speed = 750
|
var speed = 750
|
||||||
|
signal hit(bullet, body)
|
||||||
|
|
||||||
func setSpeed(speedVal):
|
func setSpeed(speedVal):
|
||||||
speed = speedVal
|
speed = speedVal
|
||||||
@ -12,4 +13,5 @@ func _on_body_entered(body):
|
|||||||
print("bullet hit something")
|
print("bullet hit something")
|
||||||
|
|
||||||
if not body.is_in_group("player"):
|
if not body.is_in_group("player"):
|
||||||
queue_free()
|
hit.emit(self, body)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user