Как сделать постоянный минус при удерживании на кнопку?
|
|
gogogo3 | Дата: Пятница, 08 Мая 2015, 17:44 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| У меня возник вопрос, когда я нажимаю на кнопку, то у меня отнимается во float переменной -1. Но почему-то когда удерживаешь, то тоже снимается по -1-ому, а не до того, как ты отпустишь кнопку. К примеру: удерживаешь кнопку "V" 5 секунд, за эти 5 секунд отнялось примерно 15. Но у меня такого не происходит. Вот как у меня написано: if (Input.GetKey (KeyCode.V)) { gas -= 1; }
P.S. код на JS.
UнайTI iKS
Сообщение отредактировал gogogo3 - Понедельник, 11 Мая 2015, 10:57 |
|
| |
MANMANA | Дата: Пятница, 08 Мая 2015, 17:53 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| отнимаем при отпускании Код if (Input.GetKeyUp (KeyCode.V)) { gas -= 1; }
или отнимаем при нажатии Код if (Input.GetKeyDown (KeyCode.V)) { gas -= 1; }
если поставишь два эти кода друг за другом, то значение переменной уменьшится на 2 http://docs.unity3d.com/ScriptReference/Input.html
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
harmoxyne | Дата: Пятница, 08 Мая 2015, 17:53 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Было бы хорошо узнать, в каком месте этот код размещен.
|
|
| |
gogogo3 | Дата: Пятница, 08 Мая 2015, 17:55 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Цитата MANMANA ( ) отнимаем при отпускании Код if (Input.GetKeyUp (KeyCode.V)) { gas -= 1; }
или отнимаем при нажатии Код if (Input.GetKeyDown (KeyCode.V)) { gas -= 1; }
Уже делал так.Добавлено (08 мая 2015, 17:55) ---------------------------------------------
Цитата harmoxyne ( ) Было бы хорошо узнать, в каком месте этот код размещен. В теле Update
UнайTI iKS
|
|
| |
MANMANA | Дата: Пятница, 08 Мая 2015, 17:57 | Сообщение # 5 |
почти ветеран
Сейчас нет на сайте
| хм... недоразобрался, пардон. Запутанно пишешь :). как сказал harmoxyne, код в студиюДобавлено (08 мая 2015, 17:57) --------------------------------------------- нужно, чтобы отнималось -1 каждый кадр пока удерживается кнопка?
http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг VKонтакте 3Dbuffer
Последнее:
Новый раздел "Текстуры"
Как запатентовать, защитить техническое решение, игру, идею
|
|
| |
gogogo3 | Дата: Пятница, 08 Мая 2015, 18:00 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| var gas : float; var jumpSpeed : float = 8.0; private var moveDirection : Vector3 = Vector3.zero; function Start() { gas = 100; } function Update() { var controller : CharacterController = GetComponent(CharacterController); if (controller.isGrounded) { // We are grounded, so recalculate // move direction directly from axes moveDirection = Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); moveDirection = transform.TransformDirection(moveDirection); if(gas >= 1){ if (Input.GetKey (KeyCode.V)) { gas -= 1; moveDirection.y = jumpSpeed; } } } // Apply gravity moveDirection.y -= CharacterMotorJumping.baseHeight * Time.deltaTime; // Move the controller controller.Move(moveDirection * Time.deltaTime); }Добавлено (08 мая 2015, 18:00) ---------------------------------------------
Цитата MANMANA ( ) нужно, чтобы отнималось -1 каждый кадр пока удерживается кнопка? Да, именно так.
UнайTI iKS
|
|
| |
Kolyan | Дата: Пятница, 08 Мая 2015, 18:25 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Форматирование - не не слышал. Черт ногу сломит. Разделяй блоки, тебе же проще будет. По моему вся проблема в том, что controller.isGrounded != true. Перед первым if() поставь Debug.Log(controller.isGrounded); и узнаешь точно. Попробуй вот так получение контроллера оформить var controller : CharacterController = GetComponent.<CharacterController>();
Сообщение отредактировал Kolyan - Пятница, 08 Мая 2015, 18:30 |
|
| |
harmoxyne | Дата: Пятница, 08 Мая 2015, 18:26 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| Цитата gogogo3 ( ) if(gas >= 1){ if (Input.GetKey (KeyCode.V)) { Можно объединить в Код if(gas >= 1 && Input.GetKey(KeyCode.V)) Интереса ради - попробуй с другими кнопками.
|
|
| |
gogogo3 | Дата: Пятница, 08 Мая 2015, 18:34 | Сообщение # 9 |
частый гость
Сейчас нет на сайте
| Цитата Kolyan ( ) Форматирование - не не слышал. Черт ногу сломит. Разделяй блоки, тебе же проще будет. У самого они разделены, это сайт их "собирает".Добавлено (08 мая 2015, 18:34) --------------------------------------------- Решил проблему тем, что в if (controller.isGrounded), надо сделать так: if (controller.isGrounded != true), теперь всё нормально сработало.
UнайTI iKS
|
|
| |
Kolyan | Дата: Пятница, 08 Мая 2015, 18:36 | Сообщение # 10 |
был не раз
Сейчас нет на сайте
| Можно проще записать if (!controller.isGrounded)
Сообщение отредактировал Kolyan - Пятница, 08 Мая 2015, 18:37 |
|
| |