Alternative way to place tovers and enemies

This commit is contained in:
2025-04-30 21:29:28 +02:00
parent fee9cb99cf
commit 9859ddfe87
6 changed files with 110 additions and 9 deletions

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=134 format=4 uid="uid://bgme05i7taycc"]
[gd_scene load_steps=141 format=4 uid="uid://bgme05i7taycc"]
[ext_resource type="Texture2D" uid="uid://f1npbjsw71nk" path="res://Assets/Tiles/Fields/FieldsTile_01.png" id="1_fdpq6"]
[ext_resource type="Script" uid="uid://xo6vbicdva8d" path="res://Game/Maps/map_1.gd" id="1_rec5e"]
@ -461,6 +461,27 @@ _data = {
}
point_count = 15
[sub_resource type="RectangleShape2D" id="RectangleShape2D_rec5e"]
size = Vector2(864, 22)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_hg5c4"]
size = Vector2(861, 23)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_h3dak"]
size = Vector2(992, 24)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_6egdt"]
size = Vector2(1163, 13)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_n3ya7"]
size = Vector2(850.25, 5.375)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4tlg5"]
size = Vector2(1161, 9.5)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_sglle"]
size = Vector2(185, 319)
[node name="Map1" type="Node2D"]
script = ExtResource("1_rec5e")
@ -493,4 +514,43 @@ offset_top = 583.0
offset_right = 1152.0
offset_bottom = 647.0
[node name="TrapArea" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="TrapArea"]
position = Vector2(434, 163)
shape = SubResource("RectangleShape2D_rec5e")
debug_color = Color(0.798903, 0.0385002, 1, 0.42)
[node name="CollisionShape2D2" type="CollisionShape2D" parent="TrapArea"]
position = Vector2(497.5, 317.5)
shape = SubResource("RectangleShape2D_hg5c4")
debug_color = Color(0.798903, 0.0385002, 1, 0.42)
[node name="CollisionShape2D3" type="CollisionShape2D" parent="TrapArea"]
position = Vector2(498, 479)
shape = SubResource("RectangleShape2D_h3dak")
debug_color = Color(0.798903, 0.0385002, 1, 0.42)
[node name="TowerArea" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="TowerArea"]
position = Vector2(582, 58.5)
shape = SubResource("RectangleShape2D_6egdt")
[node name="CollisionShape2D2" type="CollisionShape2D" parent="TowerArea"]
position = Vector2(416, 237)
shape = SubResource("RectangleShape2D_n3ya7")
[node name="CollisionShape2D3" type="CollisionShape2D" parent="TowerArea"]
position = Vector2(527.125, 391.313)
shape = SubResource("RectangleShape2D_n3ya7")
[node name="CollisionShape2D4" type="CollisionShape2D" parent="TowerArea"]
position = Vector2(579, 559)
shape = SubResource("RectangleShape2D_4tlg5")
[node name="CollisionShape2D5" type="CollisionShape2D" parent="TowerArea"]
position = Vector2(1061.5, 285.5)
shape = SubResource("RectangleShape2D_sglle")
[connection signal="timeout" from="Timer" to="." method="_on_timer_timeout"]

View File

