Decreased movement and shot delay of enemies based on number of enemies
remaining; increased tween speed of enemy bounce at 25% remaining.
This commit is contained in:
parent
7a0ea55ff1
commit
f1eec30167
8 changed files with 57 additions and 5 deletions
10
enemy.gd
10
enemy.gd
|
|
@ -3,9 +3,13 @@ extends Area2D
|
||||||
var bullet_scene = preload("res://enemy_bullet.tscn")
|
var bullet_scene = preload("res://enemy_bullet.tscn")
|
||||||
var start_pos = Vector2.ZERO
|
var start_pos = Vector2.ZERO
|
||||||
var speed = 0
|
var speed = 0
|
||||||
|
var tween_speed: float = 1.4
|
||||||
|
|
||||||
var exploding = false
|
var exploding = false
|
||||||
|
|
||||||
|
var enemy_move_aggression = randf_range(5, 20)
|
||||||
|
var enemy_shoot_aggression = randf_range(4, 20)
|
||||||
|
|
||||||
@onready var screensize = get_viewport_rect().size
|
@onready var screensize = get_viewport_rect().size
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -15,11 +19,11 @@ func start(pos):
|
||||||
start_pos = pos
|
start_pos = pos
|
||||||
await get_tree().create_timer(randf_range(0.25, 0.55)).timeout
|
await get_tree().create_timer(randf_range(0.25, 0.55)).timeout
|
||||||
var tween = create_tween().set_trans(Tween.TRANS_BACK)
|
var tween = create_tween().set_trans(Tween.TRANS_BACK)
|
||||||
tween.tween_property(self, "position:y", start_pos.y, 1.4)
|
tween.tween_property(self, "position:y", start_pos.y, tween_speed)
|
||||||
await tween.finished
|
await tween.finished
|
||||||
$MoveTimer.wait_time = randf_range(5, 20)
|
$MoveTimer.wait_time = enemy_move_aggression
|
||||||
$MoveTimer.start()
|
$MoveTimer.start()
|
||||||
$ShootTimer.wait_time = randf_range(4, 20)
|
$ShootTimer.wait_time = enemy_shoot_aggression
|
||||||
$ShootTimer.start()
|
$ShootTimer.start()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
16
main.gd
16
main.gd
|
|
@ -40,12 +40,28 @@ func spawn_enemies():
|
||||||
print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size())
|
print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size())
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func _on_enemy_died():
|
func _on_enemy_died():
|
||||||
enemy_count -= 1
|
enemy_count -= 1
|
||||||
print_debug(enemy_count)
|
print_debug(enemy_count)
|
||||||
if enemy_count == 0:
|
if enemy_count == 0:
|
||||||
print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size())
|
print_debug("Remaining enemies: ", enemy_count, ", ", get_tree().get_nodes_in_group("enemies").size())
|
||||||
win_game()
|
win_game()
|
||||||
|
if enemy_count == ROWS * COLS / 2:
|
||||||
|
print_debug("Enemy count is 50%")
|
||||||
|
update_enemy_aggression(2,10)
|
||||||
|
if enemy_count == ROWS * COLS / 4:
|
||||||
|
print_debug("Enemy count is 25%")
|
||||||
|
update_enemy_aggression(1,1)
|
||||||
|
|
||||||
|
func update_enemy_aggression(low,high):
|
||||||
|
var nodes = get_tree().get_nodes_in_group("enemies")
|
||||||
|
|
||||||
|
for node in nodes:
|
||||||
|
if node is Area2D:
|
||||||
|
node.enemy_move_aggression = randf_range(low,high)
|
||||||
|
node.enemy_shoot_aggression = randf_range(low,high)
|
||||||
|
node.tween_speed = min(low,high) - .75
|
||||||
|
|
||||||
func _on_enemy_hit(value: int):
|
func _on_enemy_hit(value: int):
|
||||||
Global.score += value
|
Global.score += value
|
||||||
|
|
|
||||||
|
|
@ -86,6 +86,7 @@ offset_right = 196.0
|
||||||
offset_bottom = 36.0
|
offset_bottom = 36.0
|
||||||
|
|
||||||
[node name="Title" type="TextureRect" parent="CanvasLayer"]
|
[node name="Title" type="TextureRect" parent="CanvasLayer"]
|
||||||
|
self_modulate = Color(0.015236704, 0.015236706, 0.0152367065, 1)
|
||||||
material = SubResource("ShaderMaterial_kek77")
|
material = SubResource("ShaderMaterial_kek77")
|
||||||
offset_left = 27.0
|
offset_left = 27.0
|
||||||
offset_top = 74.0
|
offset_top = 74.0
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ func start():
|
||||||
print(shield)
|
print(shield)
|
||||||
shader_active = false
|
shader_active = false
|
||||||
$Ship.frame = 1
|
$Ship.frame = 1
|
||||||
|
$Ship/Boosters/BoosterBurst.hide()
|
||||||
$Ship/Boosters.hide()
|
$Ship/Boosters.hide()
|
||||||
$Ship.show()
|
$Ship.show()
|
||||||
position = Vector2(screensize.x / 2, screensize.y)
|
position = Vector2(screensize.x / 2, screensize.y)
|
||||||
|
|
@ -123,9 +124,11 @@ func _on_damage_taken():
|
||||||
|
|
||||||
func _on_player_victory() -> void:
|
func _on_player_victory() -> void:
|
||||||
print("Victory!")
|
print("Victory!")
|
||||||
|
# get_node("EnemyBullet").monitoring = false #TODO make sure bullets stop monitoring!
|
||||||
set_process(false)
|
set_process(false)
|
||||||
$Ship.frame = 1
|
$Ship.frame = 1
|
||||||
await get_tree().create_timer(1).timeout
|
await get_tree().create_timer(1).timeout
|
||||||
|
$Ship/Boosters/BoosterBurst.show()
|
||||||
var tween = create_tween()
|
var tween = create_tween()
|
||||||
tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN)
|
tween.tween_property(self, "position:y", 60 * -1, .25).set_ease(tween.EASE_IN)
|
||||||
await tween.finished
|
await tween.finished
|
||||||
|
|
|
||||||
26
player.tscn
26
player.tscn
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=18 format=3 uid="uid://pyuorpwb7lpe"]
|
[gd_scene load_steps=20 format=3 uid="uid://pyuorpwb7lpe"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dcrnf4r6c5qaw" path="res://player.gd" id="1_sweqy"]
|
[ext_resource type="Script" uid="uid://dcrnf4r6c5qaw" path="res://player.gd" id="1_sweqy"]
|
||||||
[ext_resource type="PackedScene" uid="uid://bwxxdrdvo3le0" path="res://bullet.tscn" id="2_1jxqw"]
|
[ext_resource type="PackedScene" uid="uid://bwxxdrdvo3le0" path="res://bullet.tscn" id="2_1jxqw"]
|
||||||
|
|
@ -73,6 +73,16 @@ animations = [{
|
||||||
"speed": 10.0
|
"speed": 10.0
|
||||||
}]
|
}]
|
||||||
|
|
||||||
|
[sub_resource type="CanvasItemMaterial" id="CanvasItemMaterial_dw050"]
|
||||||
|
particles_animation = true
|
||||||
|
particles_anim_h_frames = 2
|
||||||
|
particles_anim_v_frames = 1
|
||||||
|
particles_anim_loop = false
|
||||||
|
|
||||||
|
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_b26j0"]
|
||||||
|
particle_flag_disable_z = true
|
||||||
|
gravity = Vector3(0, 98, 0)
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_op7ga"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_op7ga"]
|
||||||
size = Vector2(14, 14)
|
size = Vector2(14, 14)
|
||||||
|
|
||||||
|
|
@ -93,6 +103,20 @@ sprite_frames = SubResource("SpriteFrames_u1c27")
|
||||||
animation = &"forward"
|
animation = &"forward"
|
||||||
autoplay = "forward"
|
autoplay = "forward"
|
||||||
|
|
||||||
|
[node name="BoosterBurst" type="GPUParticles2D" parent="Ship/Boosters"]
|
||||||
|
texture_repeat = 2
|
||||||
|
material = SubResource("CanvasItemMaterial_dw050")
|
||||||
|
amount = 10
|
||||||
|
texture = ExtResource("3_1jxqw")
|
||||||
|
lifetime = 0.75
|
||||||
|
interp_to_end = 1.0
|
||||||
|
preprocess = 1.83
|
||||||
|
speed_scale = 15.69
|
||||||
|
draw_order = 2
|
||||||
|
trail_lifetime = 1.8499999999999999
|
||||||
|
trail_sections = 2
|
||||||
|
process_material = SubResource("ParticleProcessMaterial_b26j0")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
shape = SubResource("RectangleShape2D_op7ga")
|
shape = SubResource("RectangleShape2D_op7ga")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ window/size/viewport_height=320
|
||||||
window/size/window_width_override=720
|
window/size/window_width_override=720
|
||||||
window/size/window_height_override=960
|
window/size/window_height_override=960
|
||||||
window/stretch/mode="canvas_items"
|
window/stretch/mode="canvas_items"
|
||||||
|
window/movie_file="/Users/henryfaber/Downloads/shmup_capture.avi"
|
||||||
|
|
||||||
[editor]
|
[editor]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,3 +18,7 @@ func display_digits(n):
|
||||||
for i in 8:
|
for i in 8:
|
||||||
get_child(i).texture.region = Rect2(digit_coords[int(s[i])],
|
get_child(i).texture.region = Rect2(digit_coords[int(s[i])],
|
||||||
Vector2(8, 8))
|
Vector2(8, 8))
|
||||||
|
# var tween = create_tween()
|
||||||
|
# tween.tween_property(get_node("HBoxContainer/ScoreCounter/Digit0"), "scale", scale + Vector2(.5,.5), .15)
|
||||||
|
# await get_tree().create_timer(.25).timeout
|
||||||
|
# tween.tween_property(get_node("HBoxContainer/ScoreCounter/Digit0"), "scale", scale + Vector2(-.5,-.5), .15)
|
||||||
|
|
|
||||||
1
ui.gd
1
ui.gd
|
|
@ -13,7 +13,6 @@ func _ready():
|
||||||
func update_score(value):
|
func update_score(value):
|
||||||
score_counter.display_digits(value)
|
score_counter.display_digits(value)
|
||||||
|
|
||||||
|
|
||||||
func _on_shield_changed(max_value: int, old_value: int, new_value: int) -> void:
|
func _on_shield_changed(max_value: int, old_value: int, new_value: int) -> void:
|
||||||
shield_bar.max_value = max_value
|
shield_bar.max_value = max_value
|
||||||
shield_bar.value = old_value
|
shield_bar.value = old_value
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue