Для создания тряски курсора мыши в 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; } }
Объяснение кода:
- Мы создаем публичные переменные
shakeFrequency
иshakeAmount
, чтобы можно было настроить частоту и силу тряски в редакторе Unity. - В
Start
методе мы сохраняем исходное положение курсора мыши. - В
Update
методе мы проверяем, еслиshakeTimer
больше 0, то мы выполняем тряску курсора. - Внутри условия тряски мы генерируем случайные значения для смещения курсора в диапазоне от
-shakeAmount
доshakeAmount
. - Затем мы создаем новый
Vector3
смещение на основе сгенерированных значений. - Мы устанавливаем новое положение курсора, используя
Cursor.SetCursor
, где первый параметр - это текстура курсора (в данном случае мы не используем текстуру, поэтому передаемnull
), второй параметр - новое положение курсора в пикселях и третий параметр - режим курсора. - Если
shakeTimer
меньше или равен 0, то мы делаем курсор невидимым, чтобы он не отображался после окончания тряски. - Мы также объявляем публичный метод
ShakeMouse
, который будет вызываться в другом месте для запуска тряски. Этот метод устанавливаетshakeTimer
значениеshakeFrequency
, чтобы начать тряску в следующем кадре.
Чтобы использовать этот код, надо прикрепить скрипт к объекту в сцене Unity. Затем вы можете вызвать метод ShakeMouse
событием или из другого скрипта для запуска тряски курсора мыши в ваших игровых событиях или условиях.