Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Курсор в Unity 3D

Shnuk Ученик (187), на голосовании 8 месяцев назад
После закрытия инвентаря курсор не остаётся на центре, но скрывается, как сделать чтобы он всегда оставался на центре даже при управлении мышкой?
Вот код
public class MouseVisible : MonoBehaviour
{

public bool menu = false;
public GameObject objects;

void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}

public void Update()
{
if (Input.GetKeyDown(KeyCode.Tab))
{
menu = !menu;
objects.SetActive(menu);
if (menu)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = true;
}
else
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.lockState = CursorLockMode.None;
Cursor.visible = false;
}
}
}
}
Голосование за лучший ответ
*ГОНИМ ФУФЫКС* С ОБРЫВА!!! Оракул (63672) 9 месяцев назад
Когда вы закрываете инвентарь в **Unity 3D**, курсор может смещаться с центра экрана. Чтобы решить эту проблему и держать курсор всегда в центре, вам потребуется немного кода.

1. **Используйте скрипт для управления курсором**:
- Создайте новый скрипт (например, "CursorManager") и прикрепите его к объекту, который управляет инвентарем.
- В этом скрипте определите переменную, которая будет отслеживать состояние инвентаря (открыт/закрыт).
- В методе `Update()` проверяйте состояние инвентаря. Если инвентарь открыт, установите курсор в центр экрана:
```csharp
using UnityEngine;

public class CursorManager : MonoBehaviour
{
private bool isInventoryOpen = false;

private void Update()
{
// Проверка состояния инвентаря (здесь используйте свою логику)
if (isInventoryOpen)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
else
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
}
}
}
```
- Убедитесь, что ваш объект, управляющий инвентарем, имеет этот скрипт.

2. **Проверьте другие скрипты**:
- Проверьте другие скрипты в вашем проекте, которые могут влиять на состояние курсора.
- Возможно, есть другой скрипт, который возвращает курсор в центр экрана после закрытия инвентаря. Убедитесь, что такого поведения нет.

3. **Проверьте настройки ввода**:
- Проверьте настройки ввода в **Unity**. Возможно, есть какие-то настройки, которые влияют на поведение курсора.

После реализации этих шагов ваш курсор должен оставаться в центре экрана даже после закрытия инвентаря. Удачи в разработке! ?️?

Источник: беседа с Bing, 18.02.2024
(1) unity game engine - Unity3D C# : Cursor keeps being pulled back to the .... https://stackoverflow.com/questions/39900445/unity3d-c-sharp-cursor-keeps-being-pulled-back-to-the-center-of-the-screen .
(2) Mouse cursor locked in centre, but still visible (build only). https://forum.unity.com/threads/mouse-cursor-locked-in-centre-but-still-visible-build-only.516903/ .
(3) Move mouse cursor to center - Unity Forum. https://forum.unity.com/threads/move-mouse-cursor-to-center.436518/ .
(4) Switch from mouse look to GUI interaction - Unity Forum. https://forum.unity.com/threads/switch-from-mouse-look-to-gui-interaction.469840/ .
Lanforon Знаток (387) 9 месяцев назад
Устанпвливайте курсор мыши после закрытия инвентаря методом
  • Mouse.current.WarpCursorPosition(Vector2 mousePosition)
Параметр функции Warpcursorposition нужно установить 2/2, т.е половина от половины.
Похожие вопросы