kick force

This commit is contained in:
2026-04-22 22:42:27 +03:00
parent 89a9e1a83e
commit 9066eecf1e
9 changed files with 32 additions and 14 deletions
+16 -3
View File
@@ -11,6 +11,7 @@ signal health_changed(current: int, maximum: int)
@export var max_health: int = 100
var health: int = max_health
var tier: int = 0
var kick_timer: float = 0.0
var invincible_timer: float = 0.0
var is_alive: bool = true
@@ -135,9 +136,9 @@ func _do_kick() -> void:
forward.y = 0.0
forward = forward.normalized() if forward.length() > 0.01 else Vector3(0.0, 0.0, -1.0)
var half_cos: float = cos(deg_to_rad(kick_angle * 0.5))
var enemies := get_tree().get_nodes_in_group("enemies") + get_tree().get_nodes_in_group("kickable")
var targets := get_tree().get_nodes_in_group("enemies") + get_tree().get_nodes_in_group("kickable")
var kicked_any := false
for e in enemies:
for e in targets:
if not is_instance_valid(e):
continue
var en := e as Node3D
@@ -149,7 +150,18 @@ func _do_kick() -> void:
if dist < 0.1 or dist > kick_range:
continue
if (diff / dist).dot(forward) >= half_cos:
en.call("receive_kick", diff / dist, kick_force)
var obj_tier: int = en.get("tier") if en.get("tier") != null else 0
var diff_tier := tier - obj_tier
var force: float
if diff_tier < 0:
force = 15.0
elif diff_tier == 0:
force = 50.0
elif diff_tier == 1:
force = 70.0
else:
force = 80.0
en.call("receive_kick", diff / dist, force)
kicked_any = true
if kicked_any:
_squish_effect()
@@ -218,6 +230,7 @@ func apply_upgrade(id: String) -> void:
emit_signal("health_changed", health, max_health)
func apply_upgrade_boots(speed_bonus: float, _tier: int) -> void:
tier += _tier
move_speed += speed_bonus
var tw := create_tween()
tw.tween_property(player_mat, "albedo_color", Color(1.0, 0.85, 0.2), 0.1)