using UnityEngine; namespace _Project.Scripts.PlayerUtils { public enum BodyClass { Spirit, Scout, Trooper, Juggernaut, Sniper } [CreateAssetMenu(menuName = "Player/Body Profile", fileName = "BodyProfile")] public class BodyProfile : ScriptableObject { public BodyClass bodyClass = BodyClass.Trooper; public string displayName = "Штурмовик"; public float maxHealth = 100f; [Header("Передвижение (PlayerMovement)")] public float moveSpeed = 6.5f; public float sprintSpeed = 9.5f; public float crouchSpeed = 3f; public bool canSlide = true; public float slideInitialSpeed = 15f; public float slideDuration = 0.85f; public float airAcceleration = 80f; public float jumpHeight = 1.35f; public float gravity = -25f; public float standingHeight = 2f; [Header("Камера и Звук (PlayerCamera & Sound)")] public float standingCameraY = 1.6f; public float crouchingCameraY = 0.8f; public float walkBobSpeed = 12f; public float walkBobAmount = 0.04f; public float slideTiltAngle = 4f; public float footstepPitch = 1f; [Header("Оружие и Снаряды (PlayerCombat)")] public bool canShoot = true; public bool isAutomatic = true; public float damage = 25f; public float fireRate = 0.12f; public float weaponRange = 100f; public int pelletsPerShot = 1; public float spreadAngle = 0f; public bool pierceTargets = false; public float recoilKick = 1.2f; [Header("Параметры летящего снаряда")] [Tooltip("Скорость полёта снаряда в м/с (чтобы от него можно было увернуться!)")] public float projectileSpeed = 30f; public float projectileSize = 0.22f; public Color projectileColor = new Color(1f, 0.6f, 0.1f, 1f); public static BodyProfile CreateDefault(BodyClass type) { var p = CreateInstance(); p.bodyClass = type; switch (type) { case BodyClass.Spirit: p.displayName = "ДУХ МЩЕНИЯ"; p.maxHealth = 25f; p.moveSpeed = 11f; p.sprintSpeed = 15f; p.crouchSpeed = 6f; p.canSlide = true; p.slideInitialSpeed = 22f; p.slideDuration = 1.1f; p.airAcceleration = 160f; p.jumpHeight = 1.8f; p.gravity = -18f; p.standingHeight = 1.6f; p.standingCameraY = 1.3f; p.walkBobAmount = 0.015f; p.canShoot = false; break; case BodyClass.Scout: p.displayName = "СКАУТ (Чистильщик)"; p.maxHealth = 70f; p.moveSpeed = 9f; p.sprintSpeed = 13f; p.crouchSpeed = 4.5f; p.canSlide = true; p.slideInitialSpeed = 20f; p.slideDuration = 1.15f; p.airAcceleration = 140f; p.jumpHeight = 1.65f; p.gravity = -24f; p.standingHeight = 1.8f; p.standingCameraY = 1.5f; p.walkBobSpeed = 15f; p.walkBobAmount = 0.05f; p.slideTiltAngle = 7f; p.footstepPitch = 1.2f; p.canShoot = true; p.isAutomatic = true; p.damage = 14f; p.fireRate = 0.08f; p.weaponRange = 45f; p.pelletsPerShot = 1; p.spreadAngle = 2.5f; p.recoilKick = 0.6f; p.projectileSpeed = 36f; // Жёлтые быстрые очереди p.projectileSize = 0.16f; p.projectileColor = new Color(1f, 0.9f, 0.2f, 1f); break; case BodyClass.Trooper: p.displayName = "ШТУРМОВИК СБ"; p.maxHealth = 120f; p.moveSpeed = 6.5f; p.sprintSpeed = 9.5f; p.crouchSpeed = 3f; p.canSlide = true; p.slideInitialSpeed = 15f; p.slideDuration = 0.85f; p.airAcceleration = 80f; p.jumpHeight = 1.35f; p.gravity = -25f; p.standingHeight = 2f; p.standingCameraY = 1.6f; p.walkBobSpeed = 12f; p.walkBobAmount = 0.04f; p.footstepPitch = 1f; p.canShoot = true; p.isAutomatic = true; p.damage = 25f; p.fireRate = 0.14f; p.weaponRange = 90f; p.pelletsPerShot = 1; p.spreadAngle = 1.2f; p.recoilKick = 1.1f; p.projectileSpeed = 28f; // Голубые плазменные сгустки средней скорости p.projectileSize = 0.22f; p.projectileColor = new Color(0.2f, 0.7f, 1f, 1f); break; case BodyClass.Juggernaut: p.displayName = "ДЖАГГЕРНАУТ (Танк)"; p.maxHealth = 280f; p.moveSpeed = 4.2f; p.sprintSpeed = 5.8f; p.crouchSpeed = 2f; p.canSlide = false; p.airAcceleration = 35f; p.jumpHeight = 0.85f; p.gravity = -35f; p.standingHeight = 2.4f; p.standingCameraY = 1.95f; p.crouchingCameraY = 1.2f; p.walkBobSpeed = 7f; p.walkBobAmount = 0.07f; p.footstepPitch = 0.65f; p.canShoot = true; p.isAutomatic = false; p.damage = 18f; p.fireRate = 0.85f; p.weaponRange = 35f; p.pelletsPerShot = 8; p.spreadAngle = 7f; p.recoilKick = 4.2f; p.projectileSpeed = 22f; // Крупная ярко-оранжевая картечь (отлично видно для уворота!) p.projectileSize = 0.25f; p.projectileColor = new Color(1f, 0.3f, 0.1f, 1f); break; case BodyClass.Sniper: p.displayName = "СНАЙПЕР-ФАНТОМ"; p.maxHealth = 85f; p.moveSpeed = 6.2f; p.sprintSpeed = 8.8f; p.crouchSpeed = 3.2f; p.canSlide = true; p.slideInitialSpeed = 14f; p.slideDuration = 0.8f; p.airAcceleration = 90f; p.jumpHeight = 1.45f; p.gravity = -20f; p.standingHeight = 2f; p.standingCameraY = 1.65f; p.walkBobSpeed = 10f; p.walkBobAmount = 0.015f; p.footstepPitch = 1.05f; p.canShoot = true; p.isAutomatic = false; p.damage = 110f; p.fireRate = 1.1f; p.weaponRange = 200f; p.pelletsPerShot = 1; p.spreadAngle = 0f; p.pierceTargets = true; p.recoilKick = 3.0f; p.projectileSpeed = 60f; // Фиолетовый скоростной заряд рейлгана p.projectileSize = 0.28f; p.projectileColor = new Color(0.85f, 0.2f, 1f, 1f); break; } return p; } } }