добавил сигареты как бонус + анимации моделе врагов

This commit is contained in:
2026-07-24 01:57:55 +07:00
parent 0d03c06854
commit af01cf14e7
58 changed files with 178009 additions and 291 deletions
@@ -96,6 +96,58 @@ var coyoteJumpOn : bool = false
@onready var ceilingCheck : RayCast3D = $Raycasts/CeilingCheck
@onready var floorCheck : RayCast3D = $Raycasts/FloorCheck
# --- МЕХАНИКА БОНУСНОГО УСКОРЕНИЯ (АДРЕНАЛИН) ---
var is_speed_boosted: bool = false
func activate_speed_boost() -> void:
if is_speed_boosted: return # Защита от повторного накладывания эффекта
is_speed_boosted = true
print("[ИГРОК] Адреналин подействовал на ноги!")
# 1. Запоминаем твои текущие настройки скорости из инспектора
var old_walk: float = walkSpeed
var old_run: float = runSpeed
# 2. Принудительно разгоняем базовые переменные, которые стейт-машина читает каждый кадр!
walkSpeed = old_walk * 1.8
runSpeed = old_run * 1.8
# Сразу толкаем текущую скорость moveSpeed вперед, чтобы разгон пошел без задержки в один кадр
if "walkOrRun" in self and walkOrRun == "RunState":
moveSpeed = runSpeed
else:
moveSpeed = walkSpeed
# Визуальный эффект: плавно растягиваем камеру (FOV) на +20 градусов для сочности
if player_camera:
var tween = create_tween()
tween.tween_property(player_camera, "fov", normal_fov + 20.0, 0.2)
# 3. ВРЕМЯ ДЕЙСТВИЯ: Бонус работает ровно 5 секунд
await get_tree().create_timer(5.0).timeout
# 4. СБРОС: Возвращаем базовые скорости в норму
walkSpeed = old_walk
runSpeed = old_run
if "walkOrRun" in self and walkOrRun == "RunState":
moveSpeed = runSpeed
else:
moveSpeed = walkSpeed
# Плавно возвращаем камеру назад
if player_camera:
var tween = create_tween()
tween.tween_property(player_camera, "fov", normal_fov, 0.3)
is_speed_boosted = false
print("[ИГРОК] Действие адреналина закончилось. Скорость в норме.")
# НАЙДИ ЭТУ ФУНКЦИЮ ВНУТРИ СKРИПТА PlayerCharacter.gd И ЗАМЕНИ ЕЁ:
func _ready():
+20 -3
View File
@@ -36,8 +36,25 @@ func displayWeaponName(weaponName : String):
weaponNameLabelText.set_text(str(weaponName))
func displayTotalAmmoInMag(totalAmmoInMag : int, nbProjShotsAtSameTime : int):
totalAmmoInMagLabelText.set_text(str(totalAmmoInMag/nbProjShotsAtSameTime))
# --- ЗАЩИТА ОТ ДЕЛЕНИЯ НА НОЛЬ ДЛЯ БОНУСА SPEEDBOOSTER ---
# Если количество пулей/дробинок равно 0 или меньше, принудительно считаем его за 1
var divisor = nbProjShotsAtSameTime
if divisor <= 0:
divisor = 1
if totalAmmoInMagLabelText != null:
totalAmmoInMagLabelText.set_text(str(totalAmmoInMag / divisor))
func displayTotalAmmo(totalAmmo : int, nbProjShotsAtSameTime : int):
totalAmmoLabelText.set_text(str(totalAmmo/nbProjShotsAtSameTime))
# --- БРОНЕБОЙНАЯ ЗАЩИТА ОТ ДЕЛЕНИЯ НА НОЛЬ ДЛЯ БОНУСА SPEEDBOOSTER ---
# Если количество пулей/дробинок равно 0 или меньше, принудительно считаем его за 1
var divisor = nbProjShotsAtSameTime
if divisor <= 0:
divisor = 1
# Найди переменную текста общего запаса патронов в твоем HUDScript.
# Посмотри, как она точно называется у автора (например, totalAmmoLabelText или похоже),
# и замени строчку set_text на эту безопасную версию:
if totalAmmoLabelText != null:
totalAmmoLabelText.set_text(str(totalAmmo / divisor))