Страница 1 из 2

Multitouch при создании приложения на Android (РЕШЕНО)

СообщениеДобавлено: 08 апр 2014, 09:54
DimikYoo
Подскажите, мультитач в Юнити ввели или нет? Хочу создать приложение, где нужно будет считывать одновременные касания экрана.
Использую Unity версии Pro.

Re: Multitouch при создании приложения на Android

СообщениеДобавлено: 08 апр 2014, 10:15
lawson
http://unity3d.com/learn/tutorials/modu ... ouch-input
первый попавшийся ответ в гугле.

Re: Multitouch при создании приложения на Android

СообщениеДобавлено: 08 апр 2014, 15:54
DimikYoo
lawson писал(а):http://unity3d.com/learn/tutorials/modules/beginner/platform-specific/multitouch-input
первый попавшийся ответ в гугле.

Не совсем понятно. Создается массив касаний, а дальше что с ним делать?

Re: Multitouch при создании приложения на Android

СообщениеДобавлено: 08 апр 2014, 16:30
ASD
Наверное пускать цикл по элементам массива?

Re: Multitouch при создании приложения на Android

СообщениеДобавлено: 08 апр 2014, 20:20
Simmilliar
DimikYoo писал(а):Не совсем понятно. Создается массив касаний, а дальше что с ним делать?

Синтаксис:
Используется csharp
Touch[] myTouches = Input.touches;
for(int i = 0; i < Input.touchCount; i++)
{
    //Что нужно делать с прикосновениями
}
 

Re: Multitouch при создании приложения на Android

СообщениеДобавлено: 08 апр 2014, 21:04
DimikYoo
Simmilliar писал(а):
DimikYoo писал(а):Не совсем понятно. Создается массив касаний, а дальше что с ним делать?

Синтаксис:
Используется csharp
Touch[] myTouches = Input.touches;
for(int i = 0; i < Input.touchCount; i++)
{
    //Что нужно делать с прикосновениями
}
 

Спасибо, буду пробовать :)

Re: Multitouch при создании приложения на Android

СообщениеДобавлено: 10 апр 2014, 18:12
DimikYoo
Мне нужно, чтобы проигрывался звук при прикосновении к кнопке. Что я делаю не так?..
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class TouchTest : MonoBehaviour {
       
        public Texture on;
        public AudioClip test;
       
    void Update ()
    {
        Touch myTouch = Input.GetTouch(0);

        Touch[] myTouches = Input.touches;      //объявление переменной-массива
        for(int i = 0; i < Input.touchCount; i++)
        {
          if(myTouches[0]) {
                        audio.PlayOneShot (test);
                        renderer.material.mainTexture=on;
                        }
        }
    }
}

Кнопка - один из GameObject'ов на экране с коллайдером.

Re: Multitouch при создании приложения на Android

СообщениеДобавлено: 10 апр 2014, 18:24
Simmilliar
Может, дело в этом:
if(myTouches[i])

Re: Multitouch при создании приложения на Android

СообщениеДобавлено: 10 апр 2014, 18:45
DimikYoo
Simmilliar писал(а):Может, дело в этом:
if(myTouches[i])

Да, это я синтаксис забыл. Но проблема в другом: я нажимаю на экран, и программа считывает это как нажатие сразу на все точки экрана, а мне надо, чтобы экран был разделен на несколько областей, что ли... Ну, чтобы нажатие на отдельные кнопки считывались отдельно.
Используемый код (если честно, сам не понимаю, что скопировал, может, если кто-нибудь разъяснит написанное, я смогу сам устранить проблему)
Синтаксис:
Используется csharp
public Texture on;
        public AudioClip test;
       
    void Update ()
    {
        Touch myTouch = Input.GetTouch(0);

        Touch[] myTouches = Input.touches;      //объявление переменной-массива
        for(int i = 0; i < Input.touchCount; i++)
        {
          if(myTouch.phase == TouchPhase.Began) {
                        audio.PlayOneShot (test);
                        renderer.material.mainTexture=on;
                        }
        }
    }

