Небольшая перепись камеры

This commit is contained in:
ThomasCharester authored and Loša Ceviel committed 2025-10-28 22:10:45 +03:00
1 parent 981d081bed
commit 085429d5ca
13 files changed
+505 -77

No files matched your search

@@ -53,26 +53,24 @@ namespace Code.Gameplay.Character.Camera
// Текущий режим работы камеры
public CameraMode CurrentMode { get; private set; }
// Конфиг из DI
[Inject] private CameraConfig _config;
// Загрузка конфига для камеры
private void LoadConfig()
[Inject]
private void LoadConfig(CameraConfig config)
{
// Загрузка значений из конфига
_defaultDistance = _config.defaultDistance;
_minDistance = _config.minDistance;
_maxDistance = _config.maxDistance;
_distanceMovementSpeed = _config.distanceMovementSpeed;
_rotationSpeed = _config.rotationSpeed;
_rotationSharpness = _config.rotationSharpness;
_followSharpness = _config.followSharpness;
_minVerticalAngle = _config.minVerticalAngle;
_maxVerticalAngle = _config.maxVerticalAngle;
_defaultVerticalAngle = _config.defaultVerticalAngle;
CurrentMode = _config.defaultCameraMode;
_defaultFollowPosition = _config.defaultFollowPosition;
_defaultDistance = config.defaultDistance;
_minDistance = config.minDistance;
_maxDistance = config.maxDistance;
_distanceMovementSpeed = config.distanceMovementSpeed;
_rotationSpeed = config.rotationSpeed;
_rotationSharpness = config.rotationSharpness;
_followSharpness = config.followSharpness;
_minVerticalAngle = config.minVerticalAngle;
_maxVerticalAngle = config.maxVerticalAngle;
_defaultVerticalAngle = config.defaultVerticalAngle;
CurrentMode = config.defaultCameraMode;
_defaultFollowPosition = config.defaultFollowPosition;
// Валидация значений (на случай ручного редактирования конфига)
_defaultDistance = Mathf.Clamp(_defaultDistance, _minDistance, _maxDistance);
@@ -91,11 +89,6 @@ namespace Code.Gameplay.Character.Camera
_currentFollowPosition = _defaultFollowPosition;
}
// Инициализация камеры при создании
private void Awake()
{
LoadConfig();
}
// Установка цели для следования камеры
public void SetFollowTransform(Transform t)
@@ -15,7 +15,7 @@ namespace Code.Gameplay.Character.Core
*/
public class Character : MonoBehaviour
{
[FormerlySerializedAs("characterCamera")] [SerializeField] private CameraService cameraService; // Компонент камеры персонажа
[Inject] private CameraService _cameraService; // Компонент камеры персонажа
[SerializeField] private CustomCharacterController customCharacterController; // Компонент управления персонажем
[SerializeField] private Transform cameraFollowPoint; // Точка следования камеры (уровень глаз для FirstPerson)
@@ -28,8 +28,8 @@ namespace Code.Gameplay.Character.Core
private void Start()
{
// Настройка камеры для следования за точкой камеры
cameraService.SetFollowTransform(cameraFollowPoint);
cameraService.SetCameraMode(CameraMode.FirstPerson);
_cameraService.SetFollowTransform(cameraFollowPoint);
_cameraService.SetCameraMode(CameraMode.FirstPerson);
// Включение Gameplay мапа ввода
_inputService.EnableMap(ActionMappings.Gameplay);
@@ -43,7 +43,7 @@ namespace Code.Gameplay.Character.Core
var scrollInput = _inputService.ZoomInput;
// Передаем данные в камеру
cameraService.UpdateWithInput(Time.deltaTime, scrollInput,
_cameraService.UpdateWithInput(Time.deltaTime, scrollInput,
new Vector3(lookInput.x, lookInput.y, 0));
}
@@ -62,9 +62,9 @@ namespace Code.Gameplay.Character.Core
inputs.SlidePressed = _inputService.SlidePressed; // Слайд (Ctrl)
// Передаем информацию о камере для адаптивного поведения
inputs.CameraRotation = cameraService.transform.rotation;
inputs.CameraMode = cameraService.CurrentMode;
inputs.CameraPlanarDirection = cameraService.PlanarDirection;
inputs.CameraRotation = _cameraService.transform.rotation;
inputs.CameraMode = _cameraService.CurrentMode;
inputs.CameraPlanarDirection = _cameraService.PlanarDirection;
// Передаем ввод в контроллер персонажа
customCharacterController.SetInputs(ref inputs);
@@ -93,10 +93,10 @@ namespace Code.Gameplay.Character.Core
// Метод для переключения режимов камеры
private void ToggleCameraMode()
{
var currentMode = cameraService.CurrentMode;
var currentMode = _cameraService.CurrentMode;
var newMode = currentMode == CameraMode.FirstPerson ? CameraMode.ThirdPerson : CameraMode.FirstPerson;
cameraService.SetCameraMode(newMode);
_cameraService.SetCameraMode(newMode);
}
// Обновление логики каждый кадр