sega 7189b03509 Проработка сыстемы ныряния
- стекающая вода при всплытии
-пузыри под водой
-кулдаун на погружение
2026-05-15 14:06:38 +03:00

78 lines
2.1 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
[Header("Управление")]
[SerializeField] private InSignal DiveSignal;
[SerializeField] private InSignal ShootSignal;
[SerializeField] private InSignal ChangeWeapon;
[Header("Оружие")]
public List<Weapon> weaponsContainer;
private int weaponIndex = 0;
public Weapon ActiveWeapon => weaponsContainer[weaponIndex];
[Header("Система ныряния")]
public PlayerDiveSystem DiveSystem;
[Header("Здоровье")]
public Health HealthComponent;
[SerializeField] private List<Hitbox> hitboxes;
[SerializeField] private float maxHp = 500; //вариант из настроек инициализировать
[Header("Прицеливание врагов")]
[Tooltip("Точка в которую будут целиться враги")] public Transform EnemiesTarget;
private void Awake()
{
foreach (var hitbox in hitboxes)
hitbox.Initialize(gameObject);
HealthComponent.Initialize(maxHp, hitboxes);
HealthComponent.HealthChanged += displayHealthChange;
}
void displayHealthChange(float health)
{
Debug.Log($"Здоровье игрока: {health}");
}
void Update()
{
//Тестовый выход
if (Input.GetKeyDown(KeyCode.T))
{
G.Terminator.TerminateGame(EndGameConditionChecker.EndgameReason.Timeout);
}
if (In.GetButtonDown(DiveSignal)) DiveSystem.Dive = true;
if (In.GetButtonUp(DiveSignal)) DiveSystem.Dive = false;
if (In.GetButtonDown(ShootSignal))
{
Shoot();
}
if (In.GetButtonDown(ChangeWeapon))
{
NextWeapon();
}
}
private void NextWeapon()
{
print("Смена оружия");
weaponIndex = (weaponIndex + 1) % weaponsContainer.Count;
G.WeaponModel.WeaponChangeHandler(ActiveWeapon);
}
private void Shoot()
{
ActiveWeapon.Shoot();
}
}