78 lines
2.1 KiB
C#
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();
|
|
}
|
|
|
|
|
|
} |