Суббота, 15 Декабря 2018, 18:35

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как сделать постоянный минус при удерживании на кнопку? (Постоянный минус при удерживании кнопки[Решено])
Как сделать постоянный минус при удерживании на кнопку?
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) smile

Сообщение отредактировал Kolyan - Пятница, 08 Мая 2015, 18:37
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как сделать постоянный минус при удерживании на кнопку? (Постоянный минус при удерживании кнопки[Решено])
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2018 Рейтинг