@ -25,12 +25,12 @@ func _process(delta: float) -> void:
if follower:
position = get_viewport().get_mouse_position()
if not name.contains("MortarTower"):
if get_node("Area2D").get_overlapping_bodies().size() > 1:
if get_node("Area2D").get_overlapping_bodies().size() > 1 or self.get_node("CharacterBody2D") not in get_parent().get_node("TowerArea").get_overlapping_bodies():
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:
if get_node("Area2D").get_overlapping_bodies().size() > 1 or self.get_node("CharacterBody2D") not in get_parent().get_node("TowerArea").get_overlapping_bodies():
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)
@ -74,7 +74,7 @@ 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():
if get_node("Area2D").get_overlapping_bodies().size() <= 1:
if get_node("Area2D").get_overlapping_bodies().size() <= 1 and self.get_node("CharacterBody2D") in get_parent().get_node("TowerArea").get_overlapping_bodies():
follower = false
func choose_target(body : Node2D) -> void:

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=9 format=3 uid="uid://ctbmgsp8dfel3"]
[gd_scene load_steps=10 format=3 uid="uid://ctbmgsp8dfel3"]
[ext_resource type="Script" uid="uid://3gn70ilm20tw" path="res://Game/Traps/traps.gd" id="1_6fgim"]
[ext_resource type="Texture2D" uid="uid://dn22pudsmyrrg" path="res://Assets/Traps/Mine/49.png" id="2_6m2fs"]
@ -36,6 +36,8 @@ animations = [{
[sub_resource type="CircleShape2D" id="CircleShape2D_uiyu1"]
[sub_resource type="CircleShape2D" id="CircleShape2D_57sxm"]
[node name="Mine" type="Node2D"]
script = ExtResource("1_6fgim")
@ -56,3 +58,9 @@ autoplay = "idle"
[node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D/Area2D"]
scale = Vector2(6, 6)
shape = SubResource("CircleShape2D_uiyu1")
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource("CircleShape2D_57sxm")
debug_color = Color(0.811824, 0.00210331, 0.983083, 0.42)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=5 format=3 uid="uid://pqy8rrvjthgl"]
[gd_scene load_steps=6 format=3 uid="uid://pqy8rrvjthgl"]
[ext_resource type="Texture2D" uid="uid://4bah0c8unbl8" path="res://Assets/Traps/Sticks/Tile2_59.png" id="1_dnq4b"]
[ext_resource type="Script" uid="uid://3gn70ilm20tw" path="res://Game/Traps/traps.gd" id="1_metvu"]
@ -7,6 +7,9 @@
[sub_resource type="CircleShape2D" id="CircleShape2D_m1bdk"]
radius = 32.0
[sub_resource type="RectangleShape2D" id="RectangleShape2D_metvu"]
size = Vector2(49.5, 18)
[node name="StickTrap" type="Node2D"]
script = ExtResource("1_metvu")
@ -28,3 +31,10 @@ offset = Vector2(-10, 0)
position = Vector2(5, 0)
scale = Vector2(0.8, 0.8)
shape = SubResource("CircleShape2D_m1bdk")
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(4.25, 11)
shape = SubResource("RectangleShape2D_metvu")
debug_color = Color(0.811824, 0.00210331, 0.983083, 0.42)

View File

@ -16,6 +16,18 @@ func _ready() -> void:
func _process(delta: float) -> void:
if follower:
position = get_viewport().get_mouse_position()
if name.contains("Mine"):
if get_node("Area2D").get_overlapping_bodies().size() > 1 or self.get_node("CharacterBody2D") not in get_parent().get_node("TrapArea").get_overlapping_bodies():
get_node("CharacterBody2D/AnimatedSprite2D").modulate = Color(255, 0, 0, 0.3)
else:
get_node("CharacterBody2D/AnimatedSprite2D").modulate = Color(1, 1, 1, 1)
if name.contains("StickTrap") or name.contains("Wall"):
if get_node("Area2D").get_overlapping_bodies().size() > 1 or self.get_node("CharacterBody2D") not in get_parent().get_node("TrapArea").get_overlapping_bodies():
get_node("CharacterBody2D/Sprite2D").modulate = Color(255, 0, 0, 0.3)
get_node("CharacterBody2D/Sprite2D2").modulate = Color(255, 0, 0, 0.3)
else:
get_node("CharacterBody2D/Sprite2D").modulate = Color(1, 1, 1, 1)
get_node("CharacterBody2D/Sprite2D2").modulate = Color(1, 1, 1, 1)
func get_if_moving_state():
return follower
@ -23,7 +35,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 and self.get_node("CharacterBody2D") in get_parent().get_node("TrapArea").get_overlapping_bodies():
follower = false
func Explode_Mine() -> void:
get_node("CharacterBody2D/AnimatedSprite2D").scale = Vector2(1,1)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=8 format=3 uid="uid://cc5j50rtwlfld"]
[gd_scene load_steps=9 format=3 uid="uid://cc5j50rtwlfld"]
[ext_resource type="Script" uid="uid://3gn70ilm20tw" path="res://Game/Traps/traps.gd" id="1_3ht3o"]
[ext_resource type="Texture2D" uid="uid://ri5c5u8gbjde" path="res://Assets/Traps/Wall/Tile2_49.png" id="1_y07rg"]
@ -24,6 +24,9 @@ corner_radius_bottom_left = 20
[sub_resource type="RectangleShape2D" id="RectangleShape2D_3ht3o"]
size = Vector2(38, 59)
[sub_resource type="RectangleShape2D" id="RectangleShape2D_xk2lx"]
size = Vector2(20, 59)
[node name="Wall" type="Node2D"]
script = ExtResource("1_3ht3o")
@ -40,7 +43,7 @@ position = Vector2(2.38419e-07, -0.999999)
scale = Vector2(0.8, 0.8)
shape = SubResource("RectangleShape2D_bxxpj")
[node name="Tile257" type="Sprite2D" parent="CharacterBody2D"]
[node name="Sprite2D" type="Sprite2D" parent="CharacterBody2D"]
position = Vector2(3, 13)
scale = Vector2(1, 0.923)
texture = ExtResource("2_3ht3o")
@ -65,6 +68,13 @@ shape = SubResource("RectangleShape2D_3ht3o")
[node name="Timer" type="Timer" parent="CharacterBody2D"]
wait_time = 0.3
[node name="Area2D" type="Area2D" parent="."]
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
position = Vector2(0, -1.5)
shape = SubResource("RectangleShape2D_xk2lx")
debug_color = Color(0.811824, 0.00210331, 0.983083, 0.42)
[connection signal="body_shape_entered" from="CharacterBody2D/Area2D" to="." method="_on_area_2d_body_shape_entered"]
[connection signal="body_shape_exited" from="CharacterBody2D/Area2D" to="." method="_on_area_2d_body_shape_exited"]
[connection signal="timeout" from="CharacterBody2D/Timer" to="." method="_on_timer_timeout"]