level now detects (in a very rudimentary way, by checking every frame) whether all blocks have been broken

This commit is contained in:
2024-07-23 20:53:55 +02:00
parent eeffba61b6
commit 9ae0d04136
6 changed files with 40 additions and 75 deletions
+8 -19
View File
@@ -3,18 +3,18 @@ extends CharacterBody2D
@export var speed: float = 5
@export var strength: int = 1
const _speed_mult: float = 20
var _direction: Vector2 = Vector2(-1.0, -0.5)
var _velocity: Vector2
const _speed_mult: float = 5000
var _direction: Vector2
var _velocity: Vector2
var deg: float
func _ready():
_velocity.x = 400#speed * _speed_mult * _direction.x * delta
_velocity.y = 450#speed * _speed_mult * _direction.y * delta
_direction = Vector2.UP.rotated(deg_to_rad(randf_range(0.0, 360.0)))
func _physics_process(delta):
_velocity.x = speed * _speed_mult * _direction.x * delta
_velocity.y = speed * _speed_mult * _direction.y * delta
var collide = move_and_collide(_velocity * delta)
if collide:
@@ -23,22 +23,11 @@ func _physics_process(delta):
_invert_x()
if (deg >= 135 and deg < 225) or deg < 45 or deg >= 315:
_invert_y()
print(collide.get_collider())
if collide.get_collider().get_parent() is Block:
print(true)
collide.get_collider().get_parent().take_damage(strength)
func _invert_x():
_velocity.x *= -1
_direction.x *= -1
func _invert_y():
_velocity.y *= -1
func has_collided():
pass
#if $Raycasts/North.is_colliding() or $Raycasts/South.is_colliding():
#_invert_y()
#print("y")
#if $Raycasts/West.is_colliding() or $Raycasts/East.is_colliding():
#_invert_x()
#print("x")
_direction.y *= -1
+4 -44
View File
@@ -1,55 +1,15 @@
[gd_scene load_steps=8 format=3 uid="uid://sl3jbnopo0yh"]
[gd_scene load_steps=4 format=3 uid="uid://sl3jbnopo0yh"]
[ext_resource type="PackedScene" uid="uid://d2r0ip6xy3a2" path="res://balls/ball.tscn" id="1_ffml1"]
[ext_resource type="Texture2D" uid="uid://cxi0fqy5sajh5" path="res://balls/basic/basic.webp" id="2_4dnuc"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_isusp"]
size = Vector2(50, 50)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_qicwc"]
size = Vector2(46, 2)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ugdte"]
size = Vector2(46, 2)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_2tu06"]
size = Vector2(2, 46)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_0vqpn"]
size = Vector2(2, 46)
[sub_resource type="CircleShape2D" id="CircleShape2D_gj21y"]
radius = 25.0
[node name="Ball" instance=ExtResource("1_ffml1")]
collision_mask = 14
[node name="CollisionShape2D" type="CollisionShape2D" parent="." index="0"]
shape = SubResource("RectangleShape2D_isusp")
shape = SubResource("CircleShape2D_gj21y")
[node name="Sprite2D" type="Sprite2D" parent="." index="1"]
texture = ExtResource("2_4dnuc")
[node name="Raycasts" type="Node2D" parent="." index="2"]
visible = false
[node name="North" type="ShapeCast2D" parent="Raycasts" index="0"]
shape = SubResource("RectangleShape2D_qicwc")
target_position = Vector2(0, -25)
collision_mask = 10
collide_with_areas = true
[node name="South" type="ShapeCast2D" parent="Raycasts" index="1"]
shape = SubResource("RectangleShape2D_ugdte")
target_position = Vector2(0, 25)
collision_mask = 10
collide_with_areas = true
[node name="West" type="ShapeCast2D" parent="Raycasts" index="2"]
shape = SubResource("RectangleShape2D_2tu06")
target_position = Vector2(-25, 0)
collision_mask = 10
collide_with_areas = true
[node name="East" type="ShapeCast2D" parent="Raycasts" index="3"]
shape = SubResource("RectangleShape2D_0vqpn")
target_position = Vector2(25, 0)
collision_mask = 10
collide_with_areas = true