Для создания тряски курсора мыши в Unity используется класс Cursor
и его метод SetCursor
. Этот метод позволяет установить пользовательский курсор в игре. Чтобы сделать тряску, нам нужно изменить положение курсора в случайных направлениях с определенной частотой.
Вот пример кода на C#, который реализует тряску курсора мыши в Unity:
using UnityEngine; public class MouseShake : MonoBehaviour { public float shakeFrequency = 10f; public float shakeAmount = 10f; private float shakeTimer; private Vector3 originalCursorPosition; private void Start() { originalCursorPosition = Input.mousePosition; } private void Update() { if (shakeTimer > 0) { shakeTimer -= Time.deltaTime; float offsetX = Random.Range(-shakeAmount, shakeAmount); float offsetY = Random.Range(-shakeAmount, shakeAmount); Vector3 cursorPosition = originalCursorPosition + new Vector3(offsetX, offsetY, 0f); Cursor.visible = true; Cursor.SetCursor(null, cursorPosition, CursorMode.Auto); } else { Cursor.visible = false; } } public void ShakeMouse() { shakeTimer = shakeFrequency; } }
Объяснение кода:
1. Мы создаем публичные переменные shakeFrequency
и shakeAmount
, чтобы можно было настроить частоту и силу тряски в редакторе Unity.
2. В Start
методе мы сохраняем исходное положение курсора мыши.
3. В Update
методе мы проверяем, если shakeTimer
больше 0, то мы выполняем тряску курсора.
4. Внутри условия тряски мы генерируем случайные значения для смещения курсора в диапазоне от -shakeAmount
до shakeAmount
.
5. Затем мы создаем новый Vector3
смещение на основе сгенерированных значений.
6. Мы устанавливаем новое положение курсора, используя Cursor.SetCursor
, где первый параметр - это текстура курсора (в данном случае мы не используем текстуру, поэтому передаем null
), второй параметр - новое положение курсора в пикселях и третий параметр - режим курсора.
7. Если shakeTimer
меньше или равен 0, то мы делаем курсор невидимым, чтобы он не отображался после окончания тряски.
8. Мы также объявляем публичный метод ShakeMouse
, который будет вызываться в другом месте для запуска тряски. Этот метод устанавливает shakeTimer
значение shakeFrequency
, чтобы начать тряску в следующем кадре.
Чтобы использовать этот код, надо прикрепить скрипт к объекту в сцене Unity. Затем вы можете вызвать метод ShakeMouse
событием или из другого скрипта для запуска тряски курсора мыши в ваших игровых событиях или условиях.