Re: Multitouch при создании приложения на Android

СообщениеДобавлено: 10 апр 2014, 19:08
DimikYoo
UPD: Всем большое "спасибо", разобрался сам. Сделал вот так http://wiki.unity3d.com/index.php?title=OnMouseDown

Re: Multitouch при создании приложения на Android (РЕШЕНО)

СообщениеДобавлено: 10 апр 2014, 23:05
ASD
Что бы ты без нас делал ))) А вообще достаточно было использовать нечто типа
Синтаксис:
Используется csharp
for (int i=0; i<Input.touchCount; i++)
{
        Touch touch = Input.touches[i];
        if(touch.phase == TouchPhase.Began && yourButton.HitTest(touch.position))
        {
            ..........
        }
}
 

Re: Multitouch при создании приложения на Android (РЕШЕНО)

СообщениеДобавлено: 10 апр 2014, 23:47
DimikYoo
ASD писал(а):Что бы ты без нас делал ))) А вообще достаточно было использовать нечто типа
Синтаксис:
Используется csharp
for (int i=0; i<Input.touchCount; i++)
{
        Touch touch = Input.touches[i];
        if(touch.phase == TouchPhase.Began && yourButton.HitTest(touch.position))
        {
            ..........
        }
}
 

Так, Touch touch = Input.touches[i] - это задание еще одной локальной переменной, yourButton - переменная, на которую нужно повесить «кнопку»-GO, я правильно понял?) И если такой скрипт навешать отдельно на каждую кнопку, то будет работать а-ля мультитач?

Re: Multitouch при создании приложения на Android (РЕШЕНО)

СообщениеДобавлено: 10 апр 2014, 23:55
Simmilliar
DimikYoo писал(а):Так, Touch touch = Input.touches[i] - это задание еще одной локальной переменной, yourButton - переменная, на которую нужно повесить «кнопку»-GO, я правильно понял?) И если такой скрипт навешать отдельно на каждую кнопку, то будет работать а-ля мультитач?

Да. Только скрипт нужно вешать на один какой-то элемент, а потом уже в инспекторе задать GameObject или GUITexture кнопки в переменную yourButton.

Re: Multitouch при создании приложения на Android (РЕШЕНО)

СообщениеДобавлено: 11 апр 2014, 00:21
DimikYoo
Simmilliar писал(а):
DimikYoo писал(а):Так, Touch touch = Input.touches[i] - это задание еще одной локальной переменной, yourButton - переменная, на которую нужно повесить «кнопку»-GO, я правильно понял?) И если такой скрипт навешать отдельно на каждую кнопку, то будет работать а-ля мультитач?

Да. Только скрипт нужно вешать на один какой-то элемент, а потом уже в инспекторе задать GameObject или GUITexture кнопки в переменную yourButton.

Я имел в виду, что у меня порядка 50 кнопок на сцене с одинаковыми функциями. В прошу раз я вешал на них копии скрипта (именно копии), в инспекторе задавал разные GO, всё работало без конфликтов.
В общем, надо будет попробовать ваш способ, он выглядит проще, чем адаптация OnMouseDown под тачскрины. А тему хорошо бы в полезности закрепить или в FAQ - вопросов про мультитач мало не бывает :)

Re: Multitouch при создании приложения на Android (РЕШЕНО)

СообщениеДобавлено: 11 апр 2014, 08:08
ASD
Можно такой скрипт на каждую кнопку (тогда вместо yourButton будет this), можно в одном скрипте несколько кнопок. Мультитач работает. Но вообще смотря для чего нужны кнопки. Я использую такую конструкцию для простого ГУИ, в качестве yourButton - какая-либо GUITexture. А вот если надо делать реализацию к примеру управления машиной, где кнопки надо держать, и сразу несколько - там у меня другая конструкция, я определяю касания на области экрана, а не конкретно на какой-то объект. Тогда управление с мультитачем работает отлично