96 lines
2.5 KiB
C#
96 lines
2.5 KiB
C#
using Lights;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
public class Player : MonoBehaviour
|
|
{
|
|
//[SerializeField] TextMeshProUGUI angleTest;
|
|
|
|
[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.Damaged += HealthComponent_Damaged;
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
if(HealthComponent != null)
|
|
HealthComponent.Damaged -= HealthComponent_Damaged;
|
|
}
|
|
|
|
private void HealthComponent_Damaged(float obj)
|
|
{
|
|
LightSystem.Ef_Alarm();
|
|
}
|
|
|
|
void Update()
|
|
{
|
|
//тест нормализации
|
|
//float angle = CamerasManager.VR_Camera.transform.localRotation.eulerAngles.y;
|
|
//angle = YawOnlyTracker.NormalizeAngle(angle);
|
|
//angleTest.text = angle.ToString();
|
|
|
|
|
|
//Тестовый выход
|
|
if (Input.GetKeyDown(KeyCode.T))
|
|
{
|
|
G.Terminator.TerminateGame(EndGameConditionChecker.EndgameReason.Timeout);
|
|
}
|
|
|
|
|
|
DiveSystem.Dive = In.GetButton(DiveSignal);
|
|
|
|
Debug.Log(In.GetButtonDown(ShootSignal));
|
|
|
|
if (In.GetButtonDown(ShootSignal))
|
|
{
|
|
Debug.Log("Shoot");
|
|
Shoot();
|
|
}
|
|
if (In.GetButtonDown(ChangeWeapon))
|
|
{
|
|
NextWeapon();
|
|
}
|
|
|
|
|
|
}
|
|
|
|
private void NextWeapon()
|
|
{
|
|
print("Смена оружия");
|
|
weaponIndex = (weaponIndex + 1) % weaponsContainer.Count;
|
|
G.WeaponModel.WeaponChangeHandler(ActiveWeapon);
|
|
}
|
|
|
|
private void Shoot()
|
|
{
|
|
ActiveWeapon.Shoot();
|
|
}
|
|
|
|
|
|
} |