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

Посмотри что тут не так хочу что бы при нажатии на клавишу f появлялся курсор

Захар Богатырев Ученик (49), на голосовании 3 недели назад
Посмотри что тут не так, хочу что бы при нажатии на клавишу f появлялся курсор а появляются только 2 кнопки слева сверху а при нажатии на f курсор не появляется что делать

using UnityEngine;

public class CursorLockExample : MonoBehaviour
{
void Start()
{
//Press the space bar to apply no locking to the Cursor
if (Input.GetKey(KeyCode.F))
Cursor.lockState = CursorLockMode.None;
}

void OnGUI()
{
//Press this button to lock the Cursor
if (GUI.Button(new Rect(0, 0, 100, 50), "Lock Cursor"))
{
Cursor.lockState = CursorLockMode.Locked;
}

//Press this button to confine the Cursor within the screen
if (GUI.Button(new Rect(125, 0, 100, 50), "Confine Cursor"))
{
Cursor.lockState = CursorLockMode.Confined;
}
}
}
Голосование за лучший ответ
** Эгоист ** Знаток (496) 1 месяц назад
В вашем коде есть несколько проблем, из-за которых курсор не появляется при нажатии на клавишу F. Основная проблема заключается в том, что проверка нажатия клавиши F выполняется только в методе Start(), который вызывается один раз при запуске сцены. Чтобы это исправить, нужно переместить проверку нажатия клавиши F в метод Update().

Вот исправленный код:


using UnityEngine;

public class CursorLockExample : MonoBehaviour
{
void Start()
{
// Изначально блокируем курсор
Cursor.lockState = CursorLockMode.Locked;
}

void Update()
{
// Проверяем нажатие клавиши F
if (Input.GetKeyDown(KeyCode.F))
{
Cursor.lockState = CursorLockMode.None; // Отменяем блокировку курсора
}
}

void OnGUI()
{
// Кнопка для блокировки курсора
if (GUI.Button(new Rect(0, 0, 100, 50), "Lock Cursor"))
{
Cursor.lockState = CursorLockMode.Locked;
}

// Кнопка для ограничения курсора в пределах экрана
if (GUI.Button(new Rect(125, 0, 100, 50), "Confine Cursor"))
{
Cursor.lockState = CursorLockMode.Confined;
}
}
}





Метод Update(): Я добавил метод Update(), который вызывается каждый кадр. Теперь проверка нажатия клавиши F будет выполняться постоянно, и курсор будет разблокирован при нажатии.
GetKeyDown(): Используется Input.GetKeyDown(), чтобы отслеживать нажатие клавиши именно в момент нажатия, а не удерживание.

Теперь, при нажатии на клавишу F, курсор должен появляться, а кнопки будут продолжать функционировать. Попробуйте этот код, и дайте знать, если возникнут дополнительные вопросы!
Захар БогатыревУченик (49) 1 месяц назад
спасибо, но у меня почему то проявляется на секунду курсор и исчезает в середине экрана
Рустам Абдрашитов Мыслитель (9508) 1 месяц назад
 using UnityEngine; 

public class CursorLockExample : MonoBehaviour
{
void Update()
{
// Проверяем, нажата ли клавиша F
if (Input.GetKeyDown(KeyCode.F))
{
// Если курсор заблокирован, разблокируем его
if (Cursor.lockState == CursorLockMode.Locked)
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true; // Делаем курсор видимым
}
else
{
// В противном случае блокируем курсор
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false; // Скрываем курсор
}
}
}

void OnGUI()
{
// Кнопка для блокировки курсора
if (GUI.Button(new Rect(0, 0, 100, 50), "Lock Cursor"))
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false; // Скрываем курсор
}

// Кнопка для ограничения курсора в пределах экрана
if (GUI.Button(new Rect(125, 0, 100, 50), "Confine Cursor"))
{
Cursor.lockState = CursorLockMode.Confined;
Cursor.visible = true; // Делаем курсор видимым
}
}
}
Захар БогатыревУченик (49) 1 месяц назад
у меня только один вопрос почему у меня он только на милисикунду появляется и исчезает
Похожие вопросы