Небольшая перепись камеры
This commit is contained in:
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);
|
||||
}
|
||||
|
||||
// Обновление логики каждый кадр
|
||||
|
||||
Reference in new issue
Block a user