добавил сигареты как бонус + анимации моделе врагов
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
[ext_resource type="Resource" uid="uid://bgb8htvjywlwm" path="res://addons/Weapons/Resources/ShotgunWeaponResources.tres" id="17_bj161"]
|
||||
[ext_resource type="Resource" uid="uid://b63lj0c7tash0" path="res://addons/Weapons/Resources/SniperRifleWeaponResources.tres" id="18_bky4p"]
|
||||
[ext_resource type="Resource" uid="uid://dn71dyben68oe" path="res://addons/Weapons/Resources/RocketLauncherWeaponResources.tres" id="19_m6yr4"]
|
||||
[ext_resource type="AudioStream" uid="uid://wmb6rac0i1fk" path="res://Sound/effect/sigaret.mp3" id="20_cl8pt"]
|
||||
[ext_resource type="Script" uid="uid://bcka80usfl4am" path="res://addons/Weapons/Scripts/WeaponSlotScript.gd" id="24_tyw5b"]
|
||||
[ext_resource type="Material" uid="uid://f3f1s20quvcb" path="res://addons/PlayerCharacter/Materials/PlayerCharacterMaterial.tres" id="25_8ryj3"]
|
||||
[ext_resource type="Shader" uid="uid://c3h1lw7pkowvb" path="res://addons/texture_custom/ps1_camera.gdshader" id="25_o0oj7"]
|
||||
@@ -47,6 +48,21 @@ point_count = 2
|
||||
metadata/_snap_enabled = true
|
||||
metadata/_snap_count = 4
|
||||
|
||||
[sub_resource type="Resource" id="Resource_m43f3"]
|
||||
script = ExtResource("14_ca0qr")
|
||||
weaponName = "SpeedBooster"
|
||||
weaponId = 6
|
||||
shootSound = ExtResource("20_cl8pt")
|
||||
totalAmmoInMag = 1
|
||||
totalAmmoInMagRef = 3
|
||||
hasToReload = false
|
||||
autoReload = false
|
||||
bobFreq = 0.008
|
||||
bobAmount = 0.018
|
||||
bobSpeed = 10.0
|
||||
onIdleBobFreqDivider = 2.0
|
||||
metadata/_custom_type_script = "uid://bnhfyt5sl8jcd"
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o0oj7"]
|
||||
albedo_texture = ExtResource("32_1lhsp")
|
||||
|
||||
@@ -312,6 +328,8 @@ _surfaces = [{
|
||||
blend_shape_mode = 0
|
||||
shadow_mesh = SubResource("ArrayMesh_a7y7w")
|
||||
|
||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_cl8pt"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_vs6b3"]
|
||||
resource_name = "EquipAnimAssaultRifle"
|
||||
length = 0.2
|
||||
@@ -725,7 +743,7 @@ far = 1000.0
|
||||
[node name="WeaponManager" type="Node3D" parent="CameraHolder/CameraRecoilHolder/Camera" unique_id=9254674 node_paths=PackedStringArray("startWeapons")]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("13_834nb")
|
||||
weaponResources = Array[ExtResource("14_ca0qr")]([ExtResource("15_1lhsp"), ExtResource("16_tyw5b"), ExtResource("17_bj161"), ExtResource("18_bky4p"), ExtResource("19_m6yr4")])
|
||||
weaponResources = Array[ExtResource("14_ca0qr")]([ExtResource("15_1lhsp"), ExtResource("16_tyw5b"), ExtResource("17_bj161"), ExtResource("18_bky4p"), ExtResource("19_m6yr4"), SubResource("Resource_m43f3")])
|
||||
startWeapons = [NodePath("WeaponContainer/Pistol")]
|
||||
shoot_action = "shoot"
|
||||
reload_action = "reload"
|
||||
@@ -862,6 +880,20 @@ transform = Transform3D(55, 1.49078e-19, 3.18323e-12, 0, 55, -2.40412e-06, -4.09
|
||||
material_override = SubResource("StandardMaterial3D_6w1kq")
|
||||
mesh = SubResource("ArrayMesh_v8aw4")
|
||||
|
||||
[node name="Sigaret" type="Node3D" parent="CameraHolder/CameraRecoilHolder/Camera/WeaponManager/WeaponContainer" unique_id=890485738 node_paths=PackedStringArray("model", "attackPoint", "muzzleFlashSpawner")]
|
||||
script = ExtResource("24_tyw5b")
|
||||
model = NodePath(".")
|
||||
weaponId = 6
|
||||
attackPoint = NodePath("PistolAttackPoint")
|
||||
muzzleFlashSpawner = NodePath("PistolAttackPoint")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="CameraHolder/CameraRecoilHolder/Camera/WeaponManager/WeaponContainer/Sigaret" unique_id=1743469870]
|
||||
transform = Transform3D(0.04579172, 0.08881826, 0.017072301, 0.028749596, -0.14146772, -0.027192373, 3.6029846e-11, 0.25018898, -0.021436498, 0.12508726, -0.16887617, -0.6385742)
|
||||
mesh = SubResource("CapsuleMesh_cl8pt")
|
||||
|
||||
[node name="PistolAttackPoint" type="Marker3D" parent="CameraHolder/CameraRecoilHolder/Camera/WeaponManager/WeaponContainer/Sigaret" unique_id=504659522]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.78936e-08, 0.154984, 0.541926)
|
||||
|
||||
[node name="ShootManager" type="Node3D" parent="CameraHolder/CameraRecoilHolder/Camera/WeaponManager" unique_id=294744261]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("96_j45p8")
|
||||
|
||||
@@ -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():
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user