rearengement
This commit is contained in:
@@ -22,6 +22,14 @@ window/size/viewport_height=640
|
|||||||
|
|
||||||
[input]
|
[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={
|
ui_left={
|
||||||
"deadzone": 0.5,
|
"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)
|
"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