Что это: Компонент использует DOTween для создания плавного эффекта тряски. Поддерживает тряску позиции, поворота или обоих одновременно. После завершения автоматически возвращает объект в исходное состояние.
Как использовать: см. разделы ниже.
CameraShake — это мощный компонент для создания эффекта "тряски" объекта, к которому он прикреплен. Использует DOTween для плавной и производительной анимации. Чаще всего используется для камеры, чтобы добавить динамики в моменты взрывов, ударов или других интенсивных событий в игре.
Улучшения в v5.2.21:
- Полностью переделан на DOTween для лучшей производительности
- Добавлена поддержка тряски позиции и/или поворота
- Множество настроек для кастомизации эффекта
- События для интеграции с другими системами
- Пространство имен:
Neo.Tools - Путь к файлу:
Assets/Neoxider/Scripts/Tools/Other/CameraShake.cs
Описание Компонент использует DOTween для создания плавного эффекта тряски. Поддерживает тряску позиции, поворота или обоих одновременно. После завершения автоматически возвращает объект в исходное состояние.
shakeType(ShakeType): Тип тряскиPosition— тряска только позицииRotation— тряска только поворотаBoth— тряска позиции и поворота одновременно
duration(float): Длительность тряски в секундах (минимум 0.01)strength(float): Сила (амплитуда) тряски (минимум 0)vibrato(int): Количество вибраций (1-50). Больше значение = больше вибрацийrandomness(float): Случайность тряски (0-180). 0 = без случайности, 180 = полная случайностьfadeOut(bool): Еслиtrue, тряска будет плавно затухать к концу
shakeX(bool): Тряска по оси XshakeY(bool): Тряска по оси YshakeZ(bool): Тряска по оси Z
rotateX(bool): Тряска поворота по оси X (pitch)rotateY(bool): Тряска поворота по оси Y (yaw)rotateZ(bool): Тряска поворота по оси Z (roll)
easeType(Ease): Тип easing для анимации (из DOTween)useUnscaledTime(bool): Еслиtrue, игнорируетTime.timeScalerelativeShake(bool): Еслиtrue, тряска относительно текущей позиции
OnShakeStart(UnityEvent): Вызывается при начале тряскиOnShakeComplete(UnityEvent): Вызывается при завершении тряскиOnShakeStop(UnityEvent): Вызывается при остановке тряски вручную
Запускает тряску с настройками по умолчанию из инспектора.
cameraShake.StartShake();Запускает тряску с кастомными параметрами.
cameraShake.StartShake(1.0f, 2.0f); // 1 секунда, сила 2Останавливает текущую тряску немедленно и возвращает объект в исходное состояние.
cameraShake.StopShake();Восстанавливает исходную позицию и поворот объекта.
cameraShake.ResetTransform();IsShaking(bool): Возвращаетtrue, если тряска активна
// В инспекторе:
// - shakeType = Position
// - duration = 0.5
// - strength = 1.0
// - shakeX = true, shakeY = true, shakeZ = false
// В коде:
cameraShake.StartShake();// В инспекторе:
// - shakeType = Both
// - rotateZ = true (roll эффект)
// - vibrato = 20 (больше вибраций)
cameraShake.StartShake(0.8f, 1.5f);// В инспекторе привяжите OnShakeComplete к нужному событию
// Или в коде:
cameraShake.OnShakeComplete.AddListener(() => {
Debug.Log("Тряска завершена!");
});// Если нужно остановить тряску досрочно:
if (cameraShake.IsShaking)
{
cameraShake.StopShake();
}- Для камеры: Используйте
shakeType = PositionсshakeX = true, shakeY = trueдля классического эффекта - Для интенсивных эффектов: Увеличьте
vibrato(15-30) иstrength(1.5-3.0) - Для плавного эффекта: Включите
fadeOut = trueи используйтеEase.OutQuadилиEase.OutCubic - Для эффекта "roll": Используйте
shakeType = RotationсrotateZ = true - Для комбинированного эффекта: Используйте
shakeType = Bothс настройкой позиции и поворота
- Компонент использует
DOShakePositionиDOShakeRotationиз DOTween - Автоматически сохраняет исходную позицию и поворот в
Awake() - Корректно очищает твины при уничтожении объекта
- Поддерживает множественные одновременные тряски (каждая создает свой твин)