mirror of
https://codeberg.org/Melon-Bread/Comets.gd.git
synced 2024-11-24 21:18:21 -05:00
Initial Invader concept added
This commit is contained in:
parent
8319ddf25a
commit
01f939df48
BIN
assets/_RAW_/invader.pxo
Normal file
BIN
assets/_RAW_/invader.pxo
Normal file
Binary file not shown.
BIN
assets/img/invader.png
Normal file
BIN
assets/img/invader.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 342 B |
34
assets/img/invader.png.import
Normal file
34
assets/img/invader.png.import
Normal file
@ -0,0 +1,34 @@
|
||||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://7n0aykgeuaaw"
|
||||
path="res://.godot/imported/invader.png-e15e275fc7b6a81f2ac56e1169e2bfc2.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/img/invader.png"
|
||||
dest_files=["res://.godot/imported/invader.png-e15e275fc7b6a81f2ac56e1169e2bfc2.ctex"]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/high_quality=false
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_compression=1
|
||||
compress/normal_map=0
|
||||
compress/channel_pack=0
|
||||
mipmaps/generate=false
|
||||
mipmaps/limit=-1
|
||||
roughness/mode=0
|
||||
roughness/src_normal=""
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/normal_map_invert_y=false
|
||||
process/hdr_as_srgb=false
|
||||
process/hdr_clamp_exposure=false
|
||||
process/size_limit=0
|
||||
detect_3d/compress_to=1
|
BIN
assets/sfx/crash2.wav
Normal file
BIN
assets/sfx/crash2.wav
Normal file
Binary file not shown.
24
assets/sfx/crash2.wav.import
Normal file
24
assets/sfx/crash2.wav.import
Normal file
@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://tvb2iqqjjsnq"
|
||||
path="res://.godot/imported/crash2.wav-7a2662502c34f1d9181d94c8e86425a0.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/sfx/crash2.wav"
|
||||
dest_files=["res://.godot/imported/crash2.wav-7a2662502c34f1d9181d94c8e86425a0.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
BIN
assets/sfx/invader.wav
Normal file
BIN
assets/sfx/invader.wav
Normal file
Binary file not shown.
24
assets/sfx/invader.wav.import
Normal file
24
assets/sfx/invader.wav.import
Normal file
@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bb8i4s5bv1r4j"
|
||||
path="res://.godot/imported/invader.wav-17eecca55097f63b87a6a4e28e915787.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/sfx/invader.wav"
|
||||
dest_files=["res://.godot/imported/invader.wav-17eecca55097f63b87a6a4e28e915787.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
BIN
assets/sfx/shoot2.wav
Normal file
BIN
assets/sfx/shoot2.wav
Normal file
Binary file not shown.
24
assets/sfx/shoot2.wav.import
Normal file
24
assets/sfx/shoot2.wav.import
Normal file
@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://bg2eft275t8xi"
|
||||
path="res://.godot/imported/shoot2.wav-93cee12f82dd277d215b2c88cec2c4c4.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/sfx/shoot2.wav"
|
||||
dest_files=["res://.godot/imported/shoot2.wav-93cee12f82dd277d215b2c88cec2c4c4.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=false
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=false
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
154
scenes/invader.tscn
Normal file
154
scenes/invader.tscn
Normal file
@ -0,0 +1,154 @@
|
||||
[gd_scene load_steps=15 format=3 uid="uid://du1namnd5kxs4"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://7n0aykgeuaaw" path="res://assets/img/invader.png" id="1_3tryp"]
|
||||
[ext_resource type="Script" path="res://scripts/invader.gd" id="1_vblvx"]
|
||||
[ext_resource type="Shader" path="res://assets/shaders/PixelExplosion.gdshader" id="2_bav6d"]
|
||||
[ext_resource type="AudioStream" uid="uid://bb8i4s5bv1r4j" path="res://assets/sfx/invader.wav" id="3_orakw"]
|
||||
[ext_resource type="AudioStream" uid="uid://tvb2iqqjjsnq" path="res://assets/sfx/crash2.wav" id="4_5jebg"]
|
||||
[ext_resource type="AudioStream" uid="uid://bg2eft275t8xi" path="res://assets/sfx/shoot2.wav" id="5_c2cqd"]
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_2etwc"]
|
||||
noise_type = 0
|
||||
seed = -13
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_ca84o"]
|
||||
width = 64
|
||||
height = 64
|
||||
generate_mipmaps = false
|
||||
noise = SubResource("FastNoiseLite_2etwc")
|
||||
|
||||
[sub_resource type="FastNoiseLite" id="FastNoiseLite_wjoqq"]
|
||||
noise_type = 0
|
||||
seed = -13
|
||||
|
||||
[sub_resource type="NoiseTexture2D" id="NoiseTexture2D_vfidg"]
|
||||
width = 64
|
||||
height = 64
|
||||
generate_mipmaps = false
|
||||
noise = SubResource("FastNoiseLite_wjoqq")
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_7qjt1"]
|
||||
resource_local_to_scene = true
|
||||
shader = ExtResource("2_bav6d")
|
||||
shader_parameter/progress = null
|
||||
shader_parameter/strength = 1.0
|
||||
shader_parameter/noise_tex_normal = SubResource("NoiseTexture2D_vfidg")
|
||||
shader_parameter/noise_tex = SubResource("NoiseTexture2D_ca84o")
|
||||
|
||||
[sub_resource type="Animation" id="Animation_l62j8"]
|
||||
resource_name = "crash"
|
||||
length = 0.4
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("CrashSound:playing")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [true]
|
||||
}
|
||||
tracks/1/type = "method"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath(".")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0.4, 0.4001),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"queue_free"
|
||||
}, {
|
||||
"args": [],
|
||||
"method": &"queue_free"
|
||||
}]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("Sprite2D:material:shader_parameter/progress")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0, 0.1, 0.2, 0.3),
|
||||
"transitions": PackedFloat32Array(1, 1, 1, 1),
|
||||
"update": 0,
|
||||
"values": [null, 0.33, 0.66, 1.0]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_cojig"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("CrashSound:playing")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 1,
|
||||
"values": [false]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("Sprite2D:material:shader_parameter/progress")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [null]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_1dk2o"]
|
||||
_data = {
|
||||
"RESET": SubResource("Animation_cojig"),
|
||||
"crash": SubResource("Animation_l62j8")
|
||||
}
|
||||
|
||||
[node name="Invader" type="Area2D"]
|
||||
collision_layer = 3
|
||||
collision_mask = 3
|
||||
script = ExtResource("1_vblvx")
|
||||
|
||||
[node name="Sprite2D" type="Sprite2D" parent="."]
|
||||
material = SubResource("ShaderMaterial_7qjt1")
|
||||
texture = ExtResource("1_3tryp")
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."]
|
||||
polygon = PackedVector2Array(12, -15, 16, -10, 24, -10, 29, -6, 32, -2, 10, 15, -3, 15, -31, -1, -31, -3, -23, -10, -15, -10, -10, -15)
|
||||
|
||||
[node name="FlyingTone" type="AudioStreamPlayer2D" parent="."]
|
||||
stream = ExtResource("3_orakw")
|
||||
autoplay = true
|
||||
|
||||
[node name="ShootSound" type="AudioStreamPlayer3D" parent="."]
|
||||
stream = ExtResource("5_c2cqd")
|
||||
|
||||
[node name="CrashSound" type="AudioStreamPlayer2D" parent="."]
|
||||
stream = ExtResource("4_5jebg")
|
||||
|
||||
[node name="ShootTimer" type="Timer" parent="."]
|
||||
autostart = true
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
libraries = {
|
||||
"": SubResource("AnimationLibrary_1dk2o")
|
||||
}
|
||||
|
||||
[node name="GunMarker" type="Marker2D" parent="."]
|
||||
position = Vector2(2, 17)
|
||||
|
||||
[node name="Projectiles" type="Node" parent="."]
|
||||
|
||||
[connection signal="area_entered" from="." to="." method="_on_area_entered"]
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
[connection signal="finished" from="FlyingTone" to="." method="_on_flying_tone_finished"]
|
||||
[connection signal="timeout" from="ShootTimer" to="." method="_on_shoot_timer_timeout"]
|
@ -1,7 +1,5 @@
|
||||
extends Node2D
|
||||
|
||||
# TODO: MAYBE make ufo enemey that randomly flies in from ones side to the other
|
||||
|
||||
const COMET_SPAWNER = preload("res://scenes/comet_spawner.tscn")
|
||||
|
||||
@export var level : int = 1
|
||||
|
66
scripts/invader.gd
Normal file
66
scripts/invader.gd
Normal file
@ -0,0 +1,66 @@
|
||||
extends Area2D
|
||||
|
||||
# TODO: Make a random spawner for invaders
|
||||
# TODO: Give points if shot
|
||||
|
||||
signal shot
|
||||
|
||||
const BULLET = preload("res://scenes/bullet.tscn")
|
||||
|
||||
@export var move_speed := 100.0
|
||||
var movement_direction := Vector2.ZERO
|
||||
var random_position := Vector2.ZERO
|
||||
var can_shoot := false
|
||||
var viewport_size : Vector2
|
||||
|
||||
func _ready() -> void:
|
||||
viewport_size = get_viewport_rect().size
|
||||
|
||||
# I am sorry to who has to make sense of this
|
||||
random_position.x = randi_range(1, 2)
|
||||
if random_position.x == 2:
|
||||
random_position.x = viewport_size.x-1
|
||||
movement_direction.x = -1
|
||||
else:
|
||||
movement_direction.x = 1
|
||||
random_position.y = randi_range(32, viewport_size.y + 32)
|
||||
position = random_position
|
||||
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
position += move_speed * movement_direction * delta
|
||||
|
||||
if can_shoot:
|
||||
# FIXME: Proper shoot angle and not able to sudoku
|
||||
shoot($GunMarker.global_position, randf_range(90.0, 100.0))
|
||||
|
||||
# "Die", if off screen
|
||||
if position.x > viewport_size.x or position.x < 0:
|
||||
queue_free()
|
||||
|
||||
func _on_flying_tone_finished() -> void:
|
||||
$FlyingTone.play()
|
||||
|
||||
func _on_body_entered(body: Node2D) -> void:
|
||||
if body.is_in_group("ship"):
|
||||
body.crash()
|
||||
|
||||
func _on_area_entered(area: Area2D) -> void:
|
||||
if area.is_in_group("bullet"):
|
||||
shot.emit()
|
||||
crash()
|
||||
|
||||
func shoot(pos : Vector2, rot : float) -> void:
|
||||
var bullet := BULLET.instantiate()
|
||||
bullet.position = pos
|
||||
bullet.rotation = rot
|
||||
$Projectiles.add_child(bullet)
|
||||
$ShootSound.play()
|
||||
can_shoot = false
|
||||
$ShootTimer.start()
|
||||
|
||||
func crash() -> void:
|
||||
$AnimationPlayer.play("crash")
|
||||
|
||||
func _on_shoot_timer_timeout() -> void:
|
||||
can_shoot = true
|
Loading…
Reference in New Issue
Block a user