Prevent overlapping buildings

This commit is contained in:
2025-04-30 11:21:34 +02:00
parent 7d79d3f60f
commit fee9cb99cf
8 changed files with 82 additions and 11 deletions

View File

@ -83,3 +83,10 @@ shape = SubResource("CircleShape2D_be2t6")
[node name="Timer" type="Timer" parent="."]
autostart = true
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(0, 17)
shape = SubResource("CapsuleShape2D_ssiuv")
debug_color = Color(0.862152, 0.144907, 0.800391, 0.42)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=7 format=3 uid="uid://uqxd2lii1xba"]
[gd_scene load_steps=8 format=3 uid="uid://uqxd2lii1xba"]
[ext_resource type="Script" uid="uid://dil41a1ymo0ua" path="res://Game/Towers/towers.gd" id="1_bhlym"]
[ext_resource type="Texture2D" uid="uid://dkgih7tl654v1" path="res://Assets/Towers/Mortar part (3).png" id="1_sq58r"]
@ -12,6 +12,10 @@ height = 88.0
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bhlym"]
size = Vector2(367.125, 172.25)
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_bhlym"]
radius = 29.0
height = 88.0
[node name="MortarTower" type="Node2D"]
script = ExtResource("1_bhlym")
@ -46,3 +50,10 @@ texture = ExtResource("3_82ftk")
[node name="Timer" type="Timer" parent="."]
autostart = true
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(0, 17)
shape = SubResource("CapsuleShape2D_bhlym")
debug_color = Color(0.862152, 0.144907, 0.800391, 0.42)

View File

@ -24,10 +24,25 @@ func _ready() -> void:
func _process(delta: float) -> void:
if follower:
position = get_viewport().get_mouse_position()
if not target:
if not name.contains("MortarTower"):
if get_node("Area2D").get_overlapping_bodies().size() > 1:
get_node("CharacterBody2D/AnimatedSprite2D").modulate = Color(255, 0, 0, 0.3)
else:
get_node("CharacterBody2D/AnimatedSprite2D").modulate = Color(1, 1, 1, 1)
else:
if get_node("Area2D").get_overlapping_bodies().size() > 1:
get_node("CharacterBody2D/lifter - 1").modulate = Color(255, 0, 0, 0.3)
get_node("CharacterBody2D/lifter - 2").modulate = Color(255, 0, 0, 0.3)
get_node("CharacterBody2D/MortarPart(2)").modulate = Color(255, 0, 0, 0.3)
else:
get_node("CharacterBody2D/lifter - 1").modulate = Color(1, 1, 1, 1)
get_node("CharacterBody2D/lifter - 2").modulate = Color(1, 1, 1, 1)
get_node("CharacterBody2D/MortarPart(2)").modulate = Color(1, 1, 1, 1)
elif not target:
if get_node("CharacterBody2D/Area2D").get_overlapping_bodies():
choose_target(null)
if lifter:
elif lifter:
lifteramount += 4
if lifteramount <= 40:
get_node("CharacterBody2D/lifter - 1").position.y -= 4
@ -59,7 +74,8 @@ func get_if_moving_state():
func _input(event):
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
if abs(position) <= get_viewport().get_mouse_position():
follower = false
if get_node("Area2D").get_overlapping_bodies().size() <= 1:
follower = false
func choose_target(body : Node2D) -> void:
if not follower:

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=12 format=3 uid="uid://b4e605q60lde4"]
[gd_scene load_steps=13 format=3 uid="uid://b4e605q60lde4"]
[ext_resource type="Script" uid="uid://dil41a1ymo0ua" path="res://Game/Towers/towers.gd" id="1_grwc8"]
[ext_resource type="Texture2D" uid="uid://dngrpwmj4oedg" path="res://Assets/Towers/S_Fly.png" id="2_grwc8"]
@ -60,6 +60,10 @@ height = 88.0
[sub_resource type="CircleShape2D" id="CircleShape2D_c5q70"]
radius = 183.044
[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_grwc8"]
radius = 29.0
height = 88.0
[node name="WizardTower" type="Node2D"]
script = ExtResource("1_grwc8")
@ -87,3 +91,10 @@ shape = SubResource("CircleShape2D_c5q70")
[node name="Timer" type="Timer" parent="."]
wait_time = 2.0
autostart = true
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(0, 17)
shape = SubResource("CapsuleShape2D_grwc8")
debug_color = Color(0.862152, 0.144907, 0.800391, 0.42)