bullet hell, asteroid and reaction done,. i think ill drop space invaders , 40 minutes left

This commit is contained in:
Tabby 2025-05-17 17:20:23 +10:00
parent 82652730f2
commit c000461fd6
23 changed files with 377 additions and 23 deletions

View file

@ -0,0 +1,20 @@
extends Area2D
var speed : float = 50
var target_pos : Vector2
@export var sprite : Sprite2D
var spin_speed : float = 50
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
sprite.rotation_degrees += spin_speed * delta
global_position = global_position.move_toward(target_pos, delta * speed)
func _on_area_entered(area: Area2D) -> void:
queue_free()

View file

@ -0,0 +1 @@
uid://dculqxasbgkte

View file

@ -0,0 +1,22 @@
[gd_scene load_steps=4 format=3 uid="uid://chwuh2bbilfn1"]
[ext_resource type="Texture2D" uid="uid://b0sii6paqk3gm" path="res://sprites/asteroid.png" id="1_7d121"]
[ext_resource type="Script" uid="uid://dculqxasbgkte" path="res://games/asteroids/asteroid.gd" id="1_aye07"]
[sub_resource type="CircleShape2D" id="CircleShape2D_7d121"]
radius = 46.0435
[node name="Asteroid" type="Area2D" node_paths=PackedStringArray("sprite")]
collision_mask = 2
script = ExtResource("1_aye07")
sprite = NodePath("Sprite2D")
[node name="Sprite2D" type="Sprite2D" parent="."]
position = Vector2(0, -2)
scale = Vector2(0.3, 0.3)
texture = ExtResource("1_7d121")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("CircleShape2D_7d121")
[connection signal="area_entered" from="." to="." method="_on_area_entered"]

View file

@ -3,11 +3,40 @@ extends Node
signal game_win
signal game_lose
@export var asteroid_spawns : Array[Node2D]
@export var win_progress : ProgressBar
@export var win_time : float = 15
var alive_time : float =0
@export var spawn_time : float = 3
@export var player : Node2D
var timer : float
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass # Replace with function body.
timer = spawn_time
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
win_progress.value = alive_time/win_time
timer -= delta
alive_time += delta
if timer <0:
spawn_new_asteroid()
timer = spawn_time
if alive_time >= win_time:
print("Asteroid win")
game_win.emit()
func spawn_new_asteroid():
var newAsteroid : Node2D = load("res://games/asteroids/asteroid.tscn").instantiate()
var randSpawn : int = randi_range(0,3)
newAsteroid.global_position = asteroid_spawns[randSpawn].global_position
newAsteroid.target_pos = player.global_position
#newBullet.heading = -newBullet.global_position.normalized()
get_parent().add_child(newAsteroid)
func _on_area_2d_area_entered(area: Area2D) -> void:
print("Asteroid lose")
game_lose.emit()

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=8 format=3 uid="uid://bw1hhx7lyfonr"]
[gd_scene load_steps=9 format=3 uid="uid://bw1hhx7lyfonr"]
[ext_resource type="Script" uid="uid://brih2jftm2tsa" path="res://games/asteroids/ship_controller.gd" id="1_6dc0m"]
[ext_resource type="Script" uid="uid://carkc2diu0xwd" path="res://games/asteroids/asteroids.gd" id="1_j0tb1"]
@ -20,8 +20,14 @@ noise = SubResource("FastNoiseLite_j0tb1")
[sub_resource type="CircleShape2D" id="CircleShape2D_dtqgl"]
radius = 26.0192
[node name="Asteroids" type="Node"]
[sub_resource type="CircleShape2D" id="CircleShape2D_j0tb1"]
radius = 26.0192
[node name="Asteroids" type="Node" node_paths=PackedStringArray("asteroid_spawns", "win_progress", "player")]
script = ExtResource("1_j0tb1")
asteroid_spawns = [NodePath("Spawns/SpawnPoint"), NodePath("Spawns/SpawnPoint2"), NodePath("Spawns/SpawnPoint3"), NodePath("Spawns/SpawnPoint4")]
win_progress = NodePath("ProgressBar")
player = NodePath("Ship")
[node name="TextureRect" type="TextureRect" parent="."]
anchors_preset = 15
@ -52,3 +58,39 @@ position = Vector2(30, 0)
[node name="BulletGoal" type="Marker2D" parent="Ship"]
position = Vector2(459, 0)
[node name="Area2D" type="Area2D" parent="Ship"]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ship/Area2D"]
shape = SubResource("CircleShape2D_j0tb1")
[node name="Spawns" type="Node2D" parent="."]
[node name="SpawnPoint" type="Marker2D" parent="Spawns"]
position = Vector2(-92, -85)
[node name="SpawnPoint2" type="Marker2D" parent="Spawns"]
position = Vector2(724, -92)
[node name="SpawnPoint3" type="Marker2D" parent="Spawns"]
position = Vector2(742, 445)
[node name="SpawnPoint4" type="Marker2D" parent="Spawns"]
position = Vector2(-108, 435)
[node name="ProgressBar" type="ProgressBar" parent="."]
modulate = Color(0, 1, 0, 1)
custom_minimum_size = Vector2(32, 0)
anchors_preset = 11
anchor_left = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -4.0
grow_horizontal = 0
grow_vertical = 2
max_value = 1.0
step = 0.0
fill_mode = 3
show_percentage = false
[connection signal="area_entered" from="Ship/Area2D" to="." method="_on_area_2d_area_entered"]

View file

@ -7,6 +7,8 @@
radius = 7.0
[node name="Bullet" type="Area2D"]
collision_layer = 2
collision_mask = 3
script = ExtResource("1_hy4j0")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]