Движение кнопкой

Программирование на Юнити.

Движение кнопкой

Сообщение MrFraim 16 май 2017, 17:19

Имеется скрипт, когда нажимаешь на кнопку он идёт нажимаешь еще раз, он перестаёт идти.
Как сделать что бы когда ЗАЖИМАЕШЬ кнопку он шёл, отжимаешь переставал
Вот скрипт, отредактируйте пожалуйста :)
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Script : MonoBehaviour {
        public float speed = 3f;
        public int move = 0;

        // Use this for initialization
        void Start () {
                move = 0;
        }
       
        // Update is called once per frame
        void Update () {
                if(move == 1){
                        transform.Translate (-Vector3.right * speed * Time.deltaTime);
                }
                else if(move == 2){
                        transform.Translate (-Vector3.left * speed * Time.deltaTime);
                }
        }
        void OnGUI()
        {
                if (GUI.Button (new Rect (15, 15, 100, 50), "Right"))
                {
                        if(move != 1){
                                move = 1;
                        }else{
                                move = 0;
                        }
                }
                if (GUI.Button (new Rect (150, 15, 100, 50), "Left"))
                {
                        if(move != 2){
                                move = 2;
                        }else{
                                move = 0;
                        }
                }
        }
}
MrFraim
UNец
 
Сообщения: 12
Зарегистрирован: 10 май 2017, 18:50

Re: Движение кнопкой

Сообщение samana 16 май 2017, 20:53

Вы хотите именно через GUI это сделать? Просто есть ещё UI, он тоже хорош. Для вашего варианта можно сделать следующее:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Script : MonoBehaviour
{
    public float speed = 3f;
    public int move = 0;
   
    void Update()
    {
        if (move == 1) transform.Translate(-Vector3.right * speed * Time.deltaTime);
        else if (move == 2) transform.Translate(-Vector3.left * speed * Time.deltaTime);

    }
    void OnGUI()
    {
        Rect rightRect = new Rect(15, 15, 100, 50);     // прямоугольники для кнопок
        Rect leftRect = new Rect(150, 15, 100, 50);

        Event e = Event.current;    // ловим текущее событие
        if (e.type == EventType.MouseDown && e.button == 0) //если это событие нажатой ЛКМ
        {
            if (rightRect.Contains(e.mousePosition)) move = 1;  //если мышь над правым прямоугольником
            else if (leftRect.Contains(e.mousePosition)) move = 2; //если мышь над левым прямоугольником
        }

        if (e.type == EventType.MouseUp && e.button == 0) move = 0; //если событие отжатия ЛКМ

        GUI.Button(rightRect, "Right"); // просто рисуем кнопки
        GUI.Button(leftRect, "Left");
    }
}
 


Но я не знаю, как это будет работать на телефоне.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Движение кнопкой

Сообщение MrFraim 17 май 2017, 07:22

Спасибо, всё работпет!
MrFraim
UNец
 
Сообщения: 12
Зарегистрирован: 10 май 2017, 18:50


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14