Пятница, 22 Ноября 2024, 04:13

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Помощь по кнопкам в 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% не будет работать.

Я на драйве
  • Страница 1 из 1
  • 1
Поиск:

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