hyper space
This commit is contained in:
46
enemy/enemy.gd
Normal file
46
enemy/enemy.gd
Normal file
@ -0,0 +1,46 @@
|
||||
extends Area2D
|
||||
|
||||
signal died
|
||||
|
||||
var start_pos = Vector2.ZERO
|
||||
var speed = 0
|
||||
|
||||
var bullet_scene = preload("res://enemy_bullet/enemy_bullet.tscn")
|
||||
|
||||
@onready var screensize = get_viewport_rect().size
|
||||
|
||||
func start(pos):
|
||||
speed = 0
|
||||
position = Vector2(pos.x, -pos.y)
|
||||
start_pos = pos
|
||||
await get_tree().create_timer(randf_range(0.25, 0.55)).timeout
|
||||
var tween = create_tween().set_trans(Tween.TRANS_BACK)
|
||||
tween.tween_property(self, "position:y", start_pos.y, 1.4)
|
||||
await tween.finished
|
||||
$MoveTimer.wait_time = randf_range(5, 20)
|
||||
$MoveTimer.start()
|
||||
$ShootTimer.wait_time = randf_range(4, 20)
|
||||
$ShootTimer.start()
|
||||
|
||||
func explode():
|
||||
speed = 0
|
||||
$AnimationPlayer.play("explode")
|
||||
set_deferred("monitoring", false)
|
||||
died.emit(5)
|
||||
await $AnimationPlayer.animation_finished
|
||||
queue_free()
|
||||
|
||||
func _process(delta):
|
||||
position.y += speed * delta
|
||||
if position.y > screensize.y + 32:
|
||||
start(start_pos)
|
||||
|
||||
func _on_move_timer_timeout():
|
||||
speed = randf_range(75, 100)
|
||||
|
||||
func _on_shoot_timer_timeout():
|
||||
var b = bullet_scene.instantiate()
|
||||
get_tree().root.add_child(b)
|
||||
b.start(position)
|
||||
$ShootTimer.wait_time = randf_range(4, 20)
|
||||
$ShootTimer.start()
|
162
enemy/enemy.tscn
Normal file
162
enemy/enemy.tscn
Normal file
@ -0,0 +1,162 @@
|
||||
[gd_scene load_steps=9 format=3 uid="uid://u30xbqx1txm"]
|
||||
|
||||
[ext_resource type="Script" path="res://enemy/enemy.gd" id="1_1a4e0"]
|
||||
[ext_resource type="Texture2D" uid="uid://dxs8nh8w0hl4r" path="res://assets/Enemies/Bon_Bon (16 x 16).png" id="1_cy4xy"]
|
||||
[ext_resource type="Texture2D" uid="uid://c34rv3eisv5gk" path="res://assets/Effects/Explosion (16 x 16).png" id="1_mobcm"]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bvs7u"]
|
||||
size = Vector2(2.8, 1.6)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_bwcbs"]
|
||||
resource_name = "bounce"
|
||||
loop_mode = 1
|
||||
step = 0.05
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("ship:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.35),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [2, 1, 0, 3, 0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("ship:texture")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [ExtResource("1_cy4xy")]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("ship:hframes")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [4]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_n8avp"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("ship:frame")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [0]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("ship:texture")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [ExtResource("1_cy4xy")]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("ship:hframes")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [4]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_mxmxa"]
|
||||
resource_name = "explode"
|
||||
length = 0.5
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("ship:texture")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [ExtResource("1_mobcm")]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("ship:hframes")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [6]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("ship:frame")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3, 0.4, 0.5),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1, 1, 1),
|
||||
"update": 1,
|
||||
"values": [0, 1, 2, 3, 4, 5]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_tma75"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_n8avp"),
|
||||
"bounce": SubResource("Animation_bwcbs"),
|
||||
"explode": SubResource("Animation_mxmxa")
|
||||
}
|
||||
|
||||
[node name="enemy" type="Area2D" groups=["enemies"]]
|
||||
script = ExtResource("1_1a4e0")
|
||||
|
||||
[node name="ship" type="Sprite2D" parent="."]
|
||||
texture = ExtResource("1_cy4xy")
|
||||
hframes = 4
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||
position = Vector2(0, -7.15256e-07)
|
||||
scale = Vector2(5, 5.03082)
|
||||
shape = SubResource("RectangleShape2D_bvs7u")
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_tma75")
|
||||
}
|
||||
autoplay = "bounce"
|
||||
|
||||
[node name="MoveTimer" type="Timer" parent="."]
|
||||
one_shot = true
|
||||
|
||||
[node name="ShootTimer" type="Timer" parent="."]
|
||||
one_shot = true
|
||||
|
||||
[connection signal="timeout" from="MoveTimer" to="." method="_on_move_timer_timeout"]
|
||||
[connection signal="timeout" from="ShootTimer" to="." method="_on_shoot_timer_timeout"]
|
Reference in New Issue
Block a user