This commit is contained in:
ultrablob 2024-04-30 15:37:00 -04:00
parent f7d034147d
commit 57e3151019
15 changed files with 92 additions and 46 deletions

View file

@ -14,4 +14,4 @@ func hit(body):
# Called every frame. 'delta' is the elapsed time since the previous frame. # Called every frame. 'delta' is the elapsed time since the previous frame.
func _physics_process(delta): func _physics_process(delta):
apply_central_force((global_position - player.global_position).normalized() * -300) apply_central_force((global_position - player.global_position).normalized() * -900)

View file

@ -43,19 +43,24 @@ func spawn(item: WaveEnemy):
var spawn_loc = Vector2.ZERO var spawn_loc = Vector2.ZERO
for i in range(10): if item.boss:
var test_pos = Vector2(randf(), randf()) * Vector2(1920, 1080) spawn_loc = Vector2(1920/2, 1080/2)
if not $"../CollisionCheck".is_clear(test_pos, item.check_distance): else:
continue for i in range(10):
spawn_loc = test_pos var test_pos = Vector2(randf(), randf()) * Vector2(1920, 1080)
break if not $"../CollisionCheck".is_clear(test_pos, item.check_distance):
continue
spawn_loc = test_pos
break
var portal_effect = portal.instantiate() if not item.boss:
portal_effect.global_position = spawn_loc var portal_effect = portal.instantiate()
portal_effect.sprite_frames = item.portal_texture portal_effect.global_position = spawn_loc
$/root/Node2D.add_child(portal_effect) portal_effect.sprite_frames = item.portal_texture
await get_tree().create_timer(0.6).timeout $/root/Node2D.add_child(portal_effect)
await get_tree().create_timer(0.6).timeout
var node = item.enemy.instantiate() var node = item.enemy.instantiate()
node.global_position = spawn_loc node.global_position = spawn_loc
node.rotation_degrees = 360 * randf() if not item.boss:
node.rotation_degrees = 360 * randf()
$/root/Node2D.add_child(node) $/root/Node2D.add_child(node)

View file

@ -4,12 +4,7 @@ var bounces = 0
@onready var player = $"../Player" @onready var player = $"../Player"
func _physics_process(delta): func _physics_process(delta):
apply_central_force((global_position - player.global_position).normalized() * -50) rotation = linear_velocity.angle()
if linear_velocity.length() < 10:
$Sprite2D.play("default")
if player in $Explosion.get_overlapping_bodies():
$Sprite2D.play("default")
func hit(body): func hit(body):
if body.is_in_group("destructible"): if body.is_in_group("destructible"):

View file

@ -13,7 +13,7 @@ physics_material_override = SubResource("PhysicsMaterial_odemo")
gravity_scale = 1.66533e-16 gravity_scale = 1.66533e-16
max_contacts_reported = 2 max_contacts_reported = 2
contact_monitor = true contact_monitor = true
linear_damp = 0.1 linear_damp = 1.0
angular_velocity = 0.174533 angular_velocity = 0.174533
script = ExtResource("1_726g8") script = ExtResource("1_726g8")

View file

@ -8,7 +8,7 @@ custom_features=""
export_filter="exclude" export_filter="exclude"
export_files=PackedStringArray("res://godotgif/godotgif.gdextension") export_files=PackedStringArray("res://godotgif/godotgif.gdextension")
include_filter="*.txt" include_filter="*.txt"
exclude_filter="" exclude_filter="*.cache"
export_path="../Build/index.html" export_path="../Build/index.html"
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""

View file

@ -61,9 +61,12 @@ func start_aim():
func can_shoot(yn): func can_shoot(yn):
can_damage = yn can_damage = yn
var dying = false
func destroy(): func destroy():
if is_queued_for_deletion(): if dying:
return return
dying = true
var explosion = load("res://explosion.tscn").instantiate() var explosion = load("res://explosion.tscn").instantiate()
$"/root/Node2D".add_child(explosion) $"/root/Node2D".add_child(explosion)
explosion.global_position = global_position explosion.global_position = global_position

File diff suppressed because one or more lines are too long

View file

@ -28,6 +28,7 @@ position = Vector2(3, 0)
shape = SubResource("CircleShape2D_nxtxc") shape = SubResource("CircleShape2D_nxtxc")
[node name="DeathFX" type="AudioStreamPlayer2D" parent="."] [node name="DeathFX" type="AudioStreamPlayer2D" parent="."]
process_mode = 3
stream = ExtResource("3_urvwh") stream = ExtResource("3_urvwh")
[node name="QuareFX" type="AudioStreamPlayer2D" parent="."] [node name="QuareFX" type="AudioStreamPlayer2D" parent="."]

View file

