fuzzyworld

godot-shooter / commit

Got the background parallax stars working, mostly.

e9f8f8f25946d338e76955100da68fdae9851f3d · Pavel Safronov · 2023-11-01 15:26:38 -0700 · parents 2ef72487cbb6

Got the background parallax stars working, mostly.
Removed some commented-out code.
Changed the enemy addition code to use call_deferred, so we're not modifying the physics system while the collisions are being processed.
 Bullet.gd          |  1 -
 Enemy.gd           |  8 ++++++--
 Enemy.tscn         |  1 +
 StarField.tscn     | 53 +++++++++++++++++++++++++++++++----------------------
 World.gd           | 12 +++++++++---
 World.tscn         | 36 +++++++++++++++---------------------
 export_presets.cfg |  2 +-
 7 files changed, 63 insertions(+), 50 deletions(-)

diff --git a/Bullet.gd b/Bullet.gd
index 0b18d56..b3a5f8e 100644
--- a/Bullet.gd
+++ b/Bullet.gd
@@ -8,7 +8,6 @@ export var speed = 300
 func _ready() -> void:
 	$Timer.wait_time = lifetime_seconds
 	$Timer.start()
-	Utils.log("timer", $Timer)
 
 func _physics_process(delta: float) -> void:
 	position += transform.y * speed * delta
diff --git a/Enemy.gd b/Enemy.gd
index 390f917..b775a39 100644
--- a/Enemy.gd
+++ b/Enemy.gd
@@ -5,13 +5,17 @@ const Utils = preload("res://Utils.gd")
 const Explosion = preload("res://Explosion.tscn")
 
 export var move_speed = 100
-export var health: int = randi() % 8 + 2
+export var health = -1
 export var max_health = 10
 signal enemy_killed
 
 var velocity = Vector2.ZERO
 var dead = false
 
+func _ready() -> void:
+	if health < 0:
+		health = max_health
+
 func _process(_delta: float) -> void:
 	$Graphics/Alive/Container/HealthLabel.text = "%s / %s" % [health, max_health]
 	$Graphics/Alive/Container.global_rotation = 0
@@ -50,10 +54,10 @@ func kill():
 	Utils.log("zombie is dead")
 	dead = true
 	$Graphics/Alive.hide()
+	$CollisionPolygon2D.queue_free()
 	var explosion = Explosion.instance()
 	explosion.connect("explosion_done", self, "_on_death_explosion_finished")
 	$Graphics.add_child(explosion)
-	$CollisionPolygon2D.set_deferred("diabled", true)
 	z_index = -1
 	emit_signal("enemy_killed")
 
diff --git a/Enemy.tscn b/Enemy.tscn
index 84ae864..ab69fcb 100644
--- a/Enemy.tscn
+++ b/Enemy.tscn
@@ -5,6 +5,7 @@
 
 [node name="Enemy" type="KinematicBody2D"]
 script = ExtResource( 2 )
+max_health = 5
 
 [node name="Graphics" type="Node2D" parent="."]
 
diff --git a/StarField.tscn b/StarField.tscn
index bb064c6..506b4cd 100644
--- a/StarField.tscn
+++ b/StarField.tscn
@@ -1,36 +1,45 @@
-[gd_scene load_steps=7 format=2]
+[gd_scene load_steps=6 format=2]
 
 [ext_resource path="res://assets/kenney_simple-space/PNG/Default/star_small.png" type="Texture" id=1]
 
-[sub_resource type="Gradient" id=4]
+[sub_resource type="Gradient" id=6]
+colors = PoolColorArray( 1, 0, 0, 1, 0.078125, 0, 1, 1 )
 
-[sub_resource type="GradientTexture" id=5]
-gradient = SubResource( 4 )
+[sub_resource type="GradientTexture2D" id=7]
+gradient = SubResource( 6 )
+width = 1024
+height = 600
+use_hdr = true
+fill_from = Vector2( 0.00416667, 0.00625 )
+fill_to = Vector2( 1, 1 )
 
 [sub_resource type="Curve" id=1]
 _data = [ Vector2( 0, 0 ), 0.0, 0.0, 0, 0, Vector2( 0.256659, 1 ), 0.0, 0.0, 0, 0, Vector2( 0.490196, 0.297297 ), 0.0, 0.0, 0, 0, Vector2( 0.74092, 1 ), 0.0, 0.0, 0, 0, Vector2( 1, 0 ), 0.0, 0.0, 0, 0 ]
 
-[sub_resource type="CurveTexture" id=2]
-curve = SubResource( 1 )
+[sub_resource type="Gradient" id=4]
 
-[sub_resource type="ParticlesMaterial" id=3]
-emission_shape = 2
-emission_box_extents = Vector3( 512, 300, 0 )
-flag_disable_z = true
-gravity = Vector3( 0, 0, 0 )
-angular_velocity = 50.0
-angular_velocity_random = 1.0
-orbit_velocity = 0.0
-orbit_velocity_random = 0.0
-scale_random = 1.0
-scale_curve = SubResource( 2 )
-color_ramp = SubResource( 5 )
+[node name="Node2D" type="Node2D"]
 
-[node name="StarField" type="Particles2D"]
+[node name="Polygon2D" type="Polygon2D" parent="."]
+visible = false
 position = Vector2( 512, 300 )
-amount = 200
+antialiased = true
+texture = SubResource( 7 )
+invert_enable = true
+invert_border = 10.0
+polygon = PoolVector2Array( -512, -300, 512, -300, 512, 300, -512, 300 )
+
+[node name="StarField" type="CPUParticles2D" parent="."]
+position = Vector2( 512, 300 )
+amount = 100
 lifetime = 10.0
 preprocess = 70.74
-visibility_rect = Rect2( -512, -300, 1024, 600 )
-process_material = SubResource( 3 )
 texture = ExtResource( 1 )
+emission_shape = 2
+emission_rect_extents = Vector2( 512, 300 )
+gravity = Vector2( 0, 0 )
+angular_velocity = 50.0
+angular_velocity_random = 1.0
+scale_amount_random = 1.0
+scale_amount_curve = SubResource( 1 )
+color_ramp = SubResource( 4 )
diff --git a/World.gd b/World.gd
index ea37204..e24ad4f 100644
--- a/World.gd
+++ b/World.gd
@@ -2,16 +2,22 @@ extends Node2D
 
 const Utils = preload("res://Utils.gd")
 const Enemy = preload("res://Enemy.tscn")
+export var enemy_count = 2
 
+func _ready() -> void:
+	for n in enemy_count:
+		add_new_enemy(true)
 
 func _on_enemy_killed() -> void:
 	$CanvasLayer/HUD.score += 1
-	add_new_enemy()
+	# use call_deferred to ensure that this happens after the collision has been processed
+	call_deferred("add_new_enemy")
 
-func add_new_enemy() -> void:
+func add_new_enemy(should_be_visible: bool = false) -> void:
 	var pos_angle = randi() % 360
 	var unit_vector = Vector2.UP.rotated(pos_angle)
-	var enemy_spawn_dist = get_viewport().get_visible_rect().size.length() / 2 + 10
+	var screen_radius = get_viewport().get_visible_rect().size.length() / 2 + 10
+	var enemy_spawn_dist = 300 if should_be_visible else screen_radius
 	var pos = unit_vector * enemy_spawn_dist + $Player.global_position
 	
 	var enemy = Enemy.instance()
diff --git a/World.tscn b/World.tscn
index 61ad2d1..0fd558f 100644
--- a/World.tscn
+++ b/World.tscn
@@ -1,6 +1,5 @@
-[gd_scene load_steps=6 format=2]
+[gd_scene load_steps=5 format=2]
 
-[ext_resource path="res://Enemy.tscn" type="PackedScene" id=1]
 [ext_resource path="res://Player.tscn" type="PackedScene" id=2]
 [ext_resource path="res://HUD.tscn" type="PackedScene" id=3]
 [ext_resource path="res://World.gd" type="Script" id=4]
@@ -8,39 +7,34 @@
 
 [node name="World" type="Node2D"]
 script = ExtResource( 4 )
+enemy_count = 4
 
-[node name="Environment" type="Node2D" parent="."]
-
-[node name="CanvasLayer" type="CanvasLayer" parent="Environment"]
+[node name="CanvasLayer2" type="CanvasLayer" parent="."]
 
-[node name="ParallaxBackground" type="ParallaxBackground" parent="Environment/CanvasLayer"]
+[node name="ParallaxBackground" type="ParallaxBackground" parent="CanvasLayer2"]
 
-[node name="Foreground" type="ParallaxLayer" parent="Environment/CanvasLayer/ParallaxBackground"]
+[node name="Foreground" type="ParallaxLayer" parent="CanvasLayer2/ParallaxBackground"]
+motion_offset = Vector2( -512, -300 )
 motion_mirroring = Vector2( 1024, 600 )
 
-[node name="StarField" parent="Environment/CanvasLayer/ParallaxBackground/Foreground" instance=ExtResource( 5 )]
-position = Vector2( 522, 305 )
+[node name="StarField" parent="CanvasLayer2/ParallaxBackground/Foreground" instance=ExtResource( 5 )]
 
-[node name="Background" type="ParallaxLayer" parent="Environment/CanvasLayer/ParallaxBackground"]
+[node name="Background" type="ParallaxLayer" parent="CanvasLayer2/ParallaxBackground"]
 modulate = Color( 1, 1, 1, 0.501961 )
 motion_scale = Vector2( 0.8, 0.8 )
+motion_offset = Vector2( -512, -300 )
 motion_mirroring = Vector2( 1024, 600 )
+__meta__ = {
+"_edit_group_": true
+}
 
-[node name="StarField" parent="Environment/CanvasLayer/ParallaxBackground/Background" instance=ExtResource( 5 )]
-position = Vector2( 522, 305 )
+[node name="StarField2" parent="CanvasLayer2/ParallaxBackground/Background" instance=ExtResource( 5 )]
+
+[node name="Environment" type="Node2D" parent="."]
 
 [node name="Player" parent="." groups=["player"] instance=ExtResource( 2 )]
 position = Vector2( 513, 302 )
 
-[node name="Enemy" parent="." instance=ExtResource( 1 )]
-position = Vector2( 876, 491 )
-
-[node name="Enemy2" parent="." instance=ExtResource( 1 )]
-position = Vector2( 149, 475 )
-
 [node name="CanvasLayer" type="CanvasLayer" parent="."]
 
 [node name="HUD" parent="CanvasLayer" instance=ExtResource( 3 )]
-
-[connection signal="enemy_killed" from="Enemy" to="." method="_on_enemy_killed"]
-[connection signal="enemy_killed" from="Enemy2" to="." method="_on_enemy_killed"]
diff --git a/export_presets.cfg b/export_presets.cfg
index 8c4868a..00781e7 100644
--- a/export_presets.cfg
+++ b/export_presets.cfg
@@ -21,7 +21,7 @@ vram_texture_compression/for_mobile=true
 html/export_icon=true
 html/custom_html_shell=""
 html/head_include=""
-html/canvas_resize_policy=2
+html/canvas_resize_policy=0
 html/focus_canvas_on_start=true
 html/experimental_virtual_keyboard=false
 progressive_web_app/enabled=false