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

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

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

Сообщение DimikYoo 08 апр 2014, 09:54

Подскажите, мультитач в Юнити ввели или нет? Хочу создать приложение, где нужно будет считывать одновременные касания экрана.
Использую Unity версии Pro.
Последний раз редактировалось DimikYoo 10 апр 2014, 19:08, всего редактировалось 1 раз.
DimikYoo
UNIт
 
Сообщения: 78
Зарегистрирован: 30 июн 2013, 18:44

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

Сообщение lawson 08 апр 2014, 10:15

http://unity3d.com/learn/tutorials/modu ... ouch-input
первый попавшийся ответ в гугле.
lawson
UNIверсал
 
Сообщения: 481
Зарегистрирован: 14 сен 2012, 21:20

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

Сообщение DimikYoo 08 апр 2014, 15:54

lawson писал(а):http://unity3d.com/learn/tutorials/modules/beginner/platform-specific/multitouch-input
первый попавшийся ответ в гугле.

Не совсем понятно. Создается массив касаний, а дальше что с ним делать?
DimikYoo
UNIт
 
Сообщения: 78
Зарегистрирован: 30 июн 2013, 18:44

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

Сообщение ASD 08 апр 2014, 16:30

Наверное пускать цикл по элементам массива?
SmartMove Games
ASD
UNIверсал
 
Сообщения: 400
Зарегистрирован: 14 дек 2012, 23:40
Откуда: Харьков
  • ICQ

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

Сообщение Simmilliar 08 апр 2014, 20:20

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

Синтаксис:
Используется csharp
Touch[] myTouches = Input.touches;
for(int i = 0; i < Input.touchCount; i++)
{
    //Что нужно делать с прикосновениями
}
 
Аватара пользователя
Simmilliar
Старожил
 
Сообщения: 883
Зарегистрирован: 09 авг 2013, 14:45

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

Сообщение DimikYoo 08 апр 2014, 21:04

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

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

Спасибо, буду пробовать :)
DimikYoo
UNIт
 
Сообщения: 78
Зарегистрирован: 30 июн 2013, 18:44

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

Сообщение DimikYoo 10 апр 2014, 18:12

Мне нужно, чтобы проигрывался звук при прикосновении к кнопке. Что я делаю не так?..
Синтаксис:
Используется 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'ов на экране с коллайдером.
DimikYoo
UNIт
 
Сообщения: 78
Зарегистрирован: 30 июн 2013, 18:44

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

Сообщение Simmilliar 10 апр 2014, 18:24

Может, дело в этом:
if(myTouches[i])
Аватара пользователя
Simmilliar
Старожил
 
Сообщения: 883
Зарегистрирован: 09 авг 2013, 14:45

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

Сообщение DimikYoo 10 апр 2014, 18:45

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;
                        }
        }
    }
DimikYoo
UNIт
 
Сообщения: 78
Зарегистрирован: 30 июн 2013, 18:44

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

Сообщение DimikYoo 10 апр 2014, 19:08

UPD: Всем большое "спасибо", разобрался сам. Сделал вот так http://wiki.unity3d.com/index.php?title=OnMouseDown
DimikYoo
UNIт
 
Сообщения: 78
Зарегистрирован: 30 июн 2013, 18:44

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

Сообщение ASD 10 апр 2014, 23:05

Что бы ты без нас делал ))) А вообще достаточно было использовать нечто типа
Синтаксис:
Используется csharp
for (int i=0; i<Input.touchCount; i++)
{
        Touch touch = Input.touches[i];
        if(touch.phase == TouchPhase.Began && yourButton.HitTest(touch.position))
        {
            ..........
        }
}
 
SmartMove Games
ASD
UNIверсал
 
Сообщения: 400
Зарегистрирован: 14 дек 2012, 23:40
Откуда: Харьков
  • ICQ

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

Сообщение DimikYoo 10 апр 2014, 23:47

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, я правильно понял?) И если такой скрипт навешать отдельно на каждую кнопку, то будет работать а-ля мультитач?
DimikYoo
UNIт
 
Сообщения: 78
Зарегистрирован: 30 июн 2013, 18:44

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

Сообщение Simmilliar 10 апр 2014, 23:55

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

Да. Только скрипт нужно вешать на один какой-то элемент, а потом уже в инспекторе задать GameObject или GUITexture кнопки в переменную yourButton.
Аватара пользователя
Simmilliar
Старожил
 
Сообщения: 883
Зарегистрирован: 09 авг 2013, 14:45

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

Сообщение DimikYoo 11 апр 2014, 00:21

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

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

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

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

Сообщение ASD 11 апр 2014, 08:08

Можно такой скрипт на каждую кнопку (тогда вместо yourButton будет this), можно в одном скрипте несколько кнопок. Мультитач работает. Но вообще смотря для чего нужны кнопки. Я использую такую конструкцию для простого ГУИ, в качестве yourButton - какая-либо GUITexture. А вот если надо делать реализацию к примеру управления машиной, где кнопки надо держать, и сразу несколько - там у меня другая конструкция, я определяю касания на области экрана, а не конкретно на какой-то объект. Тогда управление с мультитачем работает отлично
SmartMove Games
ASD
UNIверсал
 
Сообщения: 400
Зарегистрирован: 14 дек 2012, 23:40
Откуда: Харьков
  • ICQ

След.

Вернуться в Почемучка

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

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