From fd67adacc97471409adc677e694e2396cc3bb613 Mon Sep 17 00:00:00 2001 From: Dukantic Date: Thu, 4 Sep 2025 17:55:05 +0200 Subject: [PATCH] rearengement --- project.godot | 8 +++++ scene/asteroidx1.tscn | 25 +++++++++++++++ scene/asteroidx2.tscn | 20 ++++++++++++ scene/asteroidx3.tscn | 20 ++++++++++++ scene/asteroidx4.tscn | 20 ++++++++++++ scene/destroy.tscn | 22 +++++++++++++ scene/main_game.tscn | 19 +++++++++++ scene/ship.tscn | 21 +++++++++++++ scene/shoot.tscn | 22 +++++++++++++ scene/spawner.tscn | 16 ++++++++++ scene/wall.tscn | 55 ++++++++++++++++++++++++++++++++ script/asteroid.gd | 61 ++++++++++++++++++++++++++++++++++++ script/asteroid.gd.uid | 1 + script/destroy.gd | 14 +++++++++ script/destroy.gd.uid | 1 + script/ship.gd | 51 ++++++++++++++++++++++++++++++ script/ship.gd.uid | 1 + script/shoot.gd | 17 ++++++++++ script/shoot.gd.uid | 1 + script/spawner.gd | 71 ++++++++++++++++++++++++++++++++++++++++++ script/spawner.gd.uid | 1 + script/wall.gd | 7 +++++ script/wall.gd.uid | 1 + 23 files changed, 475 insertions(+) create mode 100644 scene/asteroidx1.tscn create mode 100644 scene/asteroidx2.tscn create mode 100644 scene/asteroidx3.tscn create mode 100644 scene/asteroidx4.tscn create mode 100644 scene/destroy.tscn create mode 100644 scene/main_game.tscn create mode 100644 scene/ship.tscn create mode 100644 scene/shoot.tscn create mode 100644 scene/spawner.tscn create mode 100644 scene/wall.tscn create mode 100644 script/asteroid.gd create mode 100644 script/asteroid.gd.uid create mode 100644 script/destroy.gd create mode 100644 script/destroy.gd.uid create mode 100644 script/ship.gd create mode 100644 script/ship.gd.uid create mode 100644 script/shoot.gd create mode 100644 script/shoot.gd.uid create mode 100644 script/spawner.gd create mode 100644 script/spawner.gd.uid create mode 100644 script/wall.gd create mode 100644 script/wall.gd.uid diff --git a/project.godot b/project.godot index 4c51379..d2dccde 100644 --- a/project.godot +++ b/project.godot @@ -22,6 +22,14 @@ window/size/viewport_height=640 [input] +ui_accept={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194309,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194310,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":32,"physical_keycode":0,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) +] +} ui_left={ "deadzone": 0.5, "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) diff --git a/scene/asteroidx1.tscn b/scene/asteroidx1.tscn new file mode 100644 index 0000000..18fe24f --- /dev/null +++ b/scene/asteroidx1.tscn @@ -0,0 +1,25 @@ +[gd_scene load_steps=4 format=3 uid="uid://ditud5veuxqyb"] + +[ext_resource type="Script" uid="uid://b8a23hkmesx0l" path="res://script/asteroid.gd" id="1_p0ukn"] +[ext_resource type="Texture2D" uid="uid://dbingmvgsgvfv" path="res://assets/asteroidx1.png" id="1_u87q6"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_p0ukn"] +radius = 14.0357 + +[node name="asteroid" type="RigidBody2D"] +collision_layer = 2 +collision_mask = 2 +mass = 5.0 +contact_monitor = true +max_contacts_reported = 4 +script = ExtResource("1_p0ukn") + +[node name="Asteroid" type="Sprite2D" parent="."] +texture = ExtResource("1_u87q6") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +light_mask = 2 +visibility_layer = 2 +shape = SubResource("CircleShape2D_p0ukn") + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scene/asteroidx2.tscn b/scene/asteroidx2.tscn new file mode 100644 index 0000000..c1022c1 --- /dev/null +++ b/scene/asteroidx2.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://d2jxc24g18ab1"] + +[ext_resource type="Script" uid="uid://b8a23hkmesx0l" path="res://script/asteroid.gd" id="1_ka8bu"] +[ext_resource type="Texture2D" uid="uid://bby053xsfn3cp" path="res://assets/asteroidx2.png" id="2_e2m2r"] + +[node name="asteroid" type="RigidBody2D"] +collision_layer = 2 +collision_mask = 2 +mass = 10.0 +contact_monitor = true +max_contacts_reported = 4 +script = ExtResource("1_ka8bu") + +[node name="Asteroid" type="Sprite2D" parent="."] +texture = ExtResource("2_e2m2r") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +polygon = PackedVector2Array(16, -23, 3, -29, -11, -27, -22, -12, -27, 2, -25, 21, -6, 30, 17, 23, 23, 10, 29, 1, 20, -8) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scene/asteroidx3.tscn b/scene/asteroidx3.tscn new file mode 100644 index 0000000..c879455 --- /dev/null +++ b/scene/asteroidx3.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://buy8yafwaicq8"] + +[ext_resource type="Script" uid="uid://b8a23hkmesx0l" path="res://script/asteroid.gd" id="1_e451a"] +[ext_resource type="Texture2D" uid="uid://dt08ism4ulfay" path="res://assets/asteroidx3.png" id="2_beklf"] + +[node name="asteroid" type="RigidBody2D"] +collision_layer = 2 +collision_mask = 2 +mass = 20.0 +contact_monitor = true +max_contacts_reported = 4 +script = ExtResource("1_e451a") + +[node name="Asteroid" type="Sprite2D" parent="."] +texture = ExtResource("2_beklf") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +polygon = PackedVector2Array(23, 10, 36, -11, 22, -32, 8, -43, -32, -40, -40, -25, -43, 1, -40, 23, -24, 41, 3, 43, 38, 19) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scene/asteroidx4.tscn b/scene/asteroidx4.tscn new file mode 100644 index 0000000..deebdf2 --- /dev/null +++ b/scene/asteroidx4.tscn @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://xldavgivpb3j"] + +[ext_resource type="Script" uid="uid://b8a23hkmesx0l" path="res://script/asteroid.gd" id="1_pojcu"] +[ext_resource type="Texture2D" uid="uid://bs836c8u5j3y6" path="res://assets/asteroidx4.png" id="2_gv6mu"] + +[node name="asteroid" type="RigidBody2D"] +collision_layer = 2 +collision_mask = 2 +mass = 40.0 +contact_monitor = true +max_contacts_reported = 4 +script = ExtResource("1_pojcu") + +[node name="Asteroid" type="Sprite2D" parent="."] +texture = ExtResource("2_gv6mu") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +polygon = PackedVector2Array(55, 3, 35, -20, 34, -40, 1, -49, -35, -52, -55, -29, -58, -1, -48, 30, -22, 53, 13, 58, 40, 30) + +[connection signal="body_entered" from="." to="." method="_on_body_entered"] diff --git a/scene/destroy.tscn b/scene/destroy.tscn new file mode 100644 index 0000000..34a45c6 --- /dev/null +++ b/scene/destroy.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=3 uid="uid://bl3ans3gkp8ll"] + +[ext_resource type="Texture2D" uid="uid://ckgjtmh5asu4w" path="res://assets/shoot.png" id="1_4xjek"] +[ext_resource type="Script" uid="uid://bgbncoa145y1l" path="res://script/destroy.gd" id="2_owou8"] + +[sub_resource type="Gradient" id="Gradient_owou8"] +offsets = PackedFloat32Array(0, 0.553333, 1) +colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 0.772549, 1, 1, 1, 0) + +[node name="CPUParticles2D" type="CPUParticles2D"] +emitting = false +amount = 16 +texture = ExtResource("1_4xjek") +lifetime = 2.5 +one_shot = true +explosiveness = 0.5 +randomness = 0.46 +spread = 180.0 +gravity = Vector2(0, 0) +initial_velocity_max = 50.0 +color_ramp = SubResource("Gradient_owou8") +script = ExtResource("2_owou8") diff --git a/scene/main_game.tscn b/scene/main_game.tscn new file mode 100644 index 0000000..103b81f --- /dev/null +++ b/scene/main_game.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=4 format=3 uid="uid://btcb75wp78ory"] + +[ext_resource type="PackedScene" uid="uid://d1ugwu6dqomtg" path="res://scene/wall.tscn" id="1_u115g"] +[ext_resource type="PackedScene" uid="uid://36q833dx6dmq" path="res://scene/ship.tscn" id="2_02eqj"] +[ext_resource type="PackedScene" uid="uid://b6hqwxrexoa2n" path="res://scene/spawner.tscn" id="3_50rem"] + +[node name="main_game" type="Node2D"] + +[node name="wall" parent="." instance=ExtResource("1_u115g")] + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2(320, 320) + +[node name="CharacterBody2D" parent="." instance=ExtResource("2_02eqj")] +position = Vector2(156, 206) + +[node name="spawner" parent="." node_paths=PackedStringArray("player") instance=ExtResource("3_50rem")] +player = NodePath("../CharacterBody2D") +distance = 500.0 diff --git a/scene/ship.tscn b/scene/ship.tscn new file mode 100644 index 0000000..d9f872b --- /dev/null +++ b/scene/ship.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=5 format=3 uid="uid://36q833dx6dmq"] + +[ext_resource type="Script" uid="uid://c3i2bhlectmoo" path="res://script/ship.gd" id="1_4cq66"] +[ext_resource type="Texture2D" uid="uid://b037piy3tkefs" path="res://assets/ship.png" id="1_l3rv8"] +[ext_resource type="PackedScene" uid="uid://b1jtii12cqye1" path="res://scene/shoot.tscn" id="2_v4325"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_4cq66"] +size = Vector2(16, 28) + +[node name="CharacterBody2D" type="CharacterBody2D"] +script = ExtResource("1_4cq66") +SHOOT_NODE = ExtResource("2_v4325") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +rotation = 1.5708 +shape = SubResource("RectangleShape2D_4cq66") + +[node name="Ship" type="Sprite2D" parent="."] +texture_filter = 1 +rotation = 1.5708 +texture = ExtResource("1_l3rv8") diff --git a/scene/shoot.tscn b/scene/shoot.tscn new file mode 100644 index 0000000..c661a0d --- /dev/null +++ b/scene/shoot.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=4 format=3 uid="uid://b1jtii12cqye1"] + +[ext_resource type="Texture2D" uid="uid://ckgjtmh5asu4w" path="res://assets/shoot.png" id="1_ttj7r"] +[ext_resource type="Script" uid="uid://dsd0opfd8kyow" path="res://script/shoot.gd" id="1_vnmmp"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_yt1ub"] +radius = 5.0 + +[node name="shoot" type="RigidBody2D"] +collision_layer = 2 +collision_mask = 2 +mass = 0.001 +gravity_scale = 0.0 +script = ExtResource("1_vnmmp") +SPEED = 400.0 + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture_filter = 1 +texture = ExtResource("1_ttj7r") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_yt1ub") diff --git a/scene/spawner.tscn b/scene/spawner.tscn new file mode 100644 index 0000000..0f7ea02 --- /dev/null +++ b/scene/spawner.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=6 format=3 uid="uid://b6hqwxrexoa2n"] + +[ext_resource type="Script" uid="uid://bclp1tkc2npvv" path="res://script/spawner.gd" id="1_yp5lu"] +[ext_resource type="PackedScene" uid="uid://ditud5veuxqyb" path="res://scene/asteroidx1.tscn" id="2_7ocbr"] +[ext_resource type="PackedScene" uid="uid://d2jxc24g18ab1" path="res://scene/asteroidx2.tscn" id="3_mv5bd"] +[ext_resource type="PackedScene" uid="uid://buy8yafwaicq8" path="res://scene/asteroidx3.tscn" id="4_h3fkd"] +[ext_resource type="PackedScene" uid="uid://xldavgivpb3j" path="res://scene/asteroidx4.tscn" id="5_qmymf"] + +[node name="spawner" type="Node2D"] +script = ExtResource("1_yp5lu") +asteroidx1 = ExtResource("2_7ocbr") +asteroidx2 = ExtResource("3_mv5bd") +asteroidx3 = ExtResource("4_h3fkd") +asteroidx4 = ExtResource("5_qmymf") + +[connection signal="add_collision" from="." to="." method="_add_collision"] diff --git a/scene/wall.tscn b/scene/wall.tscn new file mode 100644 index 0000000..5b40fb3 --- /dev/null +++ b/scene/wall.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=4 format=3 uid="uid://d1ugwu6dqomtg"] + +[ext_resource type="Script" uid="uid://b6422kdu30lo4" path="res://script/wall.gd" id="1_xxgf6"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_oh6kn"] +size = Vector2(20, 640) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_xxgf6"] +size = Vector2(640, 20) + +[node name="wall" type="Node2D"] +script = ExtResource("1_xxgf6") + +[node name="ColorRect" type="ColorRect" parent="."] +offset_right = 640.0 +offset_bottom = 640.0 +color = Color(0, 0, 0, 1) + +[node name="StaticBody2D" type="StaticBody2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2(0, 320) +shape = SubResource("RectangleShape2D_oh6kn") + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2(640, 320) +shape = SubResource("RectangleShape2D_oh6kn") + +[node name="CollisionShape2D3" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2(320, 0) +shape = SubResource("RectangleShape2D_xxgf6") + +[node name="CollisionShape2D4" type="CollisionShape2D" parent="StaticBody2D"] +position = Vector2(320, 640) +shape = SubResource("RectangleShape2D_xxgf6") + +[node name="Area2D" type="Area2D" parent="."] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"] +position = Vector2(0, 320) +shape = SubResource("RectangleShape2D_oh6kn") + +[node name="CollisionShape2D2" type="CollisionShape2D" parent="Area2D"] +position = Vector2(640, 320) +shape = SubResource("RectangleShape2D_oh6kn") + +[node name="CollisionShape2D3" type="CollisionShape2D" parent="Area2D"] +position = Vector2(320, 0) +shape = SubResource("RectangleShape2D_xxgf6") + +[node name="CollisionShape2D4" type="CollisionShape2D" parent="Area2D"] +position = Vector2(320, 640) +shape = SubResource("RectangleShape2D_xxgf6") + +[connection signal="body_entered" from="Area2D" to="." method="_body_entered_for_multiple"] diff --git a/script/asteroid.gd b/script/asteroid.gd new file mode 100644 index 0000000..02fd2e1 --- /dev/null +++ b/script/asteroid.gd @@ -0,0 +1,61 @@ +extends RigidBody2D + +var SPEED : float +var direction : Vector2 +var type:= 1 +var is_firt_entree := true + +@export var particles := load("res://destroy.tscn") + +@export var asteroidx1 : = load("res://asteroidx1.tscn") +@export var asteroidx2 : = load("res://asteroidx2.tscn") +@export var asteroidx3 : = load("res://asteroidx3.tscn") + + +func _ready() -> void: + add_to_group("asteroid") + SPEED = randf() / 50 +50 + rotation = randf_range(0.0, 360.0) + +func _process(_delta: float) -> void: + linear_velocity = direction * SPEED + +func split(): + var packed_use: PackedScene + + if type == 1: + var part = particles.instantiate() + part.global_position = global_position + get_parent().call_deferred("add_child", part) + queue_free() + return + elif type == 2: + packed_use = asteroidx1 + elif type == 3: + packed_use = asteroidx2 + elif type == 4: + packed_use = asteroidx3 + + var first = packed_use.instantiate() + var second = packed_use.instantiate() + var nor = direction.rotated(PI/2).normalized() + first.direction = direction + second.direction = direction + first.global_position = position + (2**type * nor) + first.type = type-1 + second.global_position = position - (2**type * nor) + second.type = type-1 + var parent = get_parent() + var part = particles.instantiate() + part.global_position = global_position + parent.call_deferred("add_child", first) + parent.call_deferred("add_child", second) + parent.call_deferred("add_child", part) + queue_free() + +func _on_body_entered(body: Node) -> void: + if body.is_in_group("asteroid"): + get_parent().add_collision(body, self) + if body.is_in_group("shoot"): + body.queue_free() + split() diff --git a/script/asteroid.gd.uid b/script/asteroid.gd.uid new file mode 100644 index 0000000..90af7cf --- /dev/null +++ b/script/asteroid.gd.uid @@ -0,0 +1 @@ +uid://b8a23hkmesx0l diff --git a/script/destroy.gd b/script/destroy.gd new file mode 100644 index 0000000..4db895c --- /dev/null +++ b/script/destroy.gd @@ -0,0 +1,14 @@ +extends CPUParticles2D + +var time :=0.0 + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + emitting = true + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + time+=delta + if time >= 10: + queue_free() diff --git a/script/destroy.gd.uid b/script/destroy.gd.uid new file mode 100644 index 0000000..118ab38 --- /dev/null +++ b/script/destroy.gd.uid @@ -0,0 +1 @@ +uid://bgbncoa145y1l diff --git a/script/ship.gd b/script/ship.gd new file mode 100644 index 0000000..9b59043 --- /dev/null +++ b/script/ship.gd @@ -0,0 +1,51 @@ +extends CharacterBody2D + +@export var MAX_SPEED: float = 200 +@export var SHOOT_NODE: PackedScene + +const SPEED = 25.0 +const JUMP_VELOCITY = -400.0 +var mouse_position: Vector2 = Vector2.ZERO +var direction :=Vector2(1,0) +var horizontal : float +var vertical : float +var rota_temp: float +var delay := 0.0 + +func _input(event): + pass + if event is InputEventMouseMotion: + mouse_position = event.position + + +func _physics_process(delta: float) -> void: + delay += delta + if Input.is_action_pressed("ui_accept") and delay >= 0.5: + shoot() + delay = 0 + + + horizontal = Input.get_axis("ui_up", "ui_down") + vertical = Input.get_axis("ui_left", "ui_right") + if vertical != 0: + velocity.x = move_toward(velocity.x, MAX_SPEED * vertical, SPEED) + else: + velocity.x = move_toward(velocity.x, 0, SPEED) + + if horizontal != 0: + velocity.y = move_toward(velocity.y, MAX_SPEED * horizontal, SPEED) + else: + velocity.y = move_toward(velocity.y, 0, SPEED) + + if horizontal != 0 or vertical != 0: + direction = velocity + rotation = atan2(horizontal, vertical) + + move_and_slide() + + +func shoot()->void: + var new = SHOOT_NODE.instantiate() + new.direction = direction + new.position = position + (18 * direction.normalized()) + get_parent().add_child(new) diff --git a/script/ship.gd.uid b/script/ship.gd.uid new file mode 100644 index 0000000..a599d8b --- /dev/null +++ b/script/ship.gd.uid @@ -0,0 +1 @@ +uid://c3i2bhlectmoo diff --git a/script/shoot.gd b/script/shoot.gd new file mode 100644 index 0000000..c27b49b --- /dev/null +++ b/script/shoot.gd @@ -0,0 +1,17 @@ +extends RigidBody2D + +@export var SPEED : float = 100.0 +var direction: Vector2: + set(val): + direction = val.normalized() * SPEED +var time := 0.0 + +func _ready() -> void: + add_to_group("shoot") + +func _process(delta: float) -> void: + linear_velocity = direction + + time += delta + #if time >= 2: + # self.queue_free() diff --git a/script/shoot.gd.uid b/script/shoot.gd.uid new file mode 100644 index 0000000..46d3cdb --- /dev/null +++ b/script/shoot.gd.uid @@ -0,0 +1 @@ +uid://dsd0opfd8kyow diff --git a/script/spawner.gd b/script/spawner.gd new file mode 100644 index 0000000..a898e20 --- /dev/null +++ b/script/spawner.gd @@ -0,0 +1,71 @@ +extends Node2D + +@export var asteroidx1 : PackedScene +@export var asteroidx2 : PackedScene +@export var asteroidx3 : PackedScene +@export var asteroidx4 : PackedScene +@export var player : CharacterBody2D +@export var distance:= 600.0 + +var current_time := 0.0 + + +var list_of_collision_1 : Array[Node] +var list_of_collision_2 : Array[Node] + +# 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: + var tmp : Vector2 + for i in range(list_of_collision_1.size()): + if list_of_collision_1[i] and list_of_collision_2[i]: + var normal_vec = (list_of_collision_1[i].position - list_of_collision_2[i].position).normalized() + tmp = list_of_collision_1[i].direction + list_of_collision_1[i].direction = (list_of_collision_2[i].direction + normal_vec).normalized() + list_of_collision_2[i].direction = (tmp - normal_vec).normalized() + list_of_collision_1 = [] + list_of_collision_2 = [] + current_time += delta + if current_time >= 2.0: + current_time = 0 + spawn() + +func spawn_duplicate(asteroid: Node2D): + var dup = asteroid.duplicate() + dup.position = (asteroid.position - Vector2(320, 320)).rotated(PI/2) + Vector2(320, 320) + dup.direction = (asteroid.direction - Vector2(320, 320)).rotated(PI/2) + Vector2(320, 320) + add_child(dup) + +func spawn(): + var choice = randi_range(1, 4) + var new + if choice == 1: + new = asteroidx1.instantiate() + new.type = 1 + elif choice == 2: + new = asteroidx2.instantiate() + new.type = 2 + elif choice == 3: + new = asteroidx3.instantiate() + new.type = 3 + elif choice == 4: + new = asteroidx4.instantiate() + new.type = 4 + var new_global_position = Vector2(distance,0).rotated(randf_range(0.0, 360)) + Vector2(320, 320) + new.global_position = new_global_position + new.direction = (player.global_position - new_global_position).normalized() + add_child(new) + + +func add_collision(body1 : Node, body2: Node) -> void: + for i in range(list_of_collision_1.size()): + if list_of_collision_1[i] == body1 and list_of_collision_2[i]== body2: + return + if list_of_collision_1[i] == body2 and list_of_collision_2[i] == body1: + return + list_of_collision_1.append(body1) + list_of_collision_2.append(body2) diff --git a/script/spawner.gd.uid b/script/spawner.gd.uid new file mode 100644 index 0000000..9c2c552 --- /dev/null +++ b/script/spawner.gd.uid @@ -0,0 +1 @@ +uid://bclp1tkc2npvv diff --git a/script/wall.gd b/script/wall.gd new file mode 100644 index 0000000..3a61df7 --- /dev/null +++ b/script/wall.gd @@ -0,0 +1,7 @@ +extends Node2D + +@export var spawner: Node2D + +func _body_entered_for_multiple(body: Node2D) -> void: + if body.is_in_group("asteroid") and body.get("is_firt_entree") == false: + spawner.spawn() diff --git a/script/wall.gd.uid b/script/wall.gd.uid new file mode 100644 index 0000000..2da4122 --- /dev/null +++ b/script/wall.gd.uid @@ -0,0 +1 @@ +uid://b6422kdu30lo4