Помощь по кнопкам в Unity
|
|
Voronin1337 | Дата: Четверг, 09 Марта 2017, 19:06 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Код using UnityEngine; using System.Collections;
public class Buttams : MonoBehaviour { public Sprite[] layer; public string[] Scene; public GameObject Car;
void OnMouseDown() { GetComponent<SpriteRenderer>().sprite = layer[1]; } void OnMouseUp() { GetComponent<SpriteRenderer>().sprite = layer[0]; } void OnMouseUpAsButton() { switch (gameObject.name) { case "Play": Application.LoadLevel(Scene[0]); break; case "right": Car.transform.Translate(new Vector3(-1,0,0)* Time.deltaTime); break; case "left": Car.transform.Translate(new Vector3(1, 0, 0) * Time.deltaTime); break; } }
} Что нужно сделать чтобы действия в операторе switch выполнялись пока кнопка зажата ?
|
|
| |
URGINSAN | Дата: Четверг, 09 Марта 2017, 19:53 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| Voronin1337, например, вместо switch воспользоваться if, + сделать bool флаг нажата ли клавиша или нет. Типа вот так:
Код bool mouseAct = false; void OnMouseDown() { mouseAct = true; } void OnMouseUp() { mouseAct = false; } И дальше в OnMouseUpAsButton() делай проверку на этот флаг.
Я на драйве
Сообщение отредактировал URGINSAN - Четверг, 09 Марта 2017, 19:54 |
|
| |
Voronin1337 | Дата: Четверг, 09 Марта 2017, 22:17 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Код {
public Sprite[] layer; private bool rox; public GameObject Car; void OnMouseDown() { GetComponent<SpriteRenderer>().sprite = layer[1]; rox = true; } void OnMouseUp() { GetComponent<SpriteRenderer>().sprite = layer[0]; rox = false; } void OnMouseUpAsButton() { if (rox == true) { Car.transform.Translate(new Vector3(1, 0, 0) * Time.deltaTime); } } } Сделал вот ток всё равно не работает
|
|
| |
URGINSAN | Дата: Четверг, 09 Марта 2017, 22:31 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| Цитата Voronin1337 ( ) void OnMouseUpAsButton() Эта строчка куда идет? Можешь описать подробнее свое управление?
Я на драйве
|
|
| |
Voronin1337 | Дата: Четверг, 09 Марта 2017, 22:44 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| http://s1.uploadpics.ru/images/WJ0-ytLbzM.png Эти две кнопки(которые на скрине) отвечают за движение машины в право в лева. я поменял скрин
Сообщение отредактировал Voronin1337 - Четверг, 09 Марта 2017, 22:55 |
|
| |
seaman | Дата: Четверг, 09 Марта 2017, 22:52 | Сообщение # 6 |
старожил
Сейчас нет на сайте
| 1. Как уже заметили - Ваш метод OnMouseUpAsButton никогда не будет вызван. 2. Если Вы спрашиваете о чем то - потрудитесь на скрине выделять именно тот объект, о котором спрашиваете. У Вас в скрипте объявлен массив layer. Что в нем? Судя по ошибка на скрине - ничего. Но лучше все же это показать.
Сообщение отредактировал seaman - Четверг, 09 Марта 2017, 22:53 |
|
| |
Voronin1337 | Дата: Четверг, 09 Марта 2017, 22:59 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Цитата seaman ( ) 1. Как уже заметили - Ваш метод OnMouseUpAsButton никогда не будет вызван.
Он вызывается после того как нажал и отпустил кнопку ,а не постоянно пока зажата кнопка
Сообщение отредактировал Voronin1337 - Четверг, 09 Марта 2017, 23:03 |
|
| |
URGINSAN | Дата: Пятница, 10 Марта 2017, 00:21 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| Voronin1337, реши проблему с ошибками в консоли сначала. Когда идут ошибки во время рантайма - остальной код 90% не будет работать.
Я на драйве
|
|
| |