rearengement
This commit is contained in:
@@ -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)
|
||||
|
||||
25
scene/asteroidx1.tscn
Normal file
25
scene/asteroidx1.tscn
Normal file
@@ -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"]
|
||||
20
scene/asteroidx2.tscn
Normal file
20
scene/asteroidx2.tscn
Normal file
@@ -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"]
|
||||
20
scene/asteroidx3.tscn
Normal file
20
scene/asteroidx3.tscn
Normal file
@@ -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"]
|
||||
20
scene/asteroidx4.tscn
Normal file
20
scene/asteroidx4.tscn
Normal file
@@ -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"]
|
||||
22
scene/destroy.tscn
Normal file
22
scene/destroy.tscn
Normal file
@@ -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")
|
||||
19
scene/main_game.tscn
Normal file
19
scene/main_game.tscn
Normal file
@@ -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
|
||||
21
scene/ship.tscn
Normal file
21
scene/ship.tscn
Normal file
@@ -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")
|
||||
22
scene/shoot.tscn
Normal file
22
scene/shoot.tscn
Normal file
@@ -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")
|
||||
16
scene/spawner.tscn
Normal file
16
scene/spawner.tscn
Normal file
@@ -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"]
|
||||
55
scene/wall.tscn
Normal file
55
scene/wall.tscn
Normal file
@@ -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"]
|
||||
61
script/asteroid.gd
Normal file
61
script/asteroid.gd
Normal file
@@ -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()
|
||||
1
script/asteroid.gd.uid
Normal file
1
script/asteroid.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b8a23hkmesx0l
|
||||
14
script/destroy.gd
Normal file
14
script/destroy.gd
Normal file
@@ -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()
|
||||
1
script/destroy.gd.uid
Normal file
1
script/destroy.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bgbncoa145y1l
|
||||
51
script/ship.gd
Normal file
51
script/ship.gd
Normal file
@@ -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)
|
||||
1
script/ship.gd.uid
Normal file
1
script/ship.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://c3i2bhlectmoo
|
||||
17
script/shoot.gd
Normal file
17
script/shoot.gd
Normal file
@@ -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()
|
||||
1
script/shoot.gd.uid
Normal file
1
script/shoot.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://dsd0opfd8kyow
|
||||
71
script/spawner.gd
Normal file
71
script/spawner.gd
Normal file
@@ -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)
|
||||
1
script/spawner.gd.uid
Normal file
1
script/spawner.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://bclp1tkc2npvv
|
||||
7
script/wall.gd
Normal file
7
script/wall.gd
Normal file
@@ -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()
|
||||
1
script/wall.gd.uid
Normal file
1
script/wall.gd.uid
Normal file
@@ -0,0 +1 @@
|
||||
uid://b6422kdu30lo4
|
||||
Reference in New Issue
Block a user