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

Курсор в Unity 3D

Shnuk Ученик (187), на голосовании 11 месяцев назад
После закрытия инвентаря курсор не остаётся на центре, но скрывается, как сделать чтобы он всегда оставался на центре даже при управлении мышкой?
Вот код
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;
}
}
}
}
Голосование за лучший ответ
*ГОНИМ ФУФЫКС* С ОБРЫВА!!! Оракул (63741) 1 год назад
Когда вы закрываете инвентарь в **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 Знаток (407) 1 год назад
Устанпвливайте курсор мыши после закрытия инвентаря методом
  • Mouse.current.WarpCursorPosition(Vector2 mousePosition)
Параметр функции Warpcursorposition нужно установить 2/2, т.е половина от половины.
Похожие вопросы