@ -1,9 +1,25 @@
extends "res://riangle.gd" extends RigidBody2D
@onready var player = $"../Player" @onready var player = $"/root/Node2D/Player"
var dying = false
func destroy():
if dying:
return
dying = true
var explosion = load("res://explosion.tscn").instantiate()
$"/root/Node2D".add_child(explosion)
explosion.global_position = global_position
await get_tree().create_timer(0.2).timeout
queue_free()
func _physics_process(delta): func _physics_process(delta):
apply_central_force((global_position - player.global_position).normalized() * -50) apply_central_force((global_position - player.global_position).normalized() * -200)
$ExplosionRadius.visible = false
for body in $Explosion.get_overlapping_bodies():
if body.name == "Player":
$ExplosionRadius.visible = true
func hit(body): func hit(body):
if body.is_in_group("destructible"): if body.is_in_group("destructible"):
@ -23,6 +39,7 @@ func explode():
func _on_explosion_body_entered(body): func _on_explosion_body_entered(body):
#print(body.name)
if body.name == "Player": if body.name == "Player":
$Sprite2D.play("default") $Sprite2D.play("default")
$ExplosionRadius.visible = true $ExplosionRadius.visible = true

View file

@ -113,6 +113,7 @@ radius = 254.0
[node name="Riangle" type="RigidBody2D" groups=["destructible", "enemy"]] [node name="Riangle" type="RigidBody2D" groups=["destructible", "enemy"]]
physics_material_override = SubResource("PhysicsMaterial_btknm") physics_material_override = SubResource("PhysicsMaterial_btknm")
gravity_scale = 1.66533e-16 gravity_scale = 1.66533e-16
freeze = true
linear_damp = 0.2 linear_damp = 0.2
script = ExtResource("1_81oja") script = ExtResource("1_81oja")
@ -140,6 +141,7 @@ script = ExtResource("4_eemlr")
rotation = -1.5708 rotation = -1.5708
collision_layer = 3 collision_layer = 3
collision_mask = 3 collision_mask = 3
monitorable = false
[node name="CollisionShape2D" type="CollisionShape2D" parent="Explosion"] [node name="CollisionShape2D" type="CollisionShape2D" parent="Explosion"]
shape = SubResource("CircleShape2D_cq436") shape = SubResource("CircleShape2D_cq436")

View file

@ -1,6 +1,11 @@
extends PhysicsBody2D extends PhysicsBody2D
var dying = false
func destroy(): func destroy():
if dying:
return
dying = true
var explosion = load("res://explosion.tscn").instantiate() var explosion = load("res://explosion.tscn").instantiate()
$"/root/Node2D".add_child(explosion) $"/root/Node2D".add_child(explosion)
explosion.global_position = global_position explosion.global_position = global_position

View file

@ -18,8 +18,12 @@ func eject():
var riangle = spawner.get_child(0) var riangle = spawner.get_child(0)
if riangle == null: if riangle == null:
return return
riangle.apply_central_impulse(Vector2(1000, randi_range(-100, 100)).rotated(spawner.rotation)) riangle.freeze = false
riangle.apply_central_impulse(Vector2(500, randi_range(-100, 100)).rotated(spawner.rotation))
await get_tree().create_timer(0.05).timeout await get_tree().create_timer(0.05).timeout
if riangle == null:
return
riangle.reparent($/root/Node2D) riangle.reparent($/root/Node2D)
await get_tree().create_timer(0.1).timeout await get_tree().create_timer(0.1).timeout

4
tar.gd
View file

@ -2,7 +2,7 @@ extends RigidBody2D
var phase2_active = false var phase2_active = false
var health = 10 var health = 10
var spawn_remaining = 5 var spawn_remaining = 10
@onready var player = $"../Player" @onready var player = $"../Player"
func hit(body): func hit(body):
@ -25,7 +25,7 @@ func _ready():
func _physics_process(delta): func _physics_process(delta):
if phase2_active: if phase2_active:
apply_central_force((global_position - player.global_position).normalized() * -1700) apply_central_force((global_position - player.global_position).normalized() * -1600)
func phase(): func phase():
if phase2_active: if phase2_active:

View file

@ -463,7 +463,7 @@ animations = [{
"speed": 10.0 "speed": 10.0
}] }]
[node name="Tar" type="RigidBody2D"] [node name="Tar" type="RigidBody2D" groups=["enemy"]]
position = Vector2(386, 292) position = Vector2(386, 292)
gravity_scale = 1.66533e-16 gravity_scale = 1.66533e-16
freeze = true freeze = true

View file

@ -4,5 +4,6 @@ class_name WaveEnemy
@export var enemy: PackedScene = null @export var enemy: PackedScene = null
@export var boss: bool = false
@export var portal_texture: SpriteFrames = null @export var portal_texture: SpriteFrames = null
@export var check_distance = 100 @export var check_distance = 100