refactor: even better hitboxes
This commit is contained in:
parent
ad5d9b8d82
commit
ce0aedd951
10 changed files with 30 additions and 37 deletions
|
|
@ -20,7 +20,7 @@ metadata/_custom_type_script = "uid://ddgbr0n8kic3y"
|
|||
viewport_path = NodePath("Enemy/HealthBar3D/SubViewport")
|
||||
|
||||
[sub_resource type="ConvexPolygonShape3D" id="ConvexPolygonShape3D_tviqb"]
|
||||
points = PackedVector3Array(0, 0, 0, -1.5, 1, -3, 1.5, 1, -3, 1.5, 0, -3, -1.5, 0, -3)
|
||||
points = PackedVector3Array(0, 0, 0, -1.5, 1, -2.5, 1.5, 1, -2.5, 1.5, 0, -2.5, -1.5, 0, -2.5)
|
||||
|
||||
[node name="PathFollow3D" instance=ExtResource("1_ohyx6")]
|
||||
|
||||
|
|
@ -42,9 +42,12 @@ transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0.34, 0)
|
|||
texture = SubResource("ViewportTexture_mw235")
|
||||
|
||||
[node name="TowerAttackRange" type="Area3D" parent="Enemy" index="4"]
|
||||
collision_layer = 4
|
||||
collision_layer = 0
|
||||
collision_mask = 4
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Enemy/TowerAttackRange" index="0"]
|
||||
shape = SubResource("ConvexPolygonShape3D_tviqb")
|
||||
debug_color = Color(0.419608, 0, 0.584314, 0.419608)
|
||||
|
||||
[connection signal="body_entered" from="Enemy/TowerAttackRange" to="Enemy" method="onAttackRangeBodyEntered"]
|
||||
[connection signal="body_exited" from="Enemy/TowerAttackRange" to="Enemy" method="onAttackRangeBodyExited"]
|
||||
|
|
|
|||
|
|
@ -5,15 +5,9 @@ class_name Boss
|
|||
@export var projectile : ProjectileResource
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
super._ready()
|
||||
$TowerAttackRange.body_entered.connect(onAttackRangeBodyEntered)
|
||||
$TowerAttackRange.body_exited.connect(onAttackRangeBodyExited)
|
||||
|
||||
|
||||
func attack() -> bool:
|
||||
# already attacked TheCube
|
||||
if super.attack():
|
||||
# already attacked TheCube
|
||||
return true
|
||||
|
||||
var towerTargets : Array[Node3D] = targets.filter(func(b): return b is Tower)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ radius = 0.6
|
|||
[node name="Enemy" type="CharacterBody3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.25, 0)
|
||||
collision_layer = 2
|
||||
collision_mask = 2
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_orwns")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Enemy"]
|
||||
|
|
@ -69,8 +69,8 @@ show_percentage = false
|
|||
metadata/_custom_type_script = "uid://blnmjxmusrsa7"
|
||||
|
||||
[node name="CubeAttackRange" type="Area3D" parent="Enemy"]
|
||||
collision_layer = 4
|
||||
collision_mask = 4
|
||||
collision_layer = 0
|
||||
collision_mask = 8
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Enemy/CubeAttackRange"]
|
||||
shape = SubResource("SphereShape3D_cmo2f")
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@
|
|||
size = Vector3(1.2, 1, 1.2)
|
||||
|
||||
[node name="TheCube" type="StaticBody3D"]
|
||||
collision_layer = 4
|
||||
collision_mask = 4
|
||||
collision_layer = 8
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_wrmut")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
|
|
|
|||
|
|
@ -4,3 +4,7 @@ class_name GameTile
|
|||
enum TYPE { PATH, TOWER, SCENE }
|
||||
|
||||
@export var type : TYPE
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
$CollisionShape3D.debug_color = Color.TRANSPARENT
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ billboard = 2
|
|||
texture = ExtResource("2_08w86")
|
||||
|
||||
[node name="HitBox" type="Area3D" parent="."]
|
||||
collision_layer = 6
|
||||
collision_layer = 0
|
||||
collision_mask = 6
|
||||
|
||||
[node name="ProjectileSize" type="CollisionShape3D" parent="HitBox"]
|
||||
|
|
@ -29,7 +29,7 @@ shape = SubResource("SphereShape3D_dsts2")
|
|||
debug_color = Color(0.926858, 0.237749, 0.335021, 0.42)
|
||||
|
||||
[node name="DamageArea" type="Area3D" parent="."]
|
||||
collision_layer = 6
|
||||
collision_layer = 0
|
||||
collision_mask = 6
|
||||
|
||||
[node name="ProjectileArea" type="CollisionShape3D" parent="DamageArea"]
|
||||
|
|
|
|||
|
|
@ -75,8 +75,6 @@ func _ready() -> void:
|
|||
if not Engine.is_editor_hint():
|
||||
energy = max_energy
|
||||
energyRecoveryCooldown.timeout.connect(func(): energy += energy_regen + Game.energy_boost)
|
||||
collision_layer = 0
|
||||
collision_mask = 0
|
||||
$PriceTag.text = str(price) + " €"
|
||||
$Range/Range.shape = towerRange
|
||||
|
||||
|
|
@ -113,19 +111,11 @@ func shoot() -> void:
|
|||
|
||||
|
||||
func resting() -> void:
|
||||
visible = false
|
||||
collision_layer = 0
|
||||
collision_mask = 0
|
||||
toggleConnection(false)
|
||||
energyRecoveryCooldown.start()
|
||||
|
||||
|
||||
func in_action() -> void:
|
||||
visible = true
|
||||
collision_layer = 0b100
|
||||
collision_mask = 0b100
|
||||
toggleConnection(true)
|
||||
energyRecoveryCooldown.stop()
|
||||
|
||||
|
||||
func choose_target() -> Enemy:
|
||||
|
|
@ -161,13 +151,15 @@ func onBodyExited(body: Node3D) -> void:
|
|||
|
||||
|
||||
func toggleConnection(activate : bool) -> void:
|
||||
visible = activate
|
||||
$Range.monitoring = activate
|
||||
$Range.monitorable = activate
|
||||
$CollisionShape3D.disabled = not activate
|
||||
if activate:
|
||||
$Range.monitorable = true
|
||||
$Range.monitoring = true
|
||||
energyRecoveryCooldown.stop()
|
||||
else:
|
||||
$Range.monitorable = false
|
||||
$Range.monitoring = false
|
||||
availableTargets.clear()
|
||||
energyRecoveryCooldown.start()
|
||||
|
||||
|
||||
func disable(duration : float) -> void:
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ metadata/_custom_type_script = "uid://blnmjxmusrsa7"
|
|||
|
||||
[node name="Tower" type="StaticBody3D"]
|
||||
collision_layer = 4
|
||||
collision_mask = 4
|
||||
collision_mask = 0
|
||||
script = ExtResource("1_egfuc")
|
||||
icone = ExtResource("2_mnaic")
|
||||
bio = "Aime se promener dans l'herbe et manger des framboises. Sa petite bouille la rend trop mignonne."
|
||||
|
|
@ -34,10 +34,11 @@ bio = "Aime se promener dans l'herbe et manger des framboises. Sa petite bouille
|
|||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0)
|
||||
shape = SubResource("CapsuleShape3D_ynmsb")
|
||||
disabled = true
|
||||
|
||||
[node name="Range" type="Area3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.4, 0)
|
||||
collision_layer = 2
|
||||
collision_layer = 0
|
||||
collision_mask = 2
|
||||
|
||||
[node name="Range" type="CollisionShape3D" parent="Range"]
|
||||
|
|
|
|||
|
|
@ -54,7 +54,6 @@ offset_left = -90.0
|
|||
offset_right = 90.0
|
||||
offset_bottom = 50.0
|
||||
grow_horizontal = 2
|
||||
theme_override_colors/font_color = Color(0.2, 0.2, 0.2, 1)
|
||||
theme_override_font_sizes/font_size = 40
|
||||
|
||||
[node name="TowerButtonPanel" type="HBoxContainer" parent="."]
|
||||
|
|
|
|||
|
|
@ -109,7 +109,7 @@ test={
|
|||
|
||||
[layer_names]
|
||||
|
||||
3d_physics/layer_1="floor"
|
||||
3d_physics/layer_2="tower"
|
||||
3d_physics/layer_3="baddy"
|
||||
3d_physics/layer_4="cube"
|
||||
3d_physics/layer_1="tiles"
|
||||
3d_physics/layer_2="enemy"
|
||||
3d_physics/layer_3="tower"
|
||||
3d_physics/layer_4="TheCube